目次 | 前
| 次
10. 実体シナリオの例
実体エンタプライズBeansに対するコンテナサポートは,EJB1.0適合性の任意機能とする。実体エンタプライズBeansに対するコンテナサポートはEJB2.0では必須となるだろう。
10.では,実体エンタプライズBeanの開発シナリオ及び配置シナリオの例を記述する。シナリオを使用して,エンタプライズBean提供者の責任及びコンテナ提供者の責任を説明する。
このシナリオでコンテナ提供者のツールによって生成されたクラスは,規定的ではなく説明的なものとして考えられるものとする。コンテナ提供者は,様々な方法で,自由にエンタプライズBeanとコンテナとの間の契約を実装できる。この場合,どの方法でも,エンタプライズBean提供者の視点からもクライアント側のプログラマの視点からも,その効果は同一とする。
10.1 概観
Wombat社は,エンタプライズBeanのAccountBeanを開発した。エンタプライズBeanAccountBeanは,Acme社が提供するコンテナで配置される。
10.2 継承関係
インタフェースとクラスとの間の継承関係の例を図10.1に示す。
 |
図10.1 インタフェースとクラスとの間の継承関係の例
10.2.1 エンタプライズBean提供者の責任対象
Wombat社は,次のサービスの提供に責任をもつ。
-
エンタプライズBeanの遠隔インタフェース(Account)の定義。遠隔インタフェースはクライアントが呼び出せる業務メソッドを定義する。遠隔インタフェースは,インタフェースjavax.ejb.EJBObjectを拡張し,遠隔インタフェースJavaRMIの標準規則に従わなければならない。遠隔インタフェースは,publicとして定義されなければならない。
-
エンタプライズBeanクラス(AccountBean)の業務論理の書き込み。エンタプライズBeanクラスは,エンタプライズBeanの遠隔インタフェース(Account)を実装してもよいが,ただしこれは必須ではない。エンタプライズBeanは,インタフェースjavax.ejb.EntityBeanを実装し,EJBオブジェクト生成時に呼び出されるメソッドejbCreate()を定義しなければならない。
-
エンタプライズBeanに対応するホームインタフェース(AccountHome)の定義。ホームインタフェースは,EJBクラス固有のメソッドcreate及びメソッドfinderを定義する。ホームインタフェースは,publicとして定義され,インタフェースjavax.ejb.EJBHomeを拡張し,及び遠隔インタフェースJavaRMIの標準規則に従わなければならない。
-
実行時にエンタプライズBeanが要求する環境特性の指定。環境特性は標準ファイルjava.util.Propertiesとする。
-
あらゆる宣言メタデータを指定する配置記述子の定義。エンタプライズBean提供者は,エンタプライズBeanで宣言メタデータを開発・配置ワークフローの次段階へ渡そうとする。
10.2.2 コンテナ提供者が提供するクラス
コンテナ提供者であるAcme社は次のクラスを提供する。
-
クラスAcmeHome。このクラスはメソッドjavax.ejb.EJBHomeのAcme社の実装を提供する。
-
クラスAcmeRemote。このクラスはメソッドjavax.ejb.EJBObjectのAcme社の実装を提供する。
-
クラスAcmeBean。このクラスは,AcmeのコンテナがエンタプライズBeanインスタンスを管理可能とするための付加状態及び付加メソッドを提供する。例えば,AcmeのコンテナがLRUアルゴリズムを使用する場合,AcmeBeanは,クロック数及びメソッドを包含してLRUアルゴリズムを使用するかもしれない。
-
クラスAcmeMetaData。このクラスはメソッドjavax.ejb.EJBMetaDataのAcme社の実装を提供する。
10.2.3 コンテナ提供者の責任対象
Acme社が提供するツールは次のサービスの提供に責任をもつ。
-
エンタプライズBeanに対応する遠隔Beanクラス(AcmeRemoteAccount)の生成。遠隔Beanクラスは,エンタプライズBeanに対応する“ラッパー”クラスであり,エンタプライズBeanのクライアントのビューを提供する。ツールは同様に,遠隔Beanクラスの通信スタブ及びスケルトンを実装するクラスを生成する。
-
Acmeコンテナに適したエンタプライズBeanクラスの実装(AcmeAccountBean)の生成。AcmeAccountBeanは,クラスAcmeBeanで定義されたサービスと混合されたクラスAccountBeanからの業務論理を包含する。Acmeツールは,継承,委託及びコード生成を使用して,二つのクラスのミクスインを実現できる。
-
エンタプライズBeanに対応するホームクラス(AcmeAccountHome)の生成。ホームクラスは,エンタプライズBeanのホームインタフェース(AccountHome)を実装する。ツールは同様に,ホームクラスの通信スタブ及びスケルトンを実装するクラスを生成する。
-
AccountBeanに対応するインタフェースjavax.ejb.EJBMetaDataを実装するクラス(AcmeAccountMetaData)の生成。
前述のクラス及びツールの多くは,コンテナ固有である(つまり,Acme社が前述のクラス及びツールを実装した方法を反映している)。他のコンテナ提供者は,異なった機構を使用してその実行時クラスを生成するかもしれない。生成されたクラスは,多くの場合,Acmeのツールで生成されたクラスとは異なる。
目次 | 前
| 次