JBossで、、、

JBossでHelloEJB

作成 2003/5/5

ここでは、JBossでHelloWorldレベルのEJBを作成します。 簡単、シンプルをポリシーとして、 さくさくいきたいと思います。

パッケージングにはAntを使っています。 EJB自体についての説明は行っていません。 EJBとANTを少しは知ってる人が、ちょっとJBossを使ってみよう というときに参考になる程度のメモです。

実験環境

JBossって?

JBossはオープンソースのEJBコンテナです。

公式サイト
http://www.jboss.org/

日本語情報サイト(解説、ML、Wiki)
http://neverbird.sourceforge.jp/

JBossのインストール

JBossのダウンロード

上の公式サイトからJBossをダウンロードします。 Downloadsを選択し、最新版のJBossをダウンロードします。 ここでは、JBoss3.2.0.zipをダウンロードしました。

JBossのインストール

ダウンロードしたアーカイブを解凍し、任意のディレクトリに配置します。 ここでは、C:\app\jboss-3.2.0に配置しました (以降、インストールしたディレクトリを%JBOSS_HOME%と記述します)。

図、JBossのディレクトリ構造

binにバッチファイルがあれこれ。clientはクライアント用のjarとか。 serverはall、default、minimalの3種類があります。 serverの中のdeployがデプロイするディレクトリです。

サーバーの起動と停止

起動、停止用のバッチファイルが、%JBOSS_HOME%/binディレクトリにあります。

起動

run.bat

設定オプション-c=minimalなど指定すれば、サーバを変更できます。 ここでは、何も指定せずdefaultを使います。

停止

shutdown.bat

-Sオプションで停止します。

HelloEJBの作成と実行

ここで、作成するアプリケーションは簡単なステートレスセッションビーン (と実行用のJavaアプリケーション)です。 まず、全体の流れを説明し、その後、各手順について、説明してきます。

作成の流れ(Antで実行)

ここではAntタスクを利用して、以下の3手順で、作成、実行を行っています。
ejbjar EJBJARのコンパイルとパッケージング
deploy EJBJARのデプロイ
client クライアントから実行

簡単に動かしてみるには、以下のZIPファイルを解凍して使えます。
hello.zip

解凍したjboss01のbuild.xmlのjboss.homeのパスをインストールしたJBossのパスに書き換えます。

<property name="jboss.home" value="C:/app/jboss-3.2.0"/>

コマンドプロンプトで、
ant ejbjar
ant deploy
ant client
と実行すれば、なんとなく動きます。

画面、ejbjar、deploy、clientターゲットの実行

上記ZIPファイルは、Eclipse上で作成しているので、Eclipseの人は、インポートして、クラスパスを変更して使うと見易いでしょう。

各ターゲットで行っていることを簡単に説明していきます。

EJBの作成(ejbjar)

リソースの構成は以下のようになっています。

+- src/
|   +- java/
|   |   +- hello/
|   |   |   +- Client.java
|   |   |   +- Hello.java
|   |   |   +- HelloBean.java
|   |   |   +- HelloHome.java
|   |   +- jndi.properties
|   +- res/
|       +- ejb-jar.xml
|       +- jboss.xml
+- build.xml

build.xmlはAntのビルドファイルです。 Client.java、jndi.propertiesはクライアント用のリソースなので、 ejbjarには必要ありませんが、簡単のために一緒に作っています。

コンパイル、クライアントからの実行時に、%JBOSS_HOME%/client/jbossall-client.jarをクラスパスに通しています。

jboss.xmlはJBoss依存の設定ファイルです。EJB名とJNDI名をマッピングしています。

上記リソースをコンパイル、パッケージングして、以下の構成のhello.jarを作成しています。

+- hello/
|       +- Hello.class
|       +- HelloBean.class
|       +- HelloHome.class
+- META-INF
|       +- ejb-jar.xml
|       +- jboss.xml

Antからは以下のターゲットで実行できます。
ant ejbjar
jarはbuild/hello.jarに作成されます。

EJBのデプロイ(deploy)

JBossでのEJBのデプロイは%JBOSS_HOME%/server/default/deployに 作成したejbjarをコピーするだけです。 JBossを起動したウィンドウでは、デプロイされたことが表示されます。

画面、デプロイ時のサーバ側(ここでエラーがあると例外が表示されます)

アンデプロイするのは、hello.jarファイルをdeployディレクトリから削除すればよいです。

デプロイの確認

jmx-consoleを使ってデプロイしたEJBのJNDIを確認できます。

以下のURLにアクセスします。
http://localhost:8080/jmx-console/

jbossのservice=JNDIViewを選択します。

ページ一番下のlist()メソッドの「invoke」ボタンをクリックします。

がわかります。

クライアントの実行(client)

クライアントの実行クラスは Client.java です。

InitialContextの設定はクラスパス上のjndi.propertiesから読み込みます。 また、lookupする名前はJ2EEコンテキストの中からのlookupではないので、 "java:comp/env/ejb/HelloEJB"でなく、単に"HelloEJB"でlookupしています。

JBossの起動しているウィンドウでもcall sayHelloが表示されていることがわかります。

画面、実行結果

なお、JBossではクライアント側にEJBのスタブは必要ありません (最近は他のEJBコンテナでもスタブいらないの多い?)。

感想

なるべくシンプルにしたかったんですが、 ビルドファイルが必要なほどに複雑ですね。。。 設定ファイルは書き間違いが多いので、検証ツールが必要だと思われます。 ビルドファイル中のvalidateタスクでDTDレベルの検証は行えますが、 statefulとか間違っちゃうとなかなか見つからないし (deployer.batというのが、それっぽが、調査不足)。 あと、ハローEntityBeanとXDocletの利用ぐらいは、 そのうち試したいと思います。


TOP