エンタプライズJavaBeans体系では,アプリケーション開発及び配備ライフサイクルにおいて,六つの異なる役割を定義する。 各EJB役割は,異なった人又は組織で実行されてもよい。 EJB体系は,各役割の製造物が他のEJB役割の製品と確実に互換となる契約を規定する。 EJB規定は,ISVによって記述されたエンタプライズBeansの開発と配備をサポートするために要求されるこの契約に焦点を合わせている。
シナリオの中では,単一の人又は組織が複数のEJB役割を実行してもよい。 例えば,コンテナ提供者及びEJBサーバ提供者は,同じ製造元でもよい。 又は,一人のプログラマが,エンタプライズBean提供者及びアプリケーション組立て者の二つのEJB役割を兼ねてもよい。
3.1.1〜3.1.6で,六つのEJB役割を定義する。
エンタプライズBean提供者(略してBean提供者)は,エンタプライズビーンの作成者とする。 提供者の出力は,一つ以上のエンタプライズビーンを含むejb-jarファイルとする。 Bean提供者は,そのエンタプライズビーンのビジネスメソッドを実装したJavaクラス,そのビーンのホームインタフェースとコンポネントインタフェースの定義,及びそのビーンの配備記述子に責任をもつ。 この配備記述子は,エンタプライズビーンの構造情報(例えば,そのエンタプライズビーンのクラス名)を含み,及びエンタプライズビーンのすべての外部依存性(例えば,エンタプライズビーンの使用する資源の名前と型)を宣言する。
エンタプライズBean提供者は,通常はアプリケーション領域専門家とする。 Bean提供者は,通常は業務タスク又は業務実体を実装した再利用可能なエンタプライズBeanを開発する。
Bean提供者は,システムレベルプログラムの専門家である必要はない。 そのために,Bean提供者は,一般的にはトランザクション,並行性,セキュリティ,分散又はその他のサービスを,エンタプライズBeansにプログラムしない。 Bean提供者は,これらのサービスをEJBコンテナに頼る。
複数のエンタプライズビーンのBean提供者は,しばしばアプリケーション組立て者というEJB役割を果たす。
アプリケーション組立て者は,エンタプライズビーンをより大きな配備可能なアプリケーション単位に組み込む。 アプリケーション組立て者への入力は,Bean提供者によって作成された一つ以上のejb-jarファイルとする。 アプリケーション組立て者は,アプリケーション組立て指示と共にそのエンタプライズビーンを含んでいる一つ以上のejb-jarファイルを出力する。 アプリケーション組立て者は,そのアプリケーション組立て指示を配備記述子に挿入する。
アプリケーション組立て者は,他の型のアプリケーションコンポネント(例えば,Java ServerPagesTM)とエンタプライズビーンを結合することもできる。
EJB規定は,そのエンタプライズビーンの配備の前にアプリケーション組立て過程が起こる場合について説明する。 しかし,EJB体系は,アプリケーション組立てがそのエンタプライズビーンのすべて又はいくつかの配備の後に実行される場合を排除しない。
アプリケーション組立て者は,エンタプライズBeansを使用するアプリケーションを組み立てる領域専門家とする。 アプリケーション組立て者は,エンタプライズBeanの配備記述子及びエンタプライズBeanのクライアントビュー契約に従って作業する。 組立て者は,エンタプライズBeansのホームインタフェース及びコンポネントインタフェースが提供する機能に精通していなければならないが,エンタプライズBeansの実装について知る必要はない。
配備者は,Bean提供者又はアプリケーション組立て者によって提供された一つ以上のejb-jarファイルを受け取り,そのejb-jarファイルに含まれるエンタプライズビーンをある特定の操作環境に配備する。 この操作環境は,ある特定のEJBサーバまたはコンテナを含む。
配備者は,Bean提供者によって宣言されたすべての外部依存性を解決しなければならず(例えば,配備者はエンタプライズビーンによって使用されるすべての資源マネージャ接続ファクトリが,その操作環境中に存在することを確認して,配備者はそれらを配備記述子で宣言された資源マネージャ接続ファクトリの参照に結び付けなければならない。),及びアプリケーション組立て者によって定義されたアプリケーション組立て指示に従わねばならない。 配備者の役割を演じるために,配備者はEJBコンテナ提供者によって提供されるツールを使用する。
配備者の出力は,目標とする操作環境に合わせ込まれ,及びある特定のEJBコンテナに配備されたエンタプライズビーン(又はエンタプライズビーンを含む組み立てられたアプリケーション)とする。
配備者は,ある特定の操作環境の専門家であって,エンタプライズBeansの配備に責任をもつ。 例えば,配備者は,エンタプライズビーンが配備される操作環境に存在する利用者グループと利用者アカウントに対するアプリケーション組立て者によって定義されるセキュリティ役割の対応づけに責任をもつ。
配備者は,配備作業を実行するためにEJBコンテナ提供者によって提供されるツールを使用する。 この配備過程は,通常は2段階とする。
場合によって,認定配備者は,その配備におけるエンタプライズBeansのビジネスロジックを合わせ込んでよい。 この配備者は,エンタプライズBeanのビジネスメソッドを包み込む比較的単純なアプリケーションコードを記述するために,通常はコンテナツールを使用する。
EJBサーバ提供者は,分散トランザクション管理,分散オブジェクト及びその他の低水準システムレベルサービス領域の専門家とする。 通常のEJBサーバ提供者は,OS製造元,ミドルウェア製造元又はデータベース製造元とする。
現在のEJB体系では,EJBサーバ提供者役割及びEJBコンテナ提供者役割が同じ製造元であると仮定している。 従って,EJBサーバ提供者に対するインタフェース要件は何も定義しない
EJBコンテナ提供者(略してコンテナ提供者)は,次を提供する。
エンタプライズビーンの観点からは,コンテナは目標の操作環境の一部とする。 コンテナ実行時は,一緒に配備されたエンタプライズビーンに,トランザクション,セキュリティ管理,遠隔クライアントのネットワーク分散,資源の拡大縮小可能な管理,及び管理可能なサーバプラットフォームの一部として一般的に要求される他のサービスを提供する。
EJB体系によって定義された"EJBコンテナ提供者の責任"は,EJBコンテナ及びEJBサーバの実装の要件を意味する。 EJB規定はEJBコンテナとEJBサーバの間のインタフェースを設計しないので,EJBコンテナとEJBサーバの間で必要な機能の実装の分割方法は製造元に任されている。
コンテナ提供者の専門技術は,システムレベルプログラムであり,いくつかのアプリケーション領域の専門技術と結び付く可能性がある。 コンテナ提供者の焦点は,EJBサーバに統合された,拡大縮小可能で,安全で,トランザクション可能なコンテナの開発とする。 コンテナ提供者は,エンタプライズBeanとコンテナの間の単純で標準的なAPIを提供することで,基礎となるEJBサーバの特性からエンタプライズBeanを分離させる。 このAPIは,エンタプライズJavaBeansコンポネント契約とする。
コンテナ管理者は,通常は取り付けられたエンタプライズBeanコンポーネントの版管理をサポートする。 例えば,コンテナ提供者は,既存のクライアントを無効にせずに,又は既存のエンタプライズBeanオブジェクトを失わないで,エンタプライズBeanクラスを更新可能にしてもよい。
コンテナ提供者は,通常はシステム管理者がコンテナ及び実行時にコンテナで動作するBeansを監視及び管理するツールを提供する。
システム管理者は,EJBサーバとEJBコンテナを含む組織の計算及びネットワーク基盤の構成と管理に責任をもつ。 システム管理者は,配備されたエンタプライズビーンアプリケーションが実行時に正常かを監視することにも責任をもつ。
EJB体系は,システム運用と管理についての契約を定義しない。 システム管理者は,通常はEJBサーバ提供者及びEJBコンテナ提供者によって提供される実行時監視及び管理ツールを使用する。
Aardvark社は,アプリケーション統合を専門としている。 Aardvark社は,JavaTMアプリケーションがERPシステムの給与計算管理モジュールにアクセスできるようにする一般的な給与計算アクセスコンポーネントである,AardvarkPayrollエンタプライズビーンを開発した。 Aardvark社は,AardvarkPayrollエンタプライズビーンを標準のejb-jarファイルにパッケージ化して,合わせ込み可能なエンタプライズビーンとしてアプリケーション開発者に販売した。 EJB体系の点からは,Aardvark社はAardvarkPayrollビーンのビーン提供者とする。
Wombat社は,Webアプリケーション開発会社とする。 Wombat社は,従業員のセルフサービスアプリケーションを開発している。 このアプリケーションにより,目標の企業の従業員が従業員記録情報にアクセス及び更新することができる。 このアプリケーションは,EmployeeService,EmployeeServiceAdmin,EmployeeRecordエンタプライズビーンを含んでいる。 EmployeeRecordビーンは,開発時に企業の既存の人間資源アプリケーションと統合することができるコンテナに管理される実体とする。 EJB体系の点からは,Wombat社はEmployeeService,EmployeeServiceAdmin,EmployeeRecordエンタプライズビーンのBean提供者とする。
従業員記録へのアクセスの提供に加えて,Wombat社は企業の給与計算システム及び年金計画システムへのアクセスも提供しようとしている。 給与計算へのアクセスを提供するために,Wombat社はAardvark社からAardvarkPayrollエンタプライズビーンをライセンスし,Wombatアプリケーションの一部として取り込んだ。 年金計画アクセスのための一般的なエンタプライズビーンが利用できないので,Wombat社は配備時に適切な年金計画エンタプライズビーンを開発しなければならないと決定した。 年金計画ビーンは,必要なアプリケーション統合手続きを実装し,及び年金計画ビーンは各Wombat社の顧客に固有になるだろう。
完全な解決策を提供するために,Wombat社は,エンタプライズビーンを起動し,クライアントにHTMLプレゼンテーションを生成するJava ServerPagesTM(JSP)のような,必要な従業員セルフサービスアプリケーションの非EJBコンポネントも開発した。 JSPページとエンタプライズビーンの両方は,Wombat社の顧客である多くの目標の企業に販売することを意図しているので,配備時に合わせ込み可能とする。
Wombatアプリケーションは,JARファイルの集合としてパッケージ化されている。 一つのejb-jarファイルは,Wombat社によって開発されたすべてのエンタプライズビーン及びAardvark社によって開発されたAardvarkPayrollエンタプライズビーンを含んでいる。 他のJARファイルは,JSPコンポネントのような非EJBアプリケーションコンポネントを含んでいる。 ejb-jarファイルは,エンタプライズビーンを組み合わせてアプリケーションにする方法を記述するアプリケーションの組立て指示を含む。 EJB体系の点からは,Wombat社はアプリケーション組立て者の役割を果たしている。
Acme社は,サーバソフトウェア製造元とする。 Acme社は,EJBサーバ及びEJBコンテナを開発している。 EJB体系の点からは,Acme社はEJBコンテナ提供者及びEJBサーバ提供者の役割を果たしている。
ABC社は,従業員に従業員記録,給与情報,及び年金計画情報をWeb経由でアクセス及び更新させたい。 この情報は,ABC社のERPシステムに保存されている。 ABC社は,Wombat社から従業員セルフサービスアプリケーションを購入する。 ABC社は,このアプリケーションを動作させるためにAcme社からEJBコンテナ及びEJBサーバを購入する。 ABC社の情報技術(IT)部門は,Wombat社のコンサルティングサービスの助けを得て,Wombat社のセルフサービスアプリケーションを配備する。 EJB体系の点からは,ABC社のIT部門及びWombat社のコンサルティングサービスは配備者の役割を果たしている。 ABC社のIT部門は,ABC社の既存の年金計画アプリケーションにWombat社のアプリケーションがアクセスできるようにABCPensionPlanエンタプライズビーンも開発する。
ABC社のITスタッフは,Acme社の製造物を構成し,それをABC社の既存のネットワーク基盤と統合することに責任をもつ。 そのITスタッフは,従業員のアカウントの追加及び削除のようなセキュリティ管理,給与計算部門のようなユーザグループへの従業員の追加,家のコンピュータからのVPN接続で従業員を確認するデジタル証明書からABC社のイントラネットで使用されるKerberosユーザアカウントへの割り当てのような作業に責任をもつ。 ABC社のITスタッフは,Wombat社のアプリケーションが実行時に正常かについても監視し,そのアプリケーションが挙げる任意のエラー状態の処理にも責任をもつ。 EJB体系の点からは,ABC社のITスタッフはシステム管理者の役割を果たしている。
次の図は,さまざまなEJB役割の製造物を示している。
次の表に,このシナリオに含まれる組織のEJB役割を要約する。
組織 | EJB役割 |
---|---|
Aardvark社 | Bean提供者 |
Wombat社 | Bean提供者 アプリケーション組立て者 |
Acme社 | EJBコンテナ提供者 EJBサーバ提供者 |
ABC社のITスタッフ | 配備者 (ABCPensionPlanの)Bean提供者 システム管理者 |