セッション Bean

EJBには、セッション Bean、エンティティ Bean、メッセージ・ドリブン Bean などがありますが、まずはセッションBeanを使ってみましょう。

このEJBサンプル(src\main 以下の HelloEJBBean.java - XDoclet を使っています。XDoclet は後ほど説明)のメソッドsayHelloは、引数文字列の後ろに"さんこんにちは。"を付けて返します。

早速サンプルを動かしてみましょう。

ch1 のアーカイブを適当なディレクトリーに展開してch1 ディレクトリーにcdしてください。

環境変数にJBOSS_HOMEとXDOCLET_HOMEが既に設定されていれば不要ですが、設定されてなければ setenv.bat (ch1 ディレクトリーの直下にあり) を実行。

C:\java\helloejb\ch1>setenv.bat

C:\java\helloejb\ch1>set JBOSS_HOME=C:\jboss\jboss-3.0.5

C:\java\helloejb\ch1>set XDOCLET_HOME=C:\java-tools\xdoclet-1.2

次は antでxdocletとcompileを実行します。

C:\java\helloejb\ch1>ant
Buildfile: build.xml

clean:

init:

prepare:
    [mkdir] Created dir: C:\java\helloejb\ch1\build\src
    [mkdir] Created dir: C:\java\helloejb\ch1\build\gen-src
    [mkdir] Created dir: C:\java\helloejb\ch1\build\classes
    [mkdir] Created dir: C:\java\helloejb\ch1\build\classes\META-INF
    [mkdir] Created dir: C:\java\helloejb\ch1\build\deploy
    [mkdir] Created dir: C:\java\helloejb\ch1\build\client
     [copy] Copying 2 files to C:\java\helloejb\ch1\build\src

ejbdoclet:
[ejbdoclet] Deploy TEMPLATE URL:  jar:file:C:\java-tools\xdoclet-1.2\lib\xdoclet
-apache-module-1.2.jar!/xdoclet/modules/apache/axis/ejb/resources/axis-deploy_ws
dd.xdt
[ejbdoclet] Undeploy TEMPLATE URL:  jar:file:C:\java-tools\xdoclet-1.2\lib\xdocl
et-apache-module-1.2.jar!/xdoclet/modules/apache/axis/ejb/resources/axis-undeplo
y_wsdd.xdt
[ejbdoclet] (XDocletMain.start                   47  ) Running 
[ejbdoclet] Generating Remote interface for 'helloejb.session.HelloEJBBean'.
[ejbdoclet] (XDocletMain.start                   47  ) Running 

[ejbdoclet] (XDocletMain.start                   47  ) Running 
[ejbdoclet] Generating Home interface for 'helloejb.session.HelloEJBBean'.
[ejbdoclet] (XDocletMain.start                   47  ) Running 
[ejbdoclet] (XDocletMain.start                   47  ) Running 
[ejbdoclet] (XDocletMain.start                   47  ) Running 
[ejbdoclet] Generating EJB deployment descriptor (ejb-jar.xml).
[ejbdoclet] (XDocletMain.start                   47  ) Running 
[ejbdoclet] Generating jboss.xml.

compile:
    [javac] Compiling 4 source files to C:\java\helloejb\ch1\build\classes

main:

BUILD SUCCESSFUL
Total time: 6 seconds

最後に ant dep で、jarと先ほど設定した%JBOSS_HOME%\server\default\deploy に作成されたjar ファイル (helloejb.jar) がコピーされます。

JBossのよいところは、ホットディプロイ機能があり、deploy ディレクトリーに jar、war、ear ファイル等をコピーするだけで、ディプロイが完了です。

ch0 で起動したJBossのコンソールを見てみましょう。

21:13:33,887 INFO  [MainDeployer] Starting deployment of package: file:/C:/jboss
/jboss-3.0.5/server/default/deploy/helloejb.jar
21:13:34,257 INFO  [EjbModule] Creating
21:13:34,277 INFO  [EjbModule] Deploying HelloEJBEJB
21:13:34,297 INFO  [EjbModule] Created
21:13:34,297 INFO  [EjbModule] Starting
21:13:34,357 INFO  [EjbModule] Started
21:13:34,357 INFO  [MainDeployer] Deployed package: file:/C:/jboss/jboss-3.0.5/s
erver/default/deploy/helloejb.jar

このように表示されていればディプロイ成功です。

それでは ch1 のコンソールに戻ってクライアント・プログラムを動かして EJB の動作を確認しましょう。

ant rc でクライアントが起動します。

C:\java\helloejb\ch1>ant rc
Buildfile: build.xml

init:

rc:
     [test] EJBさんこんにちは。

BUILD SUCCESSFUL
Total time: 5 seconds

このように表示されれば、EJB の動作が確認できました。

あとかたずけとして、アンディプロイをしましょう。

ant undep で %JBOSS_HOME%\server\default\deploy からhelloejb.jar が削除されます。

サーバのコンソールは

21:13:59,513 INFO  [MainDeployer] Undeploying file:/C:/jboss/jboss-3.0.5/server/
default/deploy/helloejb.jar
21:13:59,513 INFO  [EjbModule] Stopping
21:13:59,513 INFO  [EjbModule] Stopped
21:13:59,513 INFO  [EjbModule] Destroying
21:13:59,523 INFO  [EjbModule] Remove JSR-77 EJB Module: jboss.management.single
:J2EEApplication= ,J2EEServer=Single,j2eeType=EJBModule,name=helloejb.jar
21:13:59,533 INFO  [EjbModule] Destroyed
21:13:59,533 WARN  [DeploymentInfo] Could not delete directory file:/C:/jboss/jb
oss-3.0.5/server/default/tmp/deploy/server/default/deploy/helloejb.jar/24.helloe
jb.jar restart will delete it
21:13:59,533 INFO  [MainDeployer] Undeployed file:/C:/jboss/jboss-3.0.5/server/d
efault/deploy/helloejb.jar

となっているはずです。これでアンディプロイ完了です。


EJB の構成要素の話

EJB には3つのJava定義ファイル

        コンテナへのインターフェース

        EJB 実装クラスの外部へのインターフェース

があります。

helloejb.jar 中を見てみましょう。

C:\java\helloejb\ch1>jar tf build\deploy\helloejb.jar
META-INF/
META-INF/MANIFEST.MF
helloejb/
helloejb/session/
helloejb/session/HelloEJBBean.class
helloejb/session/HelloEJBHomeRemote.class
helloejb/session/HelloEJBRemote.class
META-INF/ejb-jar.xml
META-INF/jboss.xml

それぞれ

 

またMETA-INF/は


#TOBECONTINUED 040310