目次 | 前
| 次
7. セションシナリオの例
7.では,セションエンタプライズBeanの開発シナリオ及び配置シナリオの例を示す。
シナリオを使用して,エンタプライズBean提供者の責任及びコンテナ提供者の責任を例示する。
このシナリオでコンテナ提供者のツールが生成するクラスは,規定的なものというより説明的なものと考えるほうがよい。
コンテナ提供者は,異なった方法でセションエンタプライズBeanとそのコンテナとの間の契約を自由に実装する。
この場合,方法は異なっても,(エンタプライズBean提供者及びクライアント側のプログラマの視点からは,)
等価な効果を達成する。
7.1 概観
Wombat社は,CartBeanというセションBeanを開発してきた。CartBeanは,Acme社が提供するコンテナに配置される。
7.2 継承関係
インタフェースとクラスとの間の継承関係の例を,図7.1に示す。
 |
図7.1 インタフェースとクラスとの間の継承関係
7.2.1 セションBean提供者の責任対象
Wombat社は,次を提供する責任をもつ。
-
セションBeanの遠隔インタフェース(Cart)の定義。 遠隔インタフェースは,クライアントが呼出し可能な業務メソッドを定義する。遠隔インタフェースは,
インタフェースjavax.ejb.EJBObjectを拡張し,JavaRMI遠隔インタフェースの標準規則に従わなければならない。
遠隔インタフェースは,publicとして定義しなければならない。
-
セションBeanクラス(CartBean)における業務論理の書込み。 エンタプライズBeanクラスは,必須ではないが,エンタプライズBeanの遠隔インタフェース(Cart)を実装してもよい。
エンタプライズBeanは,インタフェースjavax.ejb.SessionBeanを実装し,
EJBオブジェクト生成時に呼び出されるメソッドejbCreate()を定義しなけばならない。
-
エンタプライズBeanのホームインタフェース(CartHome)の定義。 ホームインタフェースは,publicとして定義し,インタフェースjavax.ejb.EJBHomeを拡張し,
JavaRMI遠隔インタフェースの標準規則に従わなければならない。
-
実行時にセションBeanが必要とする環境特性の指定。 環境特性は,標準的なファイルjava.util.Propertiesとする。
-
セションBean提供者が,Beanを使って,開発及び配置ワークフローの次段階に渡したいと考えている
あらゆる宣言的メタデータを指定する配置記述子の定義。
7.2.2 コンテナ提供者が提供するクラス
次のクラスは,コンテナ提供者Acme社が提供する。
-
クラスAcmeHomeは,メソッドjavax.ejb.EJBHome()のAcme実装を提供する。
-
クラスAcmeRemoteは,メソッドjavax.ejb.EJBObject()のAcme実装を提供する。
-
クラスAcmeBeanは,付加的な状態及びメソッドを提供し,AcmeのコンテナがそのセションBean
インスタンスを管理可能とする。例えば,AcmeのコンテナがLRUアルゴリズムを使用する場合,AcmeBeanは,
それを使用するためにクロック数及びメソッドを含むかもしれない。
-
クラスAcmeMetaDataは,メソッドjavax.ejb.EJBMetaData()のAcme実装を提供する。
7.2.3 コンテナ提供者の責任対象
Acme社が提供するツールは,次について責任をもつ。
-
セションBeanのための遠隔Beanクラス(AcmeRemoteCart)の生成。 遠隔Beanクラスは,エンタプライズBeanの“ラッパー”クラスとし,エンタプライズBeanのクライアントのビューを提供する。
ツールは,遠隔Beanクラスの通信スタブ及びスケルトンを実装するクラスも生成する。
-
Acmeコンテナに適したセションBeanクラス(AcmeCartBean)の実装の生成。 AcmeCartBeanは,クラスAcmeBeanで定義されたサービスを混合したクラスCartBeanからの業務論理を含む。
Acmeツールは,継承,委託及びコード生成を使用し,二つのクラスの混合を実現できる。
-
セションBeanのホームインタフェース(AcmeCartHome)に対応する実装クラスの生成。
ツールは,ホームクラスの通信スタブ及びスケルトンを実装するクラスも生成する。
-
CartBeanのインタフェースjavax.ejb.EJBMetaDataを実装するクラス(AcmeCartMetaData)を生成する。
これらのクラス及びツールの多くは,コンテナ固有とする。すなわち,クラス及びツールは,Acme社が実装した方法を反映する。
他のコンテナ提供者は,異なる機構を使用し,実行時クラスを生成してもよいが,生成されたクラスは,
多くの場合,Acmeのツールが生成したクラスとは異なることになる。
目次 | 前 | 次