特集
2004/01/30 18:55:00 更新
特集:第1回 EJBの仕組みを知ろう (6/6)
EJBの持ち味「RMI-IIOP」によるネットワークを介した呼び出し
EJBでは、RMI-IIOP(Remote Method Invocation over Internet Inter-ORB Protocol)を使い、ネットワーク越しにメソッドが呼び出される。これは、すでにFig.4やFig.5に示したように、Enterprise Beanが複数のサーバに分散していたり、WebコンテナとEJBコンテナが同一のサーバでなかったりする構成を許すためだ。
|
EJBでは、RMI-IIOPを使ってメソッドの呼び出しをするため、メソッドの実装として、次の制限がある。
制限1 EJBObjectインタフェース(EJBオブジェクト)の各メソッドでは、ネットワーク経由での呼び出しの例外に備え、java.rmi.RemoteExceptionをスローするように宣言しなければならない
|
制限2 引数や戻り値として、プリミティブ型、Serializable、Remote型以外の型は利用できない
要素配備のための配備記述子
このように、Enterprise Beanは、「ホームオブジェクト」「EJBオブジェクト」「Beanオブジェクト」の3つで構成されるため、結局のところはEnterprise Beanを作るために次の要素が必要となる。
1. Beanクラス
Bean自身のクラス。このクラスには、任意のビジネスロジックのメソッドを実装する。一般に、Beanクラスは、XXXBeanのように最後にBeanを付加する名称にするのが慣例だ。
このクラスは、EJB対応ではないJava Beansと作り方が同じである。ただし、EJB対応とするためには、EnterpriseBeanインタフェースを実装(implements)しなければならない。
ただし、実際にBeanクラスを構築する場合には、EnterpriseBeanインタフェースを直接実装するのではなく、Enterprise Beanの種類に応じて、次のそれぞれのインタフェースを実装する。どのインタフェースもEnterpriseBeanインタフェースから派生したものだ。
- セッションBeanの場合
SessionBeanインタフェース
- エンティティBeanの場合
EntityBeanインタフェース
- メッセージドリブンBeanの場合
MessageDrivenBeanインタフェース
すでに説明したように、ホームオブジェクトのxxxメソッドが呼び出されると、BeanクラスのejbXxxという名前のメソッドが呼び出されるため、ホームインタフェースの実装によって、適したejbXxxのメソッドも実装する必要がある。たとえばホームインタフェースにcreateメソッドを実装したならば、ejbCreateメソッドを、removeメソッドを実装したならばejbRemoveメソッドをそれぞれ実装しなければならない。
2. ホームインタフェース
EJBHomeインタフェースから継承したインタフェースとして用意する。このインタフェースには、createメソッド、removeメソッド、findxxxメソッドなどを必要に応じて実装する。一般的に、ホームインタフェースの名称は、XXXHomeのようにリモートインタフェースの末尾にHomeを付加させた名称とするのが慣例だ。
3. リモートインタフェース
EJBObjectインタフェースから継承したインタフェースとして用意する。このインタフェースには、「1.」のBeanクラスに実装したメソッドと同じものを実装する。ただし各メソッドは、「java.rmi.RemoteException」例外をthrowするように記述しなければならない。
実際にEJBコンテナで動作させるためには、これらの要素をどのように組み合わせてEnterprise Beanを構成するのかを指定する設定ファイルが必要となる。そのファイルは、「配備記述子(DD:Deployment Definition)」と呼ばれるものだ。配備記述子は、「ejb-jar.xml」という名称のXML形式ファイルとなる。
今回の第1回目は、EJBの基礎についてを解説してきた。第2回目では、Beanのより深い面について触れていくことにしよう。
関連記事MySQLとJBossが協業
SunとJBossのJava論争が決着
JBoss、顧客に免責保証提供
JBoss、顧客保護の方針を明らかに
オープンソース分野での勢力拡大を目指すJBoss
関連リンク
Java チャンネル
[大澤文孝,ITmedia]
Copyright © ITmedia, Inc. All Rights Reserved.