インターフェース CallableProcessingInterceptor
- すべての既知の実装クラス:
TimeoutCallableProcessingInterceptor
public interface CallableProcessingInterceptor
アプリケーションの代わりに
AsyncTaskExecutor
を使用して Callable
SE を実行することで同時結果が取得される、同時リクエスト処理をインターセプトします。CallableProcessingInterceptor
は、非同期スレッドでの Callable
タスクの呼び出しの前後、およびコンテナースレッドからのタイムアウト / エラー時に、またはタイムアウトやネットワークエラーを含む何らかの理由で完了した後に呼び出されます。
原則として、インターセプターメソッドによって例外が発生すると、コンテナーにディスパッチして例外インスタンスを同時結果として使用することにより、非同期処理が再開されます。このような例外は、HandlerExceptionResolver
メカニズムを介して処理されます。
handleTimeout
メソッドは、処理の再開に使用する値を選択できます。
- 導入:
- 3.2
- 作成者:
- Rossen Stoyanchev, Rob Winch
フィールドサマリー
メソッドのサマリー
修飾子と型メソッド説明default <T> void
afterCompletion
(NativeWebRequest request, CallableSE<T> task) タイムアウトやネットワークエラーなどの何らかの理由で非同期処理が完了したときに、コンテナースレッドから呼び出されます。default <T> void
beforeConcurrentHandling
(NativeWebRequest request, CallableSE<T> task) Callable
が並行処理のためにサブミットされた元のスレッドで並行処理の開始前に呼び出されます。default <T> ObjectSE
handleError
(NativeWebRequest request, CallableSE<T> task, ThrowableSE t) Callable
タスクが完了する前に非同期リクエストを処理しているときにエラーが発生したときに、コンテナースレッドから呼び出されます。default <T> ObjectSE
handleTimeout
(NativeWebRequest request, CallableSE<T> task) Callable
タスクが完了する前に非同期リクエストがタイムアウトしたときに、コンテナースレッドから呼び出されます。default <T> void
postProcess
(NativeWebRequest request, CallableSE<T> task, ObjectSE concurrentResult) Callable
がCallable
が実行される非同期スレッドで結果を生成した後に呼び出されます。default <T> void
preProcess
(NativeWebRequest request, CallableSE<T> task) Callable
が実行される非同期スレッドで同時取り扱いを開始した後とCallable
の実際の呼び出しの前に呼び出されます。
フィールドの詳細
RESULT_NONE
このインターセプターによって結果が決定されておらず、後続のインターセプターにチャンスを与えることを示す定数。RESPONSE_HANDLED
レスポンスがこのインターセプターによって結果なしで処理され、それ以上インターセプターが呼び出されないことを示す定数。
メソッドの詳細
beforeConcurrentHandling
default <T> void beforeConcurrentHandling(NativeWebRequest request, CallableSE<T> task) throws ExceptionSE Callable
が並行処理のためにサブミットされた元のスレッドで並行処理の開始前に呼び出されます。これは、
Callable
SE を呼び出す直前に現在のスレッドの状態をキャプチャーできます。状態がキャプチャーされると、preProcess(NativeWebRequest, Callable)
の新しいThread
SE に転送できます。Spring Security の SecurityContextHolder の状態をキャプチャーし、それを新しいスレッドに移行することは、これが役立つ場所の具体例です。デフォルトの実装は空です。
- パラメーター:
request
- 現在のリクエストtask
- 現在の非同期リクエストのタスク- 例外:
ExceptionSE
- エラーの場合
preProcess
Callable
が実行される非同期スレッドで同時取り扱いを開始した後とCallable
の実際の呼び出しの前に呼び出されます。デフォルトの実装は空です。
- パラメーター:
request
- 現在のリクエストtask
- 現在の非同期リクエストのタスク- 例外:
ExceptionSE
- エラーの場合
postProcess
default <T> void postProcess(NativeWebRequest request, CallableSE<T> task, @Nullable ObjectSE concurrentResult) throws ExceptionSE Callable
がCallable
が実行される非同期スレッドで結果を生成した後に呼び出されます。このメソッドは、Callable
が処理を終了するタイミングに応じて、afterTimeout
またはafterCompletion
よりも後に呼び出される場合があります。デフォルトの実装は空です。
- パラメーター:
request
- 現在のリクエストtask
- 現在の非同期リクエストのタスクconcurrentResult
- 並行処理の結果。Callable
が例外を発生させた場合はThrowable
SE になる可能性がある- 例外:
ExceptionSE
- エラーの場合
handleTimeout
Callable
タスクが完了する前に非同期リクエストがタイムアウトしたときに、コンテナースレッドから呼び出されます。実装は、Callable
SE が時間内に返さなかった値の代わりに使用するException
SE を含む値を返す場合があります。デフォルトの実装は常に
RESULT_NONE
を返します。- パラメーター:
request
- 現在のリクエストtask
- 現在の非同期リクエストのタスク- 戻り値:
- 同時結果値 ; 値が
RESULT_NONE
またはRESPONSE_HANDLED
以外の場合、並行処理が再開され、後続のインターセプターは呼び出されません - 例外:
ExceptionSE
- エラーの場合
handleError
default <T> ObjectSE handleError(NativeWebRequest request, CallableSE<T> task, ThrowableSE t) throws ExceptionSE Callable
タスクが完了する前に非同期リクエストを処理しているときにエラーが発生したときに、コンテナースレッドから呼び出されます。実装は、Callable
SE が時間内に返さなかった値の代わりに使用するException
SE を含む値を返す場合があります。デフォルトの実装は常に
RESULT_NONE
を返します。- パラメーター:
request
- 現在のリクエストtask
- 現在の非同期リクエストのタスクt
- リクエスト処理中に発生したエラー- 戻り値:
- 同時結果値 ; 値が
RESULT_NONE
またはRESPONSE_HANDLED
以外の場合、並行処理が再開され、後続のインターセプターは呼び出されません - 例外:
ExceptionSE
- エラーの場合- 導入:
- 5.0
afterCompletion
タイムアウトやネットワークエラーなどの何らかの理由で非同期処理が完了したときに、コンテナースレッドから呼び出されます。デフォルトの実装は空です。
- パラメーター:
request
- 現在のリクエストtask
- 現在の非同期リクエストのタスク- 例外:
ExceptionSE
- エラーの場合