特集
2004/02/13 16:02:00 更新

特集:第2回 インタフェースとBeanクラス作成でEJBの核を知る (3/3)
リモートインタフェースを用意する
次に、EJBオブジェクトの元となるリモートインタフェースを用意しよう。
リモートインタフェースは、EJBObjectインタフェースから継承したもので、ビジネスロジックのメソッドと同名のメソッドを実装する。そのプログラムは、List 2のようになる。
List 2■Sample.java
package example.ejb;
import java.rmi.*;
import javax.ejb.*;
public interface Sample extends EJBObject
{
public int addData(int a, int b) throws RemoteException;
}
|
List 1では、addDataというメソッドを実装したので、リモートインタフェースでもList 2に示したようにaddDataメソッドを実装している。
| public int addData(int a, int b) throws RemoteException; |
これにより、クライアントがEJBオブジェクトを経由してaddDataメソッドを呼び出せるようになるわけだ。すでに説明したように、各メソッドはRemoteException例外をthrowするように記述する必要があるので、List 2では、addDataメソッドの定義で、「throws RemoteException」としてある。
ホームインタフェースを用意する
そしてホームインタフェースを用意する。ホームインタフェースは、EJBHomeインタフェースから継承したもので、createメソッドを実装する。そのプログラムは、List 3のようになる。
List 3■SampleHome.java
package example.ejb;
import java.rmi.*;
import javax.ejb.*;
public interface SampleHome extends EJBHome
{
Sample create() throws RemoteException, CreateException;
}
|
createメソッドは、List 3に示したように、リモートインタフェースを返すように実装する。ここではリモートインタフェースはList 2に示したようにSampleという名前になっているので、createメソッドの戻り値は、Sampleインタフェースとする。
| Sample create() throws RemoteException, CreateException; |
またcreateメソッドは、RemoteException例外とCreateException例外をthrowするように実装する。
RemoteException例外は、RMI-IIOPにおいて発生する可能性がある例外、CreateException例外は、List 2に示したejbCreateメソッドの呼び出しにおいて発生する可能性がある例外だ(Fig.7に示したように、createメソッドを呼び出したときにはBeanのejbCreateメソッドが呼び出されるためだ)。
配備記述子を用意する
最後に配備記述子を用意する。配備記述子は、ejb-jar.xmlというファイル名として用意する。配備記述子は、List 4のようになる。
List 4■配備記述子(ejb-jar.xml)
<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC
'-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN'
'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>SampleBean</ejb-name>
<home>example.ejb.SampleHome</home>
<remote>example.ejb.Sample</remote>
<ejb-class>example.ejb.SampleBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
</ejb-jar>
|
配備記述子では、<enterprise-beans>要素内で、Enterprise Beanを定義する。セッションBeanの場合には、<session>要素を用いる。<session>要素内の項目の意味は、次の通りだ。
- <ejb-name>
Enterprise Beanの名前を定義する。任意の名前でよい。
- <home>
ホームインタフェースの名前を記述する。ここでは、List 3に示したようにインタフェース名を記述する。
- <remote>
リモートインタフェースの名前を記述する。ここでは、List 2に示したインタフェース名を記述する。
- <ejb-class>
Beanのクラス名を記述する。ここでは、List 1に示したクラス名を記述する。
- <session-type>
ステートレスかステートフルかの区別を設定する。ステートレスの場合には「stateless」、ステートフルの場合には「statefull」と記述する。ここではステートレスを指定している。
- <transaction-type>
トランザクションの種類を記述する。トランザクション処理をBean自身が行なう場合には「Beans」、EJBコンテナが行なう場合には「Container」を指定する。トランザクション処理を使わない場合には、Containerを指定しておけば問題ない。
|
次回、第3回目では、これまで解説してきたコードをまとめ、実行環境となるJBossのインストール、そして実際の稼働方法までを挙げていこう。
関連記事関連リンク
[大澤文孝,ITmedia]
Copyright © ITmedia, Inc. All Rights Reserved.
