ナビゲーションリンクをスキップ

Jakarta EE 8 仕様 API

パッケージ javax.enterprise.context

スコープとコンテキストに関連するアノテーションとインターフェース。

参照先: 説明

パッケージ javax.enterprise.context の説明

スコープとコンテキストに関連するアノテーションとインターフェース。

スコープ型は、@Scope または @NormalScope アノテーションが付けられた Java アノテーションです。Bean のスコープは、インスタンスのライフサイクルと可視性を決定します。特に、スコープは以下を決定します。

組み込みスコープ

次の組み込みスコープが提供されています: @Dependent@RequestScoped@ConversationScoped@SessionScoped@ApplicationScoped@Singleton

コンテナーは、各組み込みスコープの Context インターフェースの実装を提供します。組み込みのリクエスト、セッション、アプリケーションコンテキストは、サーブレット、Web サービス、Jakarta Enterprise Bean 呼び出しをサポートします。組み込みの会話コンテキストは JSF リクエストをサポートします。

他の種類の呼び出しの場合、移植可能な拡張機能により、組み込みスコープの一部またはすべてに対してカスタムコンテキストオブジェクトを定義できます。例: サードパーティの Web アプリケーションフレームワークは、組み込みの会話スコープに会話コンテキストオブジェクトを提供する場合があります。

組み込みスコープに関連付けられたコンテキストは、Jakarta Enterprise Bean ローカルビジネスメソッドの呼び出しを含む、ローカルの同期 Java メソッド呼び出し全体に伝播します。コンテキストは、リモートメソッド呼び出し全体、または JMS メッセージリスナーや Jakarta Enterprise Bean タイマーサービスタイムアウトなどの非同期プロセスに伝播しません。

通常のスコープと疑似スコープ

ほとんどのスコープは通常のスコープです。通常のスコープは @NormalScope を使用して宣言されます。Bean に通常のスコープがある場合、特定のスレッドで実行されるすべてのクライアントは、Bean の同じコンテキストインスタンスを参照します。このインスタンスは、Bean の現在のインスタンスと呼ばれます。通常のスコープ型のコンテキストオブジェクトの操作 Context.get(javax.enterprise.context.spi.Contextual) は、常に指定された Bean の現在のインスタンスを返します。

通常のスコープではないスコープは、疑似スコープと呼ばれます。疑似スコープは @Scope を使用して宣言されます。疑似スコープの場合、現在のインスタンスの概念は明確に定義されていません。同じスレッドで実行されている異なるクライアントは、Bean の異なるインスタンスを参照する場合があります。@Dependent 疑似スコープの極端なケースでは、すべてのクライアントが Bean の独自のプライベートインスタンスを持っています。

@Dependent および @Singleton 疑似スコープを除いて、すべての組み込みスコープは通常のスコープです。

コンテキストに基づいた、注入された参照の有効性

プログラムによるルックアップを介してコンテナーから取得された Bean への参照は、コンテキスト参照と呼ばれます。通常のスコープを持つ Bean のコンテキスト参照は、Bean の現在のインスタンスを参照します。Bean のコンテキスト参照は、特定の期間のみ有効です。アプリケーションは無効な参照のメソッドを呼び出すべきではありません。

Bean のコンテキスト参照の有効性は、Bean のスコープが通常のスコープか疑似スコープかによって異なります。

依存関係の注入によってコンテナーから取得された Bean への参照は、注入された参照と呼ばれる特別な種類のコンテキスト参照です。挿入された参照の有効性には追加の制限が適用されます。

関連事項:
javax.enterprise.inject

Jakarta EE 8 仕様 API

Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.