Contexts and Dependency Injection (CDI) 1.1 仕様では、暗黙的 Bean ディスカバリー・モードが導入されました。そのため、WebSphere Application Server での Java Platform, Enterprise Edition (Java EE) 6 CDI 1.0 実装とは動作とパフォーマンスが変更されています。
この規則により、プロジェクトに beans.xml ファイルが含まれていない場合に WEB-INF または META-INF フォルダーにフラグを立てます。 Java EE 6 CDI 1.0 から Java EE 7 CDI 1.1 以降に移行する際には、beans.xml ファイルがない場合でも、暗黙的 Bean ディスカバリーのため、すべての WAR および JAR ファイルがランタイムによってスキャンされます。 これにより、以下を使用可能にすると、Bean ディスカバリーのパフォーマンスが低下する可能性があります。 cdi-1.2 Liberty上のフィーチャー。
Java EE 7 では、beans.xml ファイルが定義されていない場合、ランタイムは Bean 定義アノテーションを自動的にスキャンします。この動作を無効にするには、以下の例に示すように、Bean ディスカバリー・モードを none に設定した beans.xml ファイルを追加します。
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
bean-discovery-mode="none" version="1.1">
</beans>
Liberty では、以下のプロパティーを server.xml ファイルに追加することでもこの動作を無効にできます。
<cdi12 enableImplicitBeanArchives="false"/>
WebSphere Application Server traditional では、以下の方法でこの動作を無効にできます。
enableImplicitBeanArchives カスタム・プロパティーを false に設定すると、beans.xml ファイルなどの Bean 記述子を含まないアーカイブに対する CDI 関連のアノテーション・スキャン・ステップが無効になります。
enableCDI カスタム・プロパティーを false に設定すると、すべての CDI ステップが無効になります。サーバー・レベルで CDI が必要ない場合は、この値を false に設定してください。WebSphere traditional でのこれらのプロパティーの設定について詳しくは、 Custom Properties for improving application startup in WebSphere Application Server の資料を参照してください。
Java EE 7 CDI 1.2 実装について詳しくは、 Contexts and Dependency Injection 1.2 での振る舞いの変更を参照してください。