検索

5.5. CDI アプリケーションの変更

download PDF

JBoss EAP 7.2 には CDI 2.0 のサポートが含まれています。このため、CDI 1.0 または CDI 1.2 を使って作成されたアプリケーションを JBoss EAP 7.2 に移行すると、一部の動作が変更になる可能性があります。ここでは、CDI 1.2 および CDI 2.0 の変更内容のいくつかを簡単に取り上げます。

Weld および CDI 2.0 についての追加情報は、以下の参照先で確認できます。

Bean アーカイブ

CDI によってスキャンされ、bean クラスを検索および処理するようにするため、有効な bean の bean クラスを bean アーカイブにデプロイする必要があります。

CDI 1.0 では、アプリケーションクライアント、EJB、またはライブラリー JAR の META-INF/ ディレクトリーに beans.xml ファイルが含まれた場合や、WAR の WEB-INF/ ディレクトリーに beans.xml ファイルが含まれた場合には、アーカイブが 明示的 bean アーカイブとして定義されました。

CDI 1.1 には 暗黙的 bean アーカイブが導入されました。これは bean を定義するアノテーションを持つ bean クラスが 1 つ以上またはセッション bean が 1 つ以上含まれるアーカイブです。暗黙的な bean アーカイブは CDI によってスキャンされ、型検索中に bean を定義するアノテーションを持つクラスのみが検出されます。詳細は、『JSR 365: Contexts and Dependency Injection for Java 2.0』の「Type and Bean Discovery」を参照してください。

bean アーカイブは allannotated、または none の bean 検索モードを持ちます。バージョンのない beans.xml ファイルが含まれる bean アーカイブは、デフォルトの bean 検索モード all を持ちます。バージョンが 1.1 以上の beans.xml ファイルが含まれる bean アーカイブは bean-discovery-mode 属性を指定する必要があります。この属性のデフォルト値は annotated です。

以下の場合、アーカイブは bean アーカイブではありません。

  • bean-discovery-modenone である beans.xml ファイルが含まれる場合。
  • beans.xml ファイルがない CDI 拡張が含まれる場合。

以下の場合、アーカイブは 明示的 bean アーカイブになります。

  • バージョン番号が 1.1 以上で、bean-discovery-modeallbeans.xml ファイルがアーカイブに含まれる場合。
  • アーカイブにバージョン番号のない beans.xml ファイルが含まれる場合。
  • アーカイブに空の beans.xml ファイルが含まれる場合。

以下の場合、アーカイブは 暗黙的 bean アーカイブになります。

  • アーカイブに beans.xml ファイルが含まれなくても、bean を定義するアノテーションを持つ bean クラスが 1 つ以上含まれるか、セッション bean が 1 つ以上含まれる場合。
  • アーカイブに bean-discovery-modeannotated beans.xml ファイルが含まれる場合。

CDI 1.2 は bean を定義するアノテーション を以下に限定します。

  • @ApplicationScoped@SessionScoped@ConversationScoped、および @RequestScoped アノテーション
  • その他すべての通常スコープタイプ
  • @Interceptor および @Decorator アノテーション
  • @Stereotype アノテーションが付けられた stereotype アノテーションすべて
  • @Dependent スコープアノテーション

bean アーカイブの詳細は、『JSR 365: Contexts and Dependency Injection for Java 2.0』の「Bean Archives」を参照してください。

会話解決の明確化

会話コンテキストのライフサイクルは、CDI Specification Issue CDI-411 で説明されているサーブレット仕様との競合を回避するために、CDI 1.2 で変更されました。会話スコープはすべてのサーブレットリクエストの間はアクティブで、他のサーブレットやサーブレットフィルターによるリクエストボディーや文字エンコードの設定を妨害してはなりません。詳細は、『JSR 365: Contexts and Dependency Injection for Java 2.0』の「Conversation context lifecycle in Java EE」を参照してください。

オブザーバー解決

イベント解決は、CDI 1.2 で部分的に書き直されました。CDI 1.0 では、オブザーバーメソッドにすべてのイベント修飾子がある場合にイベントがオブザーバーメソッドに送信されます。CDI 1.2 では、オブザーバーメソッドにイベント修飾子がない場合やイベント修飾子のサブセットがある場合にイベントがオブザーバーメソッドに送信されます。詳細は、『JSR 365: Contexts and Dependency Injection for Java 2.0』の「Observer resolution」を参照してください。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.