特集
2004/02/13 16:02:00 更新
特集:第2回 インタフェースとBeanクラス作成でEJBの核を知る (3/3)
リモートインタフェースを用意する
次に、EJBオブジェクトの元となるリモートインタフェースを用意しよう。
リモートインタフェースは、EJBObjectインタフェースから継承したもので、ビジネスロジックのメソッドと同名のメソッドを実装する。そのプログラムは、List 2のようになる。
List 2■Sample.javapackage 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.javapackage 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のインストール、そして実際の稼働方法までを挙げていこう。
関連記事第1回 EJBの仕組みを知ろう
MySQLとJBossが協業
SunとJBossのJava論争が決着
JBoss、顧客に免責保証提供
JBoss、顧客保護の方針を明らかに
オープンソース分野での勢力拡大を目指すJBoss
関連リンク
Java チャンネル
[大澤文孝,ITmedia]
Copyright © ITmedia, Inc. All Rights Reserved.