Contexts and Dependency Injection (CDI) と EJB コンテナーの統合

CDI 仕様は、コンテキスト・ライフサイクル管理を使用して EJB コンポーネント・モデルを強化します。

EJB 仕様と CDI の関係

EJB 仕様は、マルチユーザー環境でトランザクション・リソースにアクセスするアプリケーション・コンポーネントのプログラミング・モデルを定義します。実行時に EJB コンテナーで強制されるアノテーションおよび XML デプロイメント記述子を使用して、ロール・ベースのセキュリティー、トランザクション区分、並行性、スケーラビリティーなどの考慮事項を宣言的に指定します。EJB コンポーネントはステートフルの可能性がありますが、本質的にコンテキスト依存ではありません。

依存関係注入を使用して、以下のセッション Bean インスタンスが取得されます。
  • コンテキスト
  • ライフサイクル・コンテキストにバインド
  • ライフサイクル・コンテキストで起動される他のインスタンスで使用可能
  • コンテナーは必要に応じてインスタンスを作成
  • コンテナーは、コンテキストが終了するとインスタンスを削除

WebSphere® Application Server traditional CDI コンテナーは、コンテキスト・インスタンスではないインスタンスでも、すべてのセッションおよびメッセージ駆動型 Bean インスタンスに対して依存関係注入を実行します。WebSphere Application Server CDI は、エンタープライズ Bean 内での CDI Bean の注入、および CDI Bean 内でのエンタープライズ Bean の注入をサポートします。

使用法

ベスト・プラクティス ベスト・プラクティス: エンタープライズ Bean を注入する際は以下のメソッドを使用します。bprac
  • ローカル・セッション Bean のコンテキスト注入の場合は、@Inject メソッドを使用します。
  • リモート・セッション Bean の場合は、@EJB メソッドを使用します。
CDI 内での @EJB メソッドの使用について、以下に例を示します。

以下のように、非コンテキスト注入で EJB を使用可能にするプロデューサーを定義します。

		@Produces @EJB PaymentService paymentService;	
他の CDI Bean で注入されたタイプを次のように取り込みます。
@Inject PaymentService myPaymentService

実行上の考慮事項

インターセプター・バインディングと装飾機能エンタープライズ Bean を使用して、CDI スタイルのインターセプターを定義できます。インターセプターは、@Interceptors メソッドを使用するか ejb-jar.xml ファイルで宣言されます (これらはインターセプターの前に呼び出されて、インターセプター・バインディングを使用して宣言されます)。インターセプターは、装飾機能の前に呼び出されます。

有効範囲から出た結果、EJB コンテナーのコンテキスト @Injected インスタンスが破棄されたときに、アプリケーションによる remove メソッドの直接呼び出しを通じて、基礎となる EJB コンテナーがまだ除去されていなかった場合、WebSphere Application Server traditional CDI コンテナーはステートフル・セッション Bean を除去します。

製品の CDI コンテナーは、以下のインスタンス内のステートフル・セッション Bean を削除します。
  • @Inject メソッドを使用してコンテキスト注入インスタンスを作成し、EJB コンテナー内のそのインスタンスが、スコープ外になった結果として破棄された場合。
  • 基礎となる EJB コンテナーが、アプリケーションによる remove メソッドの直接呼び出しによってまだ削除されていなかった場合。

また、CDI Bean のスコープおよび状態の伝搬も考慮する必要があります。要求およびアプリケーションのスコープの CDI Bean は、Web コンテナーおよび EJB コンテナー全体で、それぞれのコンテキストで状態を保持します。例えば、ステートフル・セッション・エンタープライズ Bean のビジネス・メソッドが同じ要求スコープの Bean にアクセスする場合、サーブレットに注入されている要求スコープの CDI Bean はその状態を保持します。


トピックのタイプを示すアイコン 概念トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cweb_cdi_ejb
ファイル名:cweb_cdi_ejb.html