Contexts and Dependency Injection (CDI)

JBoss Weld に基づいた JSR 346 実装である、Java™ EE プラットフォームの Contexts and Dependency Injection 1.2 (CDI 1.2) について説明します。

CDI は、モジュール内の beans.xml ファイルの存在によって、または JSR 346 仕様に定義されている Bean 定義アノテーションによってアプリケーション内でアクティブ化されます。. beans.xml ファイルは、Web アーカイブ (WAR) の WEB-INF ディレクトリーまたはその他のタイプのアーカイブの META-INF ディレクトリーにあります。コンテナーがアクティブ化されると、以下のようなサービスを提供します
  • コンテキスト管理
  • タイプ・セーフな依存関係注入: 必要に応じて CDI 管理対象 Bean がインスタンス化され、注入されます。
  • 装飾機能。これは、1 つ以上の Bean インターフェースを実装し、また、ビジネス・ロジックを含むことができます。 装飾機能は、デフォルトでは無効になっています。Bean ごとに複数の装飾機能を用意して、beans.xml ファイルでその順序を定義することができます。装飾機能を使用可能にするには、beans.xml または @Priority を使用します。
  • インターセプター・バインディング: インターセプター (beans.xml ファイル内で手動で有効にするか、@Priority を使用してグローバルに有効にする) は、インターセプター・バインディング・タイプを使用してバインドされます。
  • イベント・モデル
  • 式言語 (EL) を使用した JavaServer Faces (JSF) ファイルおよび JavaServer Pages (JSP) ファイルへの組み込み
  • 注入と、インターセプターの使用をサポートする JavaEE コンポーネント・クラス

JSR 299 および JSR 330 用の仕様関連 API クラス、および Apache OpenWebBeans に基づく IBM® 修正実装クラスは、アプリケーション・サーバー・ランタイム環境とともにパッケージ化されます。

製品の CDI 実装は Apache OpenWebBean に基づいていますが、サーバー・ランタイムとの統合をサポートするために、以下の変更および追加が行われています。
  • WebSphere® Application Server traditional 内の、注入可能コンポーネントをサポートする他の Java Platform, Enterprise Edition (Java EE) コンテナーとの統合。
  • WebSphere Application Server traditional バイトコード・スキャナーを使用する ScannerService 実装。
  • EJB タイプを判別するための、製品の Enterprise JavaBeans (EJB) メタデータの直接使用。
  • CDI アプリケーション用のサーブレット・リスナー、フィルター、インターセプターの自動登録。これにより、各アプリケーションでこれらを追加する必要がなくなりました。
  • ResourceInjectionService、TransactionService、およびフェイルオーバー・サービスなどの多くの OpenWebBeans サービス・プログラミング・インターフェース (SPI) の、製品固有の実装。
重要: コンテナー管理トランザクションおよびセキュリティーは、CDI によって提供されません。
トラブルの回避 (Avoid trouble) トラブルの回避 (Avoid trouble): CDI は、デフォルトの WebSphere Application Server traditional クラス・ローダー・ポリシーである Class loader for each WAR file in application でのみサポートされ、代替の single class loader for application setting ではサポートされません。gotcha

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



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