特集
2004/03/25 18:00 更新


特集:第3回 JBossのインストールから基本的な使い方まで (7/8)


Enterprise Beanのインスタンスを作る

 次にホームインタフェースを経由して、Enterprise Beanのインスタンスを作る。この手順は、すでにFig.6で説明したように、ホームインタフェースのcreateメソッドを呼び出せばよい。

 createメソッドを呼び出すことによって、リモートインタフェース(EJBオブジェクト)を得ることができる。

Sample sample;
sample = sampleHome.create();

Enterprise Beanを使う

 リモートインタフェースは、Beanクラスと同じメソッドを備えている。これを経由してBeanクラスのメソッドを呼び出せるのだ。List 6では、addDataメソッドを呼び出している。

int a, b, result;
a = 10;
b = 20;
result = sample.addData(a, b);

System.out.println(a + "+" + b + "=" + result);

 addDataメソッドの実装は、List 1のように2つの数値の和を返すようにしてあるから、この結果、result変数には10 + 20 = 30が格納される。

J2EEのクラスファイルを用いコンパイルと実行をする

 それでは、List 6のプログラムをコンパイルして実行してみよう。

 List 6のプログラムでは、JNDIやEJBの機能を使っているため、コンパイルや実行にあたっては、J2EEのクラスファイルが必要だ。JBossをインストールしたディレクトリのclientサブディレクトリには、jbossall-client.jarというファイルがあり、これがJ2EEのクラスファイルを提供している。そこで、jbossall-client.jarファイルをクラスパスに含める。

 またList 6ではホームインタフェースSampleHomeおよびリモートインタフェースSampleを使っているので、これらのクラスファイルも必要だ。SampleHomeインタフェースとSampleインタフェースについては、先にEJBに配備する際に作成したsample.jarに収めているので、これを流用すればよい。


コンパイルや実行にあたって必要なのはホームインタフェースとリモートインタフェースだけであり、Beanクラス自身(今回の場合はSampleBeanクラス)は必要ない。そのためコンパイルや実行にあたり、EJBに配備する際に作成したjar形式ファイルを使うのではなく、ホームインタフェースとリモートインタフェースのみを含むjar形式ファイルを別途作り、それを利用してもよい。むしろBeanクラスを含めないほうが、Beanクラスのクラスファイルをリバースエンジニアリングされる心配がなく、秘匿性を保てる。なお、ここではjar形式ファイルを作り直す手間を省き、配備に使ったjar形式ファイルを流用しているに過ぎない。

 コンパイルコマンドは、次のようになる。

$ javac -classpath /usr/local/jboss/client/jbossall-client.jar:sample.jar ClientTest.java

 コンパイルすると、ClientTest.classファイルができる。次のようにして実行可能だ。

$ java -classpath /usr/local/jboss/client/jbossall-client.jar:sample.jar:. ClientTest


実行時にはクラスパスに「.」(カレントディレクトリ)を含めないと、ClientTest.class自身が見つからずに実行に失敗する。

前のページ | 1 2 3 4 5 6 7 8 | 次のページ

[大澤文孝,ITmedia]

Copyright © ITmedia, Inc. All Rights Reserved.