Contexts and Dependency Injection (CDI) 1.1 仕様では、暗黙的 Bean ディスカバリー・モードが導入されました。そのため、WebSphere Application Server での Java Platform, Enterprise Edition (Java EE) 6 CDI 1.0 実装とは動作とパフォーマンスが変更されています。暗黙的 Bean とは、Bean 定義アノテーションまたは 1 つ以上のセッション Bean のいずれかを持つ 1 つ以上の Bean クラスが含まれているアーカイブです。
Java EE 6 CDI 1.0 から Java EE 7 CDI 1.1 以降に移行する際には、beans.xml ファイルがない場合でも、暗黙的 Bean ディスカバリーのため、すべての WAR および JAR ファイルがランタイムによってスキャンされます。このスキャンは、Java EE 6 CDI 1.0 からの振る舞いの変更です。Java EE 6 CDI 1.0 では、beans.xml ファイルが欠落している場合、アプリケーションでアーカイブはスキャンされません。
この規則により、beans.xml ファイルがないすべての WAR および JAR ファイル内の以下の Bean 定義アノテーションおよび Enterprise JavaBeans (EJB) セッション Bean にフラグを立てます。
バイナリー・アプリケーション・スキャナーは、@NormalScope というアノテーションが付けられているアノテーション・クラスにフラグを立てます。Eclipse ベースのアプリケーション・ソース・スキャナーとは異なり、通常スコープ・タイプ・アノテーションが付けられているクラスは検出されません。このようなアノテーションには、明示的または暗黙的にそれらのアノテーションを使用している beans.xml ファイルのスコープ外でフラグが立てられる可能性があります。
WAR または JAR レベルでの実行時にこの CDI の振る舞いの変更を無効にするには、以下の例に示すように、Bean ディスカバリー・モードを none に設定した beans.xml ファイルを追加します。
|
Liberty では、以下のプロパティーを server.xml ファイルに追加することでもこの動作を無効にできます。
|
Java EE 7 CDI 1.2 実装について詳しくは、 Contexts and Dependency Injection 1.2 での振る舞いの変更を参照してください。