Quantcast
Channel: そごうソフトウェア研究所
Viewing all 108 articles
Browse latest View live

iTextについてちょっと調べて見た

$
0
0

Javaのサーバーサイドで簡単な帳票を作成したいのだけれど、専用の製品を導入する程でもない。 ということで、手軽にPDFを作成できるライブラリを調査しました。

ネット上に情報が多そうなのはiText(http://itextpdf.com/)でした。

ライセンスについてのQiitaの記事が分かりやすかったです。 http://qiita.com/takudo/items/e2b37b659c9143db730c

CSSで改行の指定(page-break)もあるようなので、更にライトにやるなら、こっちかなぁ。 http://www.htmq.com/style/page-break-before.shtml


WebLogic 12c セットアップ手順メモ

$
0
0

準備

yum install ld-linux.so.2

プロダクトのインストール(コンソールモード)

http://docs.oracle.com/cd/E28613_01/doc.1211/b65933/console.htm

 chmod +x wls1211_linux32.bin 
 wls1211_linux32.bin -mode=console

ドメインの作成(コンソールモード)

http://docs.oracle.com/cd/E28613_01/web.1211/b65940/console_mode.htm

これをやってないとドメインの作成が終わらなかった。失敗したらdomains以下のファイルを削除して、再作成でOK。

export CONFIG_JVM_ARGS=-Djava.security.egd=file:/dev/./urandom

コンソールモードで起動

config.sh -mode=console

ドメイン作成後の準備

boot.propertiesの作成

これを作成しないと、起動時にユーザーとパスワードを聞かれる

{WLS}/user_projects/domains/mydomain/servers/myserver/security/boot.properties

いつも間違ってdomainの直ぐ下のsecurityフォルダにboot.propertiesファイルを置いて、起動しねぇ!となる。

12.1.1は必須のパッチがありそう。 http://www.davidghedini.com/pg/entry/oracle_web_logic"Before investing any time in this, despite a fresh download you will need,.... a patch: (p13606167_12110_Generic.zip). "

あと、JDKのバージョンが6系だと設定の保存で失敗することがあった。7系にあげることで解消。

欲しいClassがどのjarファイルに入っているか探す

$
0
0

Enterprise Javaをやっていると必ずはまるJar地獄。 自分が使っているライブラリを、アプリケーションサーバーや、3rdパーティーのライブラリが使っていて、ClassNotFoundや、そんなメソッドないとか、そのメソッドはPublicじゃないとか訳分かんなくなるやつ。

そんな時はエラーになっているClassがクラスパスのどこにあるか探して、複数ある場合はどっちを使うべきかを設定してやればいいし、無ければクラスパスに追加してやればOK。

Classがどのjarに含まれているか調べないといけないけど、Googleで調べても有名で皆がはまったことのあるやつしか出てこない。ですので、作りました。5年くらい前に。最近もこれに助けられた。

サーバサイドJavaのトラブル分析(APサーバースローダウン)

$
0
0

ここ1ヶ月くらいサーバーサイドのトラブル解決をよくやっていて、Javaのサーバーアプリのトラブルの分析のやり方を書いていきます。

先日発生したのはAPサーバーのスローダウンでした。ここでの原因は特殊なものだと思うので、その理由よりは分析のプロセスの方が大事かなと思っています。

チェックした内容

  • OSリソースの使用状況

sarを見ると該当の時間でuserのCPU使用率が90%を超えていました。 ioなどに問題はないので、アプリ層に問題がありそうです。

FullGCが頻発していれば、CPUを使い切っていてスローダウンが発生するが、GCは大したことなかった。

  • topコマンドでプロセスごとのCPU使用量確認

APサーバー(WebLogic Server)のJavaプロセスが使っていることを確認。 でもどのサーバーアプリかは分からない。

  • アプリログ

特にエラーはない。ただし、処理開始・終了のログから処理速度が遅いことは確認

該当の時間にBroken pipeのエラーログが大量にでていた。

Caused By: javax.xml.stream.XMLStreamException: java.net.SocketException: Broken pipe

ただし、Broken pipeが発生するのはネットワークが正常のステップで切断されていない場合(例えば、通信経路にあるFirewallがタイムアウトで接続を切っていたり、クライアントアプリがタイムアウトで接続を閉じた場合など)なので本当の理由は別にあるはずです。

エラーの原因

WebLogic Serverのログをさらにさかのぼって確認すると次のようなログがでていました。

Error Log in case of JDBC Trace Log (MS SQL Server ...

「[STUCK] ExecuteThread: '11' for queue: 'weblogic.kernel.Default (self-tuning)'は"600"秒間ビジー状態になっています。これは、構成された時間(StuckThreadMaxTime)"600"秒を超えています。」というのはWebLogic Serverがあるスレッドが設定された時間(デフォルト600秒)の間、処理がスタックしていればスタック状態と見なすという挙動です。 スタック状態と見なした後は設定に依ってWebLogic Serverを再起動したりをすることができます。

スタックトレースを見ると「com.microsoft.sqlserver.jdbc.SQLServerResultSet」が「java.util.logging.Logger」を使っているところばかりです。 実はWebLogic Server、SQL Server間でエラーが以前発生していたので分析のためのJDBC Traceログを仕掛けていたのですが、その設定が中途半端に残っていました。実際のログは出力されていないが、出力するための設定ファイルを毎回見に行くという状態になっていました。

そのため、io負荷が異常に高ければ、ログ出力を疑ったと思うのですが、実際はioは問題になっておらず、CPUを使い切っているという症状となっていました。

重要なこと

分析に必要な情報がでていること

問題の再現手順が分からないことや、本番環境でしか発生しないなど発生させるのが難しい場合があります。 予め問題の分析に必要な情報が収集されていることが重要です。 設定面で言えば、GCログが出力されるようにセットしていることや、OSやミドルウェアのリソース使用状況が記録されている必要があります。

アプリケーションの設計では、適切なログが出力されるようになっていることも重要です。 エラーのスタックトレースが出力されていて、エラーの箇所が特定できること。 スローダウンが発生している際に、全ての処理が遅いのか、特定のAPIのみかなどが分かること。(そもそもサーバー側の処理時間が分かること)

根気よく効率良く情報を読むこと

まず問題を報告してくれた人に正確な情報を聞くこと。 問題が発生した日時、問題が発生する条件・手順。 後でログを詳しく見る際に、問題が発生した日時が分からないと作業量が膨大です。

自分はまず、関連するログをgrepで「FATAL」、「ERROR」、「Exception」などでざっと検索をかけます。 (プロジェクト終盤のテストのフェーズであれば、エラーの報告の有無に関わらず、毎日ログを検索して想定外のエラーが発生していないか確認します。本来、監視の対象にならないようなログがログレベルを間違って出力されているのもここで確認できます)

それで該当の時間帯にエラーのログが出力されていれば、そこから始めます。 ポイントとして、その後のログを見ていくのでは無く、時系列をさかのぼってログを見ていきます。 もっと前の時間に同じ、または別のエラーが発生していないかを確認します。 これはユーザーに見えているエラーの原因となるエラーがもっと前に発生していることがあるからです。

この例の場合、ユーザーから報告のあった時間にはBroken pipeのエラーがありますが、 もっと前のログを見ると、java.util.Logginのエラーがでています。

今回は問題になっていませんでしたが、作っているアプリの中に問題があった場合はGCログや、スレッドダンプの中身を詳細に見ていく必要があるので、適切なViewerやWebLogic Serverの場合、JRockit Mission Controlなどのツールを使えるようにしておきたいところです。

JBoss ASのデプロイプロセスを眺めた

$
0
0

WebLogic Serverの会社にいたので、JBossは全然触ったことがなかったのですが、最近、使ってます。今日は、デプロイのプロセスを眺めていたので、メモしておきます。

デプロイ

デプロイはこのパスにwarファイルなどを置くことで簡単にできます。 {JBOSS_HOME}/standalone/deployments/

その時、置いたwarファイルに対して、isdeployingというファイルができる。

AppPot_1.1.4_3_jboss.war
AppPot_1.1.4_3_jboss.war.isdeploying

しばらくまってると、deployedファイルになり、デプロイ完了。ファイル名で分かるというのはシンプルで面白いやり方ですね。

AppPot_1.1.4_3_jboss.war
AppPot_1.1.4_3_jboss.war.deployed 

アンデプロイ

アンデプロイするときは、deployedファイルをundeployという名前に変えるだけ。 $ mv AppPot_1.1.4_2_jboss.war.deployed AppPot_1.1.4_2_jboss.war.undeploy

そうすると、undeployに加えて、undeployedファイルができて、実際にWebアプリのURLにアクセスしてみると404エラーが返ってくる

-rw-r--r--  1 ncdc        ncdc        13887481  6月  5 08:54 2014 AppPot_1.1.4_2_jboss.war
-rw-rw-r--  1 jboss       jboss             24  6月  5 08:54 2014 AppPot_1.1.4_2_jboss.war.undeploy
-rw-rw-r--  1 jboss       jboss             24  6月  5 10:08 2014 AppPot_1.1.4_2_jboss.war.undeployed

ITmediaのセミナーでの成田空港さんの事例

$
0
0

ITmediaさんのセミナーで、企業でのモバイルアプリの取り組みの事例などをお話しさせてもらいました。

そちらの内容は、別途、公開しますが、今日は同じセミナーで成田空港さんが事例を紹介されていましたので、Twitterの内容からまとめます。

元々はカウンターではNotesを使ってご案内ができていたが、後述の巡回案内ではNotesにアクセスできないという情報の差が課題だったそうです。Notesをモバイルで持ち出すというのは面白いですね。需要ありそう。

これは、いつもモバイルならではの使い易いUIにしましょうと、提案することが多いので、そうなんだ!と思いました。

これ、理想。

これは自分のセミナーでも同じメッセージです。 小さく、素早く始めて、利用状況を見ながら、改善していく。

iBeacon面白そうですね!

Mule 3.5のセットアップとサンプルの実行

$
0
0

会社の方で公式ドキュメントして書くのだけど、ひとまずこちらに書いてみます。

目標は、取りあえずインストールして、実行してみるところまで。

インストール

使用可能な環境はここでチェック。OSはMuleがサポートしているJDKがサポートしていればOKっぽい。

http://www.mulesoft.org/documentation/display/current/Hardware+and+Software+Requirements

どんな構成にするか

デプロイモードを選択する。

http://www.mulesoft.org/documentation/display/current/Deployment+Scenarios

ここでいうデプロイメントとは、Mule自体の配置のこと。Mule上で動作するモジュールのデプロイメントではない。

MuleはAPサーバー上でも動かすことができるけど、基本はスタンドアローンでOK。

Mule Management Consoleって使うの?

http://www.mulesoft.org/documentation/display/current/Mule+Management+Console

いろいろな管理機能が提供される。Enterprise Editionが必要。

インストールの手順はこれの「Mule Community Runtime」のタブに従ってやればOK。基本、スタンドアローン構成ならZipを解凍するだけ。

http://www.mulesoft.org/documentation/display/current/Downloading+and+Launching+Mule+ESB+-+hid

  1. Javaセットアップ Javaをセットアップして、JAVA_HOME設定

export JAVA_HOME=/usr/java/jdk1.7.0_60/

  1. Muleセットアップ 解凍するだけ。まじ簡単。

bin/muleを実行で起動。終了するときはCtlr+C。

起動停止

$MULE_HOME\bin\mule.bat start|stop

起動オプションなんかは下記にまとまっている。

http://www.mulesoft.org/documentation/display/current/Starting+and+Stopping+Mule+ESB

自分で作ったモジュールを動かしてみよう

Anypont Studioを入れるとSampleが一緒に付いてくるから、それを実行してみましょう。

f:id:begirama:20140627084110p:plain

スタートページのOpen Sampleでサンプルの一覧が見られる。

f:id:begirama:20140627084119p:plain

まあ、最初はHelloWorldだろうと。

f:id:begirama:20140627084123p:plain

フロー定義の見た目はこんな感じ。 HTTPでリッスンして、文字列を返すだけのフロー。

取りあえず試すだけなら、Anypont Studioの中に埋め込みMuleが入っているのでプロジェクトを右クリックして、「Run AS->Mule Application」でOK。

サーバー上のMuleへのデプロイは上記のURLの「Deploy on a Mule Enterprise Server」の通りにやればOK。

Anypont StudioでExportする

f:id:begirama:20140627084441p:plain

f:id:begirama:20140627084448p:plain

f:id:begirama:20140627084455p:plain

Muleへのデプロイ

Mule HOMEのappsフォルダにzipを置くだけ。 Muleがポーリングをしていて、しばらくするとzipが解凍されます。

[sogo@localhost mule-standalone-3.5.0]$ cd apps/
[sogo@localhost apps]$ ls
default  default-anchor.txt

appsフォルダにエクスポートしたhello-world.zipを置くと・・・・

[sogo@localhost apps]$ cp ~/hello-world.zip .
[sogo@localhost apps]$ ls
default  default-anchor.txt  hello-world.zip

しばらくするとzipが展開されてデプロイされている。

[sogo@localhost apps]$ ls
default  default-anchor.txt  hello-world  hello-world-anchor.txt

Muleのデプロイログ

同じタイミングでMule側のログには、サンプルアプリが置かれたことを検知して、インストールして起動した旨のログがでます。

INFO  2014-06-26 21:26:12,950 [Mule.app.deployer.monitor.1.thread.1] org.mule.module.launcher.ArtifactArchiveInstaller: Exploding a Mule artifact archive: file:/home/sogo/mule/mule-standalone-3.5.0/apps/hello-world.zip
INFO  2014-06-26 21:26:13,008 [Mule.app.deployer.monitor.1.thread.1] org.mule.module.launcher.application.DefaultMuleApplication: 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ New app 'hello-world'                                    +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
INFO  2014-06-26 21:26:13,009 [Mule.app.deployer.monitor.1.thread.1] org.mule.module.launcher.log4j.ArtifactAwareRepositorySelector: Found logging config for application 'hello-world' at 'file:/home/sogo/mule/mule-standalone-3.5.0/conf/log4j.properties'
INFO  2014-06-26 21:26:15,796 [Mule.app.deployer.monitor.1.thread.1] org.mule.module.launcher.MuleDeploymentService: 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Started app 'hello-world'                                +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

いやー簡単ですね。

Mac OSXへのGradleのセットアップ

$
0
0

完全にメモです。

Android Annotationsが使いたかっただけなんだけど、ついでにいろいろ整備する。

Android Annotationsを使うためにGradleを入れたい。GradleをセットアップするためにHomebrewを入れたい。Homebrewは前から気になってたけど、入れてなかったのでついでに入れる。

こちらを参考にさせてていただきつつ、セットアップ。 eclipseでgradleを使うための環境構築 - mi_kami's diary

Rubyが必要らしい。入ってる。

sogo$ ruby -v
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin13]

公式サイトによると、これで一発で入れられるみたい。パスワードを途中で1回入れるだけでセットアップ完了。

    sogo$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    sogo$ brew -v
    Homebrew 0.9.5

このままGradleをインストール

    sogo$ brew install gradle

    ・・・・

    ==> Downloading https://downloads.gradle.org/distributions/gradle-2.1-bin.zip
    ######################################################################## 100.0%
    🍺  /usr/local/Cellar/gradle/2.1: 149 files, 44M, built in 36 seconds

セットアップ完了。

sogo$ /usr/local/Cellar/gradle/2.1/bin/gradle -v

------------------------------------------------------------
Gradle 2.1
------------------------------------------------------------

Build time:   2014-09-08 10:40:39 UTC
Build number: none
Revision:     e6cf70745ac11fa943e19294d19a2c527a669a53

Groovy:       2.3.6
Ant:          Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM:          1.8.0 (Oracle Corporation 25.0-b70)
OS:           Mac OS X 10.9.5 x86_64

Mac OSXでDocker(インストール編)

$
0
0

公式サイト

Mac OS X - Docker Documentation

インストール

ダウンロードしたBoot2Docker-1.4.1.pkgを開くと、2ステップでboot2dockerツールのインストールは完了します。

f:id:begirama:20141222082724p:plain

f:id:begirama:20141222082730p:plain

ここまで5分。後は環境設定などをやっていきます。

初期化

boot2docker initで初期化を行います。公開鍵方式の鍵ペアを作成されました。

rsogo$ boot2docker init
Latest release for boot2docker/boot2docker is v1.4.1
Downloading boot2docker ISO image...
Success: downloaded     https://github.com/boot2docker/boot2docker/releases/download/v1.4.1/boot2docker.iso
to /Users/rsogo/.boot2docker/boot2docker.iso
Generating public/private rsa key pair.
Your identification has been saved in /Users/rsogo/.ssh/id_boot2docker.
Your public key has been saved in /Users/rsogo/.ssh/id_boot2docker.pub.

起動

Docker daemonを起動します。

rsogo$ boot2docker start
Waiting for VM and Docker daemon to start...
........................ooooooooooooooooooo
Started.
Writing /Users/rsogo/.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/rsogo/.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/rsogo/.boot2docker/certs/boot2docker-vm/key.pem

To connect the Docker client to the Docker daemon, please set:
    export DOCKER_HOST=tcp://192.168.59.103:2376
    export DOCKER_CERT_PATH=/Users/rsogo/.boot2docker/certs/boot2docker-vm
    export DOCKER_TLS_VERIFY=1

環境変数等の設定

$(boot2docker shellinit)を($や()もそのまま)実行して、環境変数などをセットします。環境変数を直接.bashrcなどに書くのではなく、このコマンドが実行されるように設定するのが推奨されています。

rsogo$ $(boot2docker shellinit)
Writing /Users/rsogo/.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/rsogo/.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/rsogo/.boot2docker/certs/boot2docker-vm/key.pem

サンプルの実行

ここまでで準備はできたみたいなので、hello-worldというサンプルがあるのでそれを実行してみます。

rsogo$ docker run hello-world
Unable to find image 'hello-world:latest' locally
hello-world:latest: The image you are pulling has been verified
511136ea3c5a: Pull complete 
7fa0dcdc88de: Pull complete 
ef872312fe1b: Pull complete 
Status: Downloaded newer image for hello-world:latest
Hello from Docker.
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (Assuming it was not already locally available.)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

For more examples and ideas, visit:
 http://docs.docker.com/userguide/

出力された内容を見ると、ローカルにないから、hello-worldのイメージをDocker Hubからダウンロードしています。 その後、"Hello from Docker"という文字列が表示されました。

このエラーが出るときは環境変数の初期化ができていない

rsogo$ docker run hello-world
FATA[0000] Post http:///var/run/docker.sock/v1.16/containers/create: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS? 

DockerでコンテナにJavaを入れるまで

$
0
0

年末にDockerを入れて、サンプルを実行してみました。

Mac OSXでDocker(インストール編) - そごうソフトウェア研究所

冬休み中に試験環境をDockerで準備することが目標です。

dotinstallを見ながら色々遊んでいましたが、実際の試験環境の構築を始めようと思います。今日はCentOS上にJava環境を構築します。

docker pullでCentOSのイメージを取得

rsogo$ docker pull centos
centos:latest: The image you are pulling has been verified
5b12ef8fd570: Pull complete 
34943839435d: Pull complete 
511136ea3c5a: Already exists 
Status: Downloaded newer image for centos:latest

イメージの確認

rsogo$ docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
rsogo/sshd           latest              296067ca835f        6 minutes ago       625.8 MB
centos               6                   510cf09a7986        5 days ago          202.6 MB
centos               latest              8efe422e6104        5 days ago          210 MB
rsogo/jboss          latest              67acbf60269a        8 days ago          855.2 MB

この記事では、centosのlatestを使用しているけれど、現時点で最新はCentOS 7で、テスト環境としては6が欲しかったので、実際のテスト環境はcentos:6でやっている。

Dockerfileの作成

何度でも同じイメージが作成できるように環境の準備はDockerfileで行います。

FROM centos
MAINTAINER Ryohei Sogo

# ビルド時に実行
RUN yum install -y java-1.7.0-openjdk
RUN yum install -y java-1.7.0-openjdk-devel

# 起動時に実行
CMD ["java", "-version"]

このDockerfileは次の内容を書いています。

  • centosイメージを基に作成する
  • ビルド時にjava-1.7.0-openjdkと、 java-1.7.0-openjdk-develをyumコマンドでインストールするよう
  • 実行時にはjava -versionでインストールされたjavaのバージョンを出力する

ビルドの実行

docker buildコマンドでビルドを行います。 ここではrsogo/javaというタグ名を付けています。

rsogo$ docker build -t rsogo/java .
Sending build context to Docker daemon 3.072 kB
Sending build context to Docker daemon 
Step 0 : FROM centos
 ---> 34943839435d
Step 1 : MAINTAINER Ryohei Sogo
 ---> Using cache
 ---> fa1f439f448f
Step 2 : RUN yum install -y java-1.7.0-openjdk
 ---> Using cache
 ---> 3841ca600101
Step 3 : RUN yum install -y java-1.7.0-openjdk-devel
 ---> Using cache
 ---> bd0a1d4c9937
Step 4 : CMD java -version
 ---> Using cache
 ---> 3adf3b598444
Successfully built 3adf3b598444

このログを取る前に何度かビルドを行っているので、Using cacheと出力されているとおり、Docker内のキャッシュを使ってビルドを行っているようです。 初回は関連パッケージの取得とインストールが行われていました。

実行

docker runコマンドで実行します。

rsogo$ docker run rsogo/java
java version "1.7.0_71"
OpenJDK Runtime Environment (rhel-2.5.3.1.el7_0-x86_64 u71-b14)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)

DockerfileのCMDで記載したとおり、java -versionが実行され、インストールが成功していることが確認できます。

ps -lで確認すると、実行が終わったプロセスは終了状態になっています。

rsogo$ docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
980ab9c8b558        rsogo/java:latest   "java -version"     18 minutes ago      Exited (0) 18 minutes ago                       naughty_elion       

次はJBossをインストールします。 WebLogicyumでインストールできればいいのに。。。

OSXのboot2dockerでのIPアドレス確認ではまった

$
0
0

AnsibleからからDocker上のコンテナにsshでアクセスしたいだけなのにえらい時間がかかった。 結論から言うと'boot2docker ip'でOK。

  • 使用例

      $ boot2docker ip
      192.168.59.103
    

はまった経緯は、いろんなDockerのネットワーク周りのブログを見るとdocker0というネットワークインターフェイスができるよ、と書いてあるがifconfigしてもでてこない。

docker inspectでコンテナの情報が表示され、その中のIPアドレスでアクセスできるんだろうと思っていたけど、できない。

 docker inspect --format ' {{ .NetworkSettings.IPAddress }} ' test01
172.17.0.71

$ telnet 172.17.0.71 22
Trying 172.17.0.71...
telnet: connect to address 172.17.0.71: Operation timed out
telnet: Unable to connect to remote host

'boot2docker ip'を使ってみる。

$ boot2docker ip
192.168.59.103

$ telnet 192.168.59.103 22
Trying 192.168.59.103...
Connected to 192.168.59.103.
Escape character is '^]'.
SSH-2.0-OpenSSH_6.0
^C

OK。ちなみにこのIPアドレスの特定の仕方は下記のOSX用のインストールのマニュアルに記載されていた。ブログ等を見るのも良いけど、トラブった時は一次情報を参照せよという良い例。

https://docs.docker.com/installation/mac/

Docker上でのJBossの構築 on OSX

$
0
0

これまでOSX(Yosemite 10.10.1)で下記の実験を行いました。

Mac OSXでDocker(インストール編) - そごうソフトウェア研究所

DockerでコンテナにJavaを入れるまで - そごうソフトウェア研究所

今回はJBossを入れて動かすところまでやっていきたいと思います。

Dockerfile

# Dockerfile
FROM centos:6

MAINTAINER Ryohei Sogo

# install package
RUN yum update -y

RUN yum install -y java-1.7.0-openjdk
RUN yum install -y java-1.7.0-openjdk-devel
RUN yum install -y wget
RUN yum install -y tar

# JBoss
ADD ./files/jboss-as-7.1.1.Final.tar.gz /opt
# なぜかADDしただけで解凍されている
# RUN tar -zxf /var/tmp/jboss-as-7.1.1.Final.tar.gz -C /opt
ADD ./files/standalone.xml /opt/jboss-as-7.1.1.Final/standalone/configuration/

# Create user
RUN useradd jboss
RUN chown -R jboss /opt/jboss-as-7.1.1.Final

# JBoss
EXPOSE 9080

Dockerfileの内容としては、次のような感じです。

  1. 事前にダウンロードしておいたjboss-as-7.1.1をADDでイメージに追加する
  2. 設定ファイルを変更する必要があるので、standalone.xmlもADDでイメージに追加する
  3. JBoss実行用のjbossユーザーを作成し、jboss-as-7.1.1の所有者をjbossユーザーに変える
  4. 9080ポートをEXPOSEで公開(standalone.xmlの中で9080ポートを使用するように指定している)

standalone.xmlも晒しておきます。 standalone.xml

なんでか、ADDしただけでtar.gzファイルが解凍されてて、確認しないといけないです。 ADD ./files/jboss-as-7.1.1.Final.tar.gz /opt

コンテナの起動

コンテナを起動します

あとでデーモンモードで起動させるようにするけど、取りあえず今は'-t -i'オプションを指定して、インタラクティブモードでコンテナを起動します。

$ docker run -t -i -P rsogo/apppot_runtime /bin/bash
[root@fbf427c7d0a4 /]# 

コンテナにはいれましたので、jbossユーザーになって、JBossを起動させます。

[root@fbf427c7d0a4 /]# su jboss
[jboss@fbf427c7d0a4 /]$ /opt/jboss-as-7.1.1.Final/bin/standalone.sh 
=========================================================================

  JBoss Bootstrap Environment

  JBOSS_HOME: /opt/jboss-as-7.1.1.Final

  JAVA: java

  JAVA_OPTS:  -server -XX:+UseCompressedOops -XX:+TieredCompilation -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Djboss.server.default.config=standalone.xml

=========================================================================

ホスト側でコンテナの状況を確認します。

起動していますね。コンテナでEXPOSEした9080ポートがホスト側の49158ポートに割り当てられていることも確認できます。

$ docker  ps
CONTAINER ID        IMAGE                         COMMAND             CREATED             STATUS              PORTS                                                                     NAMES
fbf427c7d0a4        rsogo/apppot_runtime:latest   "/bin/bash"         42 seconds ago      Up 40 seconds       0.0.0.0:49155->9080/tcp   pensive_lovelace  

確認

アドレスの確認

$ boot2docker ip
192.168.59.103

実際にアクセスします。 URLはboot2docker ipで確認したIPアドレスと、docker psで確認した際に9080がマッピングされているポートです。 今回の例だとhttp://192.168.59.103:49155です。

f:id:begirama:20150128100335p:plain

OKですね。

X11 ForwardingとOSX、Windowsからのリモート接続の話し

$
0
0

普段、X11はあまり使いませんが、今回、Oracle Databaseをサーバーにセットアップする必要があったので、OUIのために環境を用意しました。

環境は、社外のデータセンターのサーバーで、自宅から接続するため、SSHでトンネリングして、X11を使う必要がありました。

f:id:begirama:20150301225021p:plain

やりかたは複数

  1. CygwinX(Windows)やXQuartz(OSX)でSSHの-Xオプションを使う
  2. CygwinXやXmingのようなX ServerとPuttyや、TeraTermのようなX11フォーワーディングの設定ができるSSHクライアントを組み合わせる

サーバー側の設定

X11 Forwardingの設定が有効になっているか確認。

netstatで確認すると、リモートサーバー側で6000+オフセットの値のポートがリッスンされています。下の例だと、オフセットが10で設定されている。

$ netstat -tan
Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address               Foreign Address             State    
tcp        0      0 0.0.0.0:6010                0.0.0.0:*                   LISTEN  

DISPLAY変数は設定しなくても、自動で設定されます。

$ env | grep DISPLAY
DISPLAY={Remote Server}:10.0

仕組みとしては、リモートサーバー側のDISPLAYで受けて、SSH経由でローカルPCのDIPLAYに転送してくれるようです。

次、クライアント側の設定です

1. CygwinX(Windows)やXQuartz(OSX)でSSHの-Xオプションを指定する

ssh -X -v {User}@{Remote Server}

-Xを付けるとForwardingが有効となります。 -vを付けることで、詳細なメッセージがでるため、上手く利用できない場合は、-vを付けてエラーの内容を見ていきます。

この状態で、Xが必要なプログラムを実行すると、ウィンドウが立ち上がります。

もともとこのやり方で、OSX環境でやろうとしていました。 が、問題がありました。この方法でOracle DBのOUIを実行した場合、ボタンなどのUIコンポーネントを操作することができませんでした。xeyeなんかは普通に実行できたので、アプリケーションの作りによって相性がありそうです。

2. CygwinXやXmingのようなX ServerとPuttyや、TeraTermのようなX11フォーワーディングの設定ができるSSHクライアントを組み合わせる

さて、実際にはこのやり方でやりました。

Puttyや、TeraTermにはX11転送のための設定があります。それを有効にすればOKです。 Puttyや、TeraTerm上でXが必要なプログラムを実行するとローカルPC側のDIPLAYにそれぞれのターミナルソフトが転送してくれます。

それにしても、Oracle DBをセットアップする上で、インストーラーがGUIである必要はまったくないですよね。 ファイルを使ったサイレント・インストールも用意されているけど、GUIとできることが違うし。システム要件の事前チェックのスキップとか。

Linuxや、Redhatをセットアップするときのように、CUIインタラクティブに設定させてもらえると楽だなぁ。

参考させていただいたサイト

X11 Forwarding - なんなんなん行く?

Enterprise UX 2015 1日目

$
0
0

5月13日から15日までEnterprise UX 2015がSan Antonioであって、参加してきました。 アメリカ中のいろんなところから参加者が集まってましたが、日本からはNCDCからの3名だけでした。

講師は有名な人が多くて、参考になることも多かったです。 ITmediaのブログの方に、感想などまとめますが、こちらにはログ的に生情報をばんばん上げていきます。

スケジュール

Schedule | Enterprise UX 2015

とにかく、海外のカンファレンスは朝が早い。朝食もランチも付いてる。 この日も7時にホテルのロビーに集合して、出発しました。

The Enterprise UX Journey: Lessons learned and the journey ahead

Catherine Courage

キーノート。 CitrixのCXのExecutive。

Customer Experienceの向上を、CEOの旗振りのもとやってますよーという話し。 UIやデザインの話しは1枚くらいしかなくて、会社全体での顧客体験についてでした。 製品も、マーケティングも、出荷も全部対象にしている。 すごく良かった。

f:id:begirama:20150513091636j:plain

終わった後に、参加者からUXとCXの違いはなにか?という質問があって、「会社全体のCXがあって、その中に購入者のUX、エンドユーザーのUXのようにペルソナごとのUXがあるんだよ。」という回答でした。

Insight Types That Influence Enterprise Decision Makers

Christian Rohrer

f:id:begirama:20150513102204j:plain

Intel Securityで、ソフトウェアのUXを担当している。 マカフィーってIntelに買収されたんですね。

SecurityとすばらしいUser Experienceは接点少ないよ、と自虐ネタ。

企業向けのソフトウェアの場合、UXの対象はエンドユーザーだけではなくて、ソフトウェアの購入のキーマンや、システム管理者も考えないと行けない。

UX Researchは沢山あって、対象に合わせてどのメソッドを使うかは選択すること。 When to Use Which User-Experience Research Methodswww.nngroup.com

Data Science and Design: A Tale of Two

Chris Chapo

データサイエンスと、デザインの関係について。

f:id:begirama:20150513105132j:plain

Emotion Economy: Ethnography as Corporate Strategy

Kelly Goto

f:id:begirama:20150513111653j:plain

The Architecture of Understanding

Peter Morville

オライリーのIAの本を書いている人。

f:id:begirama:20150513135226j:plain

  • 資料

Next Generation Design Systems

David Cronin

GEの取り組み。 Design Systemということで、GEで使用するデザインのマテリアルや、部品をリポジトリを作っている。検索したけど、公開してないのかなー。

部品にはPSDもあれば、CSSもある。

個人的に参考になった初日No1の内容。

Enterprise UX 2015 2日目

$
0
0

Lean Engineering: Principles for Enabling Build/Measure/Learn in the Enterprise

Bill Scott

Paypalの人。 Lean Engineeringという開発チームが学習していくプロセスを紹介してました。

これは自社でも活かせそう。

How to Coach Enterprise Experimentation

Alissa Briggs

Lean Experienceというのは知らなかったです。いろいろ方法論が紹介されましたが、下記がさくっとまとまっていました。 Top 5 Lean Startup Experiment Examples

Innovation Studios: the Engines of Enterprise

Jeff Gothelf

LEAN UXの著者。 企業の中でイノベーションを起こすときにどうするか、という話し。

ハッカソンは楽しいけど、一時的なものでしかないよ。

会社横断の取り組みとして、Adobe Kickboxが引用されていました。

どれも難しいけど、Innovation Studioがまだましかな、と。

A Consistent Culture of Design

Phil Gilbert

IBM Design: design in motionの偉い人。

IBM Design Languageというのを作っていて、Design Thinkingのフレームワークや、フォントサイズやカラーパレットなどのリソース、サンプルが公開されています。 IBM Design Languagewww.ibm.com

Case Study: Citrix and Corporate Change

Julie Baher

Citrixの会社の変革の話し。初日のキーノートの細かいストーリー。

Qualitative Approaches and Enterprise Outcomes

Nathan Shedroff

そして、このHR。強そう。

Liminal Thinking: Sense-making for systems in large organizations

Dave Gray


Enterprise UX 2015 その他

$
0
0

Enterprise UXは今年が初回だったのですが、Texas州のSan Antonioという町で開催されました。 東京からはHouston経由で行きました。US中部時間で日本との時差はー14時間。

テキサスが独立国だったころ、メキシコからの攻撃を守り切ったアラモ砦というのが有名で、アメリカの中ではメジャーな観光地のようです。 f:id:begirama:20150513175657j:plainf:id:begirama:20150513181033j:plainf:id:begirama:20150513181933j:plain

f:id:begirama:20150513122828j:plain初日のランチ。なんで、緑茶がシトラスと砂糖味なんでしょうね。

Mule ESB 3.6起動

$
0
0

Mule ESB 3.6をしばらく触ってみようと思います。 環境はOSX 10.10.4です。

Mule ESB 3.6ダウンロード

今回はMule Community Editionでできることを調査しようと思います。 でもマニュアルにあるMule CEのダウンロードのリンクから移動しても、このEnterprise版のダウンロードページに飛ばされてしまいます。要確認だけど、取りあえず、こちらに含まれるStandaloneだけを使います。

Download Mule ESB Enterprise | MuleSoft

Muleの起動

mmc-distribution-mule-console-bundle-3.6.1.zipを解凍します。

MMCなども入っていますが、Runtimeモジュールのbinフォルダに移動します。

$ cd mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/bin

起動コマンドを実行します。 $ ./mule

起動ログ

いろんなソフトウェアをやっているとログは読み物だなと、思います。 ログを根気よく読むとソフトウェアが何をやっているのかが分かる。

$ ./mule 
MULE_HOME is set to /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1
Running in console (foreground) mode by default, use Ctrl-C to exit...
MULE_HOME is set to /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
Running Mule Enterprise Edition...
--> Wrapper Started as Console
Java Service Wrapper Standard Edition 32-bit 3.5.19
  Copyright (C) 1999-2013 Tanuki Software, Ltd. All Rights Reserved.
    http://wrapper.tanukisoftware.com
  Licensed to mulesoft.com for Mule ESB Enterprise Edition

Launching a JVM...
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8

Valid license key --> Evaluation = true, Expiration Date = Mon Aug 03 00:00:00 JST 2015, Contact Name = MuleSource Support, Contact Email Address = support@mulesource.com, Contact Telephone = support@mulesource.com, Contact Company = MuleSource, Contact Country = US, Entitlements = 

Starting the Mule Container...
WrapperManager: Initializing...
INFO  2015-07-04 06:56:00,050 [WrapperListener_start_runner] org.mule.module.launcher.MuleContainer: 
**********************************************************************
* Mule ESB and Integration Platform                                  *
* Version: 3.6.1 Build: 0758df2b                                     *
* MuleSoft, Inc.                                                     *
* For more information go to                                         *
* http://www.mulesoft.com/mule-esb-enterprise                        *
*                                                                    *
* Server started: 15/07/04 6:56                                      *
* JDK: 1.7.0_71 (mixed mode)                                         *
* OS: Mac OS X (10.10.4, x86_64)                                     *
* Host: Ryohei-no-MacBook-Pro.local (192.168.11.5)                   *
**********************************************************************
INFO  2015-07-04 06:56:00,089 [WrapperListener_start_runner] org.mule.module.launcher.coreextension.DefaultMuleCoreExtensionManager: Initializing core extensions
INFO  2015-07-04 06:56:00,125 [WrapperListener_start_runner] com.mulesoft.mule.cluster.hazelcast.config.ClusterTicketFileLoader: /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/.mule/mule-cluster.properties (No such file or directory)
WARN  2015-07-04 06:56:00,131 [WrapperListener_start_runner] com.mulesoft.mule.cluster.boot.ClusterCoreExtension: No cluster ID was specified -- High Availability will be disabled:
INFO  2015-07-04 06:56:00,250 [WrapperListener_start_runner] com.mulesoft.mule.plugin.manager.MulePluginManager: Registering plugin: mule-plugin-debugger-3.6.0-RC1
INFO  2015-07-04 06:56:00,274 [WrapperListener_start_runner] org.mule.lifecycle.AbstractLifecycleManager: Initialising: 'Mule Agent Core Extension'. Object is: AgentCoreExtension
INFO  2015-07-04 06:56:00,453 [WrapperListener_start_runner] org.mule.lifecycle.AbstractLifecycleManager: Initialising RegistryBroker
WARN  2015-07-04 06:56:00,721 [WrapperListener_start_runner] org.mule.module.ognl.expression.OgnlExpressionEvaluator: OGNL module is deprecated and will be removed in Mule 4.0. Use MEL expressions instead.
INFO  2015-07-04 06:56:01,261 [WrapperListener_start_runner] org.mule.config.processors.DecoratingAnnotatedServiceProcessor: org.mule.config.AnnotationsParserFactory implementation not found in registry, annotations not enabled
INFO  2015-07-04 06:56:01,863 [WrapperListener_start_runner] org.mule.util.journal.TransactionJournal: Using files for tx logs /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/./.mule/.agent/queue-tx-log/tx1.log and /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/./.mule/.agent/queue-tx-log/tx2.log
INFO  2015-07-04 06:56:01,883 [WrapperListener_start_runner] org.mule.util.journal.TransactionJournal: Using files for tx logs /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/./.mule/.agent/queue-xa-tx-log/tx1.log and /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/./.mule/.agent/queue-xa-tx-log/tx2.log
INFO  2015-07-04 06:56:01,885 [WrapperListener_start_runner] org.mule.util.journal.TransactionJournal: Using files for tx logs /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/./.mule/.agent/queue-tx-log/tx1.log and /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/./.mule/.agent/queue-tx-log/tx2.log
INFO  2015-07-04 06:56:01,886 [WrapperListener_start_runner] org.mule.util.journal.TransactionJournal: Using files for tx logs /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/./.mule/.agent/queue-xa-tx-log/tx1.log and /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/./.mule/.agent/queue-xa-tx-log/tx2.log
INFO  2015-07-04 06:56:01,945 [WrapperListener_start_runner] org.mule.lifecycle.AbstractLifecycleManager: Initialising model: _muleSystemModel
INFO  2015-07-04 06:56:02,113 [WrapperListener_start_runner] org.mule.module.launcher.coreextension.DefaultMuleCoreExtensionManager: Starting core extensions
INFO  2015-07-04 06:56:02,113 [WrapperListener_start_runner] org.mule.lifecycle.AbstractLifecycleManager: Starting: 'Mule Agent Core Extension'. Object is: AgentCoreExtension
INFO  2015-07-04 06:56:02,114 [WrapperListener_start_runner] org.mule.util.queue.QueueXaResourceManager: Starting ResourceManager
INFO  2015-07-04 06:56:02,114 [WrapperListener_start_runner] org.mule.util.queue.QueueXaResourceManager: Started ResourceManager
INFO  2015-07-04 06:56:02,128 [WrapperListener_start_runner] org.mule.modules.oauth2.provider.agents.DefaultSplashScreenAgent: 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ DevKit Extensions (0) used in this application 
                             +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
INFO  2015-07-04 06:56:02,129 [WrapperListener_start_runner] org.mule.lifecycle.AbstractLifecycleManager: Starting model: _muleSystemModel
INFO  2015-07-04 06:56:02,137 [WrapperListener_start_runner] org.mule.module.management.agent.WrapperManagerAgent: Mule is embedded in a container already launched by a wrapper.Duplicates will not be registered. Use the org.tanukisoftware.wrapper:type=WrapperManager MBean instead for control.
INFO  2015-07-04 06:56:02,153 [WrapperListener_start_runner] org.mule.DefaultMuleContext: 
**********************************************************************
* Application: .agent                                                *
* OS encoding: /, Mule encoding: UTF-8                               *
*                                                                    *
* Agents Running:                                                    *
*   DevKit Extension Information                                     *
*   Batch module default engine                                      *
*   Clustering Agent                                                 *
*   JMX Agent                                                        *
**********************************************************************
INFO  2015-07-04 06:56:02,158 [WrapperListener_start_runner] org.eclipse.jetty.server.Server: jetty-9.0.7.v20131107
INFO  2015-07-04 06:56:02,371 [WrapperListener_start_runner] /mmc-support: Initializing Spring root WebApplicationContext
INFO  2015-07-04 06:56:02,371 [WrapperListener_start_runner] org.springframework.web.context.ContextLoader: Root WebApplicationContext: initialization started
INFO  2015-07-04 06:56:02,515 [WrapperListener_start_runner] org.springframework.web.context.support.XmlWebApplicationContext: Refreshing Root WebApplicationContext: startup date [Sat Jul 04 06:56:02 JST 2015]; root of context hierarchy
INFO  2015-07-04 06:56:03,163 [WrapperListener_start_runner] org.springframework.web.context.support.ServletContextAttributeExporter: Exported ServletContext attribute with name 'discoveryEngine'
INFO  2015-07-04 06:56:03,472 [WrapperListener_start_runner] org.quartz.core.SchedulerSignalerImpl: Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
INFO  2015-07-04 06:56:03,473 [WrapperListener_start_runner] org.quartz.core.QuartzScheduler: Quartz Scheduler v.1.8.5 created.
INFO  2015-07-04 06:56:03,475 [WrapperListener_start_runner] org.quartz.simpl.RAMJobStore: RAMJobStore initialized.
INFO  2015-07-04 06:56:03,476 [WrapperListener_start_runner] org.quartz.core.QuartzScheduler: Scheduler meta-data: Quartz Scheduler (v1.8.5) 'scheduler' with instanceId 'NON_CLUSTERED'
  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
  NOT STARTED.
  Currently in standby mode.
  Number of jobs executed: 0
  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
  Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.

INFO  2015-07-04 06:56:03,477 [WrapperListener_start_runner] org.quartz.impl.StdSchedulerFactory: Quartz scheduler 'scheduler' initialized from an externally provided properties instance.
INFO  2015-07-04 06:56:03,477 [WrapperListener_start_runner] org.quartz.impl.StdSchedulerFactory: Quartz scheduler version: 1.8.5
INFO  2015-07-04 06:56:03,479 [WrapperListener_start_runner] org.quartz.core.QuartzScheduler: JobFactory set to: org.springframework.scheduling.quartz.AdaptableJobFactory@5e8db999
INFO  2015-07-04 06:56:03,555 [WrapperListener_start_runner] org.springframework.context.support.DefaultLifecycleProcessor: Starting beans in phase 2147483647
INFO  2015-07-04 06:56:03,555 [WrapperListener_start_runner] org.springframework.scheduling.quartz.SchedulerFactoryBean: Starting Quartz Scheduler now
INFO  2015-07-04 06:56:03,556 [WrapperListener_start_runner] org.quartz.core.QuartzScheduler: Scheduler scheduler_$_NON_CLUSTERED started.
INFO  2015-07-04 06:56:03,569 [WrapperListener_start_runner] org.springframework.web.context.ContextLoader: Root WebApplicationContext: initialization completed in 1197 ms
INFO  2015-07-04 06:56:03,651 [WrapperListener_start_runner] /mmc-support: Initializing Spring FrameworkServlet 'api'
INFO  2015-07-04 06:56:03,651 [WrapperListener_start_runner] org.springframework.web.servlet.DispatcherServlet: FrameworkServlet 'api': initialization started
INFO  2015-07-04 06:56:03,657 [WrapperListener_start_runner] org.springframework.web.context.support.XmlWebApplicationContext: Refreshing WebApplicationContext for namespace 'api-servlet': startup date [Sat Jul 04 06:56:03 JST 2015]; parent: Root WebApplicationContext
INFO  2015-07-04 06:56:03,900 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/muleContextService] onto handler '/v3/muleContextService'
INFO  2015-07-04 06:56:03,901 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/muleConfigurationService] onto handler '/v3/muleConfigurationService'
INFO  2015-07-04 06:56:03,901 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/wrapperManagerService] onto handler '/v3/wrapperManagerService'
INFO  2015-07-04 06:56:03,901 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/auditService] onto handler '/v3/auditService'
INFO  2015-07-04 06:56:03,901 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/flowService] onto handler '/v3/flowService'
INFO  2015-07-04 06:56:03,902 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3_1/clusterNodeService] onto handler '/v3_1/clusterNodeService'
INFO  2015-07-04 06:56:03,902 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/trackingService] onto handler '/v3/trackingService'
INFO  2015-07-04 06:56:03,902 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v1/systemFileService] onto handler '/v1/systemFileService'
INFO  2015-07-04 06:56:03,902 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v1/muleFileService] onto handler '/v1/muleFileService'
INFO  2015-07-04 06:56:03,902 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v1/threadsService] onto handler '/v1/threadsService'
INFO  2015-07-04 06:56:03,903 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v1/memoryService] onto handler '/v1/memoryService'
INFO  2015-07-04 06:56:03,903 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/statusService] onto handler '/v3/statusService'
INFO  2015-07-04 06:56:03,903 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v1/jmxService] onto handler '/v1/jmxService'
INFO  2015-07-04 06:56:03,903 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/poolService] onto handler '/v3/poolService'
INFO  2015-07-04 06:56:03,903 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v1/statisticsService] onto handler '/v1/statisticsService'
INFO  2015-07-04 06:56:03,903 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/statisticsService] onto handler '/v3/statisticsService'
INFO  2015-07-04 06:56:03,904 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/systemService] onto handler '/v3/systemService'
INFO  2015-07-04 06:56:03,904 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v1/alertService] onto handler '/v1/alertService'
INFO  2015-07-04 06:56:03,904 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v1/slaService] onto handler '/v1/slaService'
INFO  2015-07-04 06:56:03,904 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/applicationService] onto handler '/v3/applicationService'
INFO  2015-07-04 06:56:03,904 [WrapperListener_start_runner] org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping: Mapped URL path [/v3/applicationLogService] onto handler '/v3/applicationLogService'
INFO  2015-07-04 06:56:04,122 [WrapperListener_start_runner] org.springframework.web.servlet.DispatcherServlet: FrameworkServlet 'api': initialization completed in 471 ms
INFO  2015-07-04 06:56:04,127 [WrapperListener_start_runner] /mmc-support: AgentServlet: Starting MMC Agent.
INFO  2015-07-04 06:56:04,129 [WrapperListener_start_runner] /mmc-support: AgentServlet: Initialized com.mulesoft.mmc.agent.web.AgentServlet@f51d94d with ID c71a8cd9-dc7e-4750-bc51-d1faf204ceea


INFO  2015-07-04 06:56:10,825 [WrapperListener_start_runner] org.eclipse.jetty.server.handler.ContextHandler: Started o.e.j.w.WebAppContext@2046bc37{/mmc-support,jar:file:/Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/lib/mule/mmc-agent-impl-3.6.1.jar!/mmc-support-app,AVAILABLE}
INFO  2015-07-04 06:56:10,839 [WrapperListener_start_runner] org.eclipse.jetty.server.ServerConnector: Started ServerConnector@b094e09{HTTP/1.1}{0.0.0.0:7777}
INFO  2015-07-04 06:56:10,862 [WrapperListener_start_runner] org.eclipse.jetty.server.ServerConnector: Stopped ServerConnector@b094e09{HTTP/1.1}{0.0.0.0:7777}
INFO  2015-07-04 06:56:10,966 [WrapperListener_start_runner] org.eclipse.jetty.server.ServerConnector: Started ServerConnector@44e995bf{SSL-HTTP/1.1}{0.0.0.0:7777}
INFO  2015-07-04 06:56:10,967 [WrapperListener_start_runner] com.mulesoft.mmc.agent.AgentCoreExtension: Mule Agent Core Extension listening on (0.0.0.0:7777)
INFO  2015-07-04 06:56:10,972 [WrapperListener_start_runner] org.mule.module.launcher.DefaultArchiveDeployer: ================== New Exploded Artifact: default
INFO  2015-07-04 06:56:10,980 [WrapperListener_start_runner] org.mule.module.launcher.MuleSharedDomainClassLoader: Using domain dir /Users/rsogo/work/mmc-distribution-mule-console-bundle-3.6.1/mule-enterprise-3.6.1/domains/default for domain default
INFO  2015-07-04 06:56:11,077 [WrapperListener_start_runner] org.mule.module.launcher.MuleDeploymentService: 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Started domain 'default'                                 +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
INFO  2015-07-04 06:56:11,079 [WrapperListener_start_runner] org.mule.module.launcher.DefaultArchiveDeployer: ================== New Exploded Artifact: default
INFO  2015-07-04 06:56:11,101 [WrapperListener_start_runner] org.mule.module.launcher.application.DefaultMuleApplication: 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ New app 'default'                                        +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
INFO  2015-07-04 06:56:12,140 [WrapperListener_start_runner] org.mule.module.launcher.MuleDeploymentService: 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Started app 'default'                                    +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
INFO  2015-07-04 06:56:12,192 [WrapperListener_start_runner] org.mule.module.launcher.DeploymentDirectoryWatcher: 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Mule is up and kicking (every 5000ms)                    +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
INFO  2015-07-04 06:56:12,207 [WrapperListener_start_runner] org.mule.module.launcher.StartupSummaryDeploymentListener: 
**********************************************************************
*              - - + DOMAIN + - -               * - - + STATUS + - - *
**********************************************************************
* default                                       * DEPLOYED           *
**********************************************************************

*******************************************************************************************************
*            - - + APPLICATION + - -            *       - - + DOMAIN + - -       * - - + STATUS + - - *
*******************************************************************************************************
* default                                       * default                        * DEPLOYED           *
*******************************************************************************************************

Mule Database Connectorの情報

$
0
0

マニュアルに寄ると、もともと有ったJDBC connectorは、Mule 3.5からDatabase connectorに置き換えられました。

Note: The Database connector replaces the JDBC connector. As of Mule 3.5.0, the JDBC connector is deprecated.

しかも、Database connectorはMule Community Editionでも使えます。これは嬉しい。

The Database connector is available with both Mule Community and Mule Enterprise runtimes.

使える操作はマニュアルから引用すると下記の通り。

  • Select
  • Insert
  • Update
  • Delete
  • Stored Procedure
  • Bulk Execute
  • DDL operations such as CREATE, ALTER, etc.

参照情報

2つのサンプルが紹介されています。

Database Connector Examples - Current Mule Documentation

1つはHTTP Connectorでリクエストを受け付け、Databaseにクエリーを発行し、JSONで返します。でもこの形は推奨していないみたい。なんでだろう。負荷?

This example is meant to illustrate the concept of a simple SELECT operation, but we do not recommend exposing database functionality directly as an API.

2つめはDatabaseからFileへの連携。

マニュアル

Database Connector Reference - Current Mule Documentation

AppPotの概要紹介スライドを公開しました

JavaのpropertiesのUTF8、Native変換

$
0
0

いつも忘れてしまう。

符号化されているpropertiesファイルをもらったら、こちらで人が読めるように変換。

native2ascii -reverse MessagesBundle_ja.properties MessagesBundle_ja_native.properties


日本語の修正が終わったら、符号化する。

native2ascii MessagesBundle_ja_native.properties MessagesBundle_ja.properties

Oracleの公式マニュアルはこちら。
http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/native2ascii.html

Viewing all 108 articles
Browse latest View live