Contexts and Dependency Injection 1.2 の動作の変更
Contexts and Dependency Injection (CDI) 1.2 実装には、CDI 1.0 からマイグレーションされたアプリケーションが異なる動作をしたり、CDI 1.2 で失敗したりする可能性がある動作の変更がいくつか含まれています。
動作の変更を考慮して、サーバー・インスタンスごとに、CDI 1.0 と CDI 1.2 フィーチャー実装のいずれを使用するかを選択できます。必要な動作が CDI 1.2 フィーチャーにのみ含まれている場合、CDI 1.2 フィーチャーを使用する必要があります。既存のアプリケーションが CDI 1.2 フィーチャーの動作変更で悪影響を受ける可能性がある場合、CDI 1.0 フィーチャーを使用すれば、そのアプリケーションの既存の動作が保持されます。CDI 1.0 と CDI 1.2 のフィーチャーは両立しないため、同じサーバーで CDI 1.0 と CDI 1.2 の両方のフィーチャーを使用することはできません。両方のフィーチャーを構成した場合、サーバーで構成エラーが生成されます。
CDI 1.0 フィーチャーは、CDI の Apache OpenWebBeans 実装に基づいて作成されています。CDI 1.2 フィーチャーは、CDI の Weld 実装に基づいて作成されています。2 つの実装の差異のため、動作の変更が生じています。
会話 ID CID
CDI 1.0 実装では、CID はグローバルに固有です。CDI 1.2 では、HTTP セッションごとに固有です。この動作は CDI 仕様に準拠しており、Weld によって選択される規則です。グローバルに固有の CID を取得するには、会話の開始時に、Conversation.begin を呼び出して、CID を指定する必要があります。
beans.xml ファイルのスキーマの参照
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"
無効なスキーマを使用している場合、サーバーは例外エラーを示します。org.jboss.weld.xml.disableValidating=true JVM プロパティーを設定することで、beans.xml ファイルの検証をオフにすることができます。このプロパティーにより、エラーも生成されなくなります。beans.xml ファイルでデコレーターまたはインターセプターが指定されている場合、有効なスキーマを使用する必要があります。これが満たされていない場合、デコレーターおよびインターセプターは正しくインスタンス化されません。暗黙的 Bean アーカイブ
CDI 1.2 実装は、2 つの異なるタイプの Bean アーカイブ (明示的と暗黙的) を定義しています。
- バージョン番号が 1.1 (以降) で、bean-discovery-mode が all
- バージョン番号なし
- 空ファイル
暗黙的 Bean アーカイブは、その他のすべてのアーカイブであり、仕様のセクション 2.5.1『Bean defining annotations』で定義されている Bean 定義アノテーションを使用した 1 つ以上の Bean クラスまたは 1 つ以上のセッション Bean が含まれています。仕様の『Contexts and Dependency Injection for the Java™ EE platform』を参照してください。
<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="all"
version="1.1">
<cdi12 enableImplicitBeanArchives="false"/>
このプロパティーを false に設定すると、beans.xml ファイルがないアーカイブが暗黙的 Bean アーカイブになることがなくなります。このプロパティーを false に設定すると、起動時のパフォーマンスが改善されます。