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

Jakarta EE Platform API v9.0.0

パッケージ jakarta.enterprise.context

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

参照先: 説明

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

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

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

組み込みスコープ

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

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

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

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

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

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

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

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

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

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

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

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

関連事項:
jakarta.enterprise.inject
ナビゲーションリンクをスキップ

Jakarta EE Platform API v9.0.0

Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.