@TargetSE(valueSE={TYPESE,METHODSE,FIELDSE}) @RetentionSE(valueSE=RUNTIMESE) @DocumentedSE @NormalScope(passivating=true) @InheritedSE public @interface ConversationScoped
Bean が会話スコープであることを指定します。
ConversationScoped
は、仕様で必要とされる組み込みの会話コンテキストに関連付ける必要がありますが、サードパーティの拡張機能は、それを独自のコンテキストに関連付けることもできます。以下で説明する動作は、組み込みの会話コンテキストにのみ関連しています。
会話スコープがアクティブです:
会話コンテキストが初期化されると修飾子 @Initialized(ConversationScoped.class)
を持つイベントが発生し、会話が破棄されると修飾子 @Destroyed(ConversationScoped.class)
を持つイベントが発生します。イベントペイロードは次のとおりです。
ServletRequest
、または java.lang.Object
。会話コンテキストは、特定の会話に関連付けられた状態へのアクセスを提供します。すべてのサーブレットリクエストには、関連する会話があります。この関連付けは、次のルールに従ってコンテナーによって自動的に管理されます。
web.xml
にマッピングでき、会話がサーブレットリクエストに関連付けられているときにユーザーが変更できるようにします。このフィルターがアプリケーションの web.xml
にマップされていない場合、サーブレットリクエストに関連付けられた会話は、リクエストの開始時に決定されてから、Web アプリケーションのサーブレットの service()
メソッドを呼び出し、サーブレットフィルターの doFilter()
メソッドを呼び出します。Web アプリケーションであり、コンテナーが Web アプリケーション内の ServletRequestListener
または AsyncListener
を呼び出す前。会話は、一時的または長時間実行の 2 つの状態のいずれかになります。
Conversation.begin()
を呼び出すことによって長時間実行とマークされる場合があります Conversation.end()
を呼び出すことにより、長時間実行される会話に一時的なマークを付けることができます。長時間実行されるすべての会話には、文字列値の一意の識別子があります。これは、会話が長時間実行とマークされたときにアプリケーションによって設定されるか、コンテナーによって生成されます。
現在のサーブレットリクエストに関連付けられている会話がサーブレットリクエストの終了時に一時的な状態にある場合、破棄され、会話コンテキストも破棄されます。
現在のサーブレットリクエストに関連付けられた会話が、サーブレットリクエストの終了時に長時間実行状態にある場合、その会話は破棄されません。リクエストに関連付けられた長時間実行される会話は、会話の一意の識別子を含む cid
という名前のリクエストパラメーターを使用して、任意のサーブレットリクエストに伝播できます。この場合、アプリケーションはこのリクエストパラメーターを管理する必要があります。
現在のサーブレットリクエストが JSF リクエストであり、会話が長時間実行状態にある場合、次のルールに従って伝播されます。
NavigationHandler
に起因するリダイレクト) になるリクエストに関連付けられた長時間実行される会話コンテキストは、結果として生じる非フェースリクエストと、同じ URL への他の後続のリクエストに自動的に伝播されます。これは、会話の一意の識別子を含む cid
という名前のリクエストパラメーターを使用して実現されます。 会話がサーブレットリクエストに伝搬されない場合、または conversationPropagation
という名前のリクエストパラメーターに値 none
がある場合、リクエストは新しい一時的な会話に関連付けられます。長時間実行されるすべての会話は、特定の HTTP サーブレットセッションに限定され、セッションの境界を越えることはできません。次の場合、伝播された長時間実行される会話を復元して、リクエストに再度関連付けることはできません。
service()
メソッドが完了した後、現在のセッション中に作成されたすべての長時間実行会話コンテキストが破棄されます。Conversation
, NonexistentConversationException
, BusyConversationException
Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.