目次 | 前
| 次
4. 基礎概念
4.では,エンタプライズJavaBeans規定の適用範囲を定義する。
4.1 部品としてのエンタプライズBeans
エンタプライズJavaBeansは,分散計算を基本とした部品体系とする。エンタプライズBeansは,
分散トランザクション指向の企業アプリケーション部品とする。
4.1.1 部品の特徴
エンタプライズBeanの本質的な特徴は,次のとおりとする。
-
エンタプライズBeanのインスタンスは,実行時にコンテナによって生成され,管理される。
-
エンタプライズBeanは,その環境特性を編集することによって,配置時にカスタム化できる。
-
トランザクションモード,セキュリティ属性などの様々なメタデータは,エンタプライズBeanクラスとは独立とする。
これによって,メタデータは,設計時及び配置時にコンテナツールを使用して操作できる。
-
クライアントのアクセスは,コンテナ及びエンタプライズBeanが配置されたEJBサーバによって仲介される。
-
エンタプライズBeanが,EJB規定によって定義された標準コンテナサービスだけを使用する場合,
エンタプライズBeanは,いかなる適合EJBコンテナにも配置できる。
-
特殊化したコンテナは,EJB規定が定義するサービス以外に付加的なサービスを提供できる。
この付加的なサービスに依存するエンタプライズBeanは,そのサービスをサポートするコンテナにだけ配置できる。
-
エンタプライズBeanは,ソースコードの変更又はエンタプライズBeanの再コンパイルを必要とせずに,
複合アプリケーションに含めることができる。
-
エンタプライズBeanのクライアントビューは,Bean開発者が定義する。そのビューは,Beanが配置されるコンテナ及び
サーバに影響されない。このために,Beans及びその100% Pure JavaTMクライアントも,
“write-once-run-anywhere”を実現できる。
4.1.2 柔軟な部品モデル
エンタプライズBean体系は,非常に柔軟なために,次の部品を実装できる。
-
無状態サービスを表すオブジェクト。
-
特定クライアントとの会話型セションを表すオブジェクト。このセションオブジェクトは,自動的に,
複数クライアント呼出しメソッドに渡って会話状態を維持する。
-
複数クライアントで共用される永続的な実体オブジェクト。
エンタプライズJavaBeans体系が定義する状態管理プロトコルは単純だが,Beanの状態管理において,
エンタプライズBean開発者に多大な柔軟性を提供する。
クライアントは,エンタプライズBeanがどう実装されているか,どの機能がクライアントに提供されているかにかかわらず,
オブジェクト生成,参照,メソッド呼出し及び破壊に対して,常に同じAPIを使用する。
4.2 エンタプライズJavaBeans契約
4.2では,エンタプライズJavaBeansの版1.0の契約について示す。
4.2.1 クライアントビュー契約
クライアントビュー契約は,クライアントとコンテナとの間の契約とする。この契約は,エンタプライズBeans
を部品として使用するアプリケーションに対し,一様な開発モデルを提供する。この一様なモデルによって,
より高水準の開発ツールの使用が可能となり,部品の再利用化がさらに進む。
エンタプライズBean提供者及びコンテナ提供者の両方共に,契約実行に責任をもつ。この契約は,次を含む。
-
オブジェクト識別性。
-
メソッド呼出し。
-
ホームインタフェース。
クライアントは,エンタプライズBeanオブジェクトが一意な識別子をもつと期待する。コンテナ提供者は,
各セションEJBオブジェクトに対して一意な識別子を生成する責任をもつ。Bean提供者は,実体エンタプライズBeans
(4.3.2参照)に対し,コンテナがEJBオブジェクトの識別子に埋め込む一意な一次キーを提供する責任をもつ。
Bean提供者は,EJBオブジェクト生成時に一次キーを提供し,その後,オブジェクト活性時及び/又はロード時に,
EJBオブジェクトの一次キーを使用する。
クライアントは,標準のJava命名ディレクトリインタフェースTM(Java
Naming and Directory InterfaceTM,以降JNDI。)を通じて,エンタプライズBeanホームインタフェースを設定する。ホーム内部では,
EJBオブジェクトを識別するのに, 一次キーを使用する。
エンタプライズBean及びそのコンテナは,協力して,クライアントが呼出し可能な生成,検索及び除去の各操作を実装する。
エンタプライズBean提供者は,クライアントが呼出し可能な業務メソッドを定義する遠隔インタフェースを定義する。
エンタプライズBean提供者は,エンタプライズBeanクラスの業務メソッド実装する責任ももつ。
コンテナは,関連する遠隔インタフェースを通じて,クライアントがエンタプライズBeanを呼出し可能とする責任をもつ。
コンテナは,エンタプライズBeanクラスにおける実装に,業務メソッドの呼出しを委託する。
エンタプライズBean提供者は,責任をもってエンタプライズBeanのホームインタフェースを提供する。
エンタプライズBeanのホームインタフェースは,インタフェースjavax.ejb.EJBHomeを拡張する。
ホームインタフェースは,0個以上のメソッドcreate()を,EJBオブジェクトを生成する方法ごとに一つ,定義する。
実体Beansに対応するホームインタフェースは,0個以上のメソッドfinder()を,EJBオブジェクト又は特定な型の
EJBオブジェクトの集まりを参照する方法ごとに一つ,定義する。
エンタプライズBean提供者は,責任をもって,そのシグネチャがBeanのホームインタフェースで定義されるメソッドcreate()
のシグネチャと一致するエンタプライズBeanクラスのメソッドejbCreate()を実装する。コンテナは,責任をもって,
クライアントが呼び出すメソッドcreate()を,エンタプライズBeanインスタンス上の一致するメソッドejbCreate()
に委託する。
エンタプライズ実体Bean提供者は,責任をもって,シグネチャがBeanのホームインタフェースで定義される検索メソッド
find<METHOD>()のシグネチャと一致するエンタプライズBeanクラスのメソッドejbFind<METHOD>()を実装する。
コンテナは,責任をもって,クライアントが呼び出すメソッドfind<METHOD>()を
エンタプライズBeanインスタンス上の一致するメソッドejbFind<METHOD>()に委託する。
4.2.2 部品契約
部品契約は,エンタプライズBeanとそのコンテナとの間の契約とする。この契約は,次を含む。
-
エンタプライズBeanクラスインスタンスのライフサイクルのビュー。これは,セションエンタプライズBeanに対しては,
インタフェースjavax.ejb.SessionBean及びインタフェースjavax.ejb.SessionSynchronization
によって定義される状態管理コールバックを含む。実体エンタプライズBeanに対しては,インタフェースjavax.ejb.EntityBean
によって定義される状態管理コールバックを含む。 コンテナは,適当な時に,これらのインタフェースで定義されるコールバックメソッドを呼び出し,
ライフサイクルの中で重要なイベントを,そのクラスインスタンスに通知する。
-
インタフェースjavax.ejb.SessionContext。コンテナは,インスタンス生成の際,
このインタフェースをセションエンタプライズBeanインスタンスに渡す。インスタンスは,インタフェースSessionContext
を使用して,様々な情報及びそのコンテナからのサービスを得る。同様に,実体インスタンスは,インタフェース
javax.ejb.EntityContextを使用して,そのコンテナと通信する。
-
コンテナがエンタプライズBeanに提供する環境java.util.Properties。
-
すべてのコンテナが,エンタプライズBeansに提供しなければならないサービスのリスト。
4.2.3 ejb-jarファイル
ejb-jarファイルは,EJBツールが宣言配置情報と共にエンタプライズBeansをパッケージ化するために使用する標準フォーマットとする。
すべてのEJBツールは,ejb-jarファイルをサポートしなければならない。
ejb-jar契約は,次を含む。
-
ejb-jarファイルの内容を記述するJARファイル明示エントリ。
-
エンタプライズBeansに対応するJavaクラスファイル。
-
エンタプライズBean配置記述子。配置記述子は,エンタプライズBeanと関連する宣言属性を含む。
属性は,コンテナにエンタプライズBeanオブジェクトの管理方法を示す。
-
エンタプライズBeanが実行時に要求するエンタプライズBean環境特性。
図4.1は,版1.0で定義されるエンタプライズJavaBeans契約を示す。
 |
図4.1 エンタプライズJavaBeans契約
図4.1は,コンテナ外部で実行する遠隔クライアントだけを示すが,EJBコンテナにインストールされたエンタプライズBeans
クライアントにもクライアント側APIが適用できることに注意。
4.3 セションオブジェクト及び実体オブジェクト
エンタプライズJavaBeans 1.0は,二つの型のエンタプライズBeansを定義する。
セションオブジェクトに対するサポートは,EJB1.0適合コンテナに必須とする。実体オブジェクトに対するサポートは,
EJB1.0適合コンテナではオプションとする。しかし,EJB2.0適合コンテナでは必須となる。
4.3.1 セションオブジェクト
セションオブジェクトは,次の特性をもつ。
-
単一クライアントに代わって実行する。
-
トランザクション対応可能。
-
データベースの中の共有データを更新する。
-
データベースの中の共有データにアクセス及び更新してもよいが,そのデータを直接には表現しない。
-
比較的寿命が短い。
-
EJBサーバがクラッシュすると除去される。計算を続行するためには,クライアントは,
新しいセションオブジェクトを再確立しなければならない。
典型的なEJBサーバ及びコンテナは,拡張可能な実行環境を提供して,数多くのセションオブジェクトを並行実行する。
4.3.2 実体オブジェクト
実体オブジェクトは,次の特性をもつ。
-
データベースの中のデータを表現する。
-
トランザクション的。
-
複数のユーザからの共有アクセスが可能。
-
寿命が長い(データベースの中のデータと同じくらい長い寿命をもつ。)。
-
EJBサーバがクラッシュしても生き延びる。サーバクラッシュは,クライアントには透過的とする。
典型的なEJBサーバ及びコンテナは,並行して活動する数多くの実体オブジェクトに対して,規模拡大可能な実行環境を提供する。
4.4 標準CORBAマッピング
複数ベンダのEJB環境に対して相互運用性を確保するために,CORBAに対するエンタプライズJavaBeans
クライアントのビュー契約の標準マッピングを定義する。
CORBAマッピングは,次を備える。
-
EJBクライアントインタフェースのCORBA IDLへのマッピング。
-
トランザクション文脈の伝播。
-
セキュリティ文脈の伝播。
エンタプライズJavaBeansのCORBAマッピングは,EJBサーバの複数ベンダ実装間におけるネットワーク上の相互運用性を可能にするだけでなく,
CORBA標準APIを通じて,エンタプライスBeansとして作成されたサーバ側アプリケーションに,非Javaクライアントがアクセス可能とする。
エンタプライズJavaBeansのCORBAマッピングは,トランザクション文脈及びセキュリティ文脈の伝播に対する標準CORBA
オブジェクトサービスプロトコルに依存する。
CORBAマッピングは,関連する文書[6]で定義する。
図4.2は,五つの異なるベンダシステムから構成される異機種環境を例示する。
 |
図4.2 異機種環境の例
目次 | 前 | 次