インターフェース DeferredResultProcessingInterceptor
- すべての既知の実装クラス:
TimeoutDeferredResultProcessingInterceptor
public interface DeferredResultProcessingInterceptor
アプリケーションによって選択されたスレッドから
DeferredResult
が設定されるのを待機することによって同時結果が取得される同時リクエスト処理をインターセプトします(たとえば、何らかの外部イベントにレスポンスして)。DeferredResultProcessingInterceptor
は、非同期処理の開始前、DeferredResult
の設定後、タイムアウト / エラー発生時、タイムアウトやネットワークエラーなどの何らかの理由で完了した後に呼び出されます。
原則として、インターセプターメソッドによって例外が発生すると、コンテナーにディスパッチして例外インスタンスを同時結果として使用することにより、非同期処理が再開されます。このような例外は、HandlerExceptionResolver
メカニズムを介して処理されます。
handleTimeout
メソッドは、処理を再開するために DeferredResult
を設定できます。
- 導入:
- 3.2
- 作成者:
- Rossen Stoyanchev, Rob Winch
メソッドのサマリー
修飾子と型メソッド説明default <T> void
afterCompletion
(NativeWebRequest request, DeferredResult<T> deferredResult) タイムアウトやネットワークエラーなどの何らかの理由で非同期リクエストが完了したときにコンテナースレッドから呼び出されます。default <T> void
beforeConcurrentHandling
(NativeWebRequest request, DeferredResult<T> deferredResult) 並行処理の開始直前に、それを開始したのと同じスレッドで呼び出されます。default <T> boolean
handleError
(NativeWebRequest request, DeferredResult<T> deferredResult, ThrowableSE t) DeferredResult
が設定される前の非同期リクエストの処理中にエラーが発生したときに、コンテナースレッドから呼び出されます。default <T> boolean
handleTimeout
(NativeWebRequest request, DeferredResult<T> deferredResult) DeferredResult
が設定される前に非同期リクエストがタイムアウトしたときにコンテナースレッドから呼び出されます。default <T> void
postProcess
(NativeWebRequest request, DeferredResult<T> deferredResult, ObjectSE concurrentResult) DeferredResult.setResult(Object)
またはDeferredResult.setErrorResult(Object)
を介してDeferredResult
が設定された後に呼び出され、同時に結果を処理する準備ができています。default <T> void
preProcess
(NativeWebRequest request, DeferredResult<T> deferredResult) 並行処理の開始直後に、それを開始したのと同じスレッドで呼び出されます。
メソッドの詳細
beforeConcurrentHandling
default <T> void beforeConcurrentHandling(NativeWebRequest request, DeferredResult<T> deferredResult) throws ExceptionSE 並行処理の開始直前に、それを開始したのと同じスレッドで呼び出されます。このメソッドは、指定されたDeferredResult
での並行処理の開始直前の状態をキャプチャーするために使用できます。- パラメーター:
request
- 現在のリクエストdeferredResult
- 現在のリクエストの DeferredResult- 例外:
ExceptionSE
- エラーの場合
preProcess
default <T> void preProcess(NativeWebRequest request, DeferredResult<T> deferredResult) throws ExceptionSE 並行処理の開始直後に、それを開始したのと同じスレッドで呼び出されます。このメソッドは、指定されたDeferredResult
との並行処理の開始を検出するために使用できます。DeferredResult
は、たとえば作成時または別のスレッドによってすでに設定されている可能性があります。- パラメーター:
request
- 現在のリクエストdeferredResult
- 現在のリクエストの DeferredResult- 例外:
ExceptionSE
- エラーの場合
postProcess
default <T> void postProcess(NativeWebRequest request, DeferredResult<T> deferredResult, ObjectSE concurrentResult) throws ExceptionSE DeferredResult.setResult(Object)
またはDeferredResult.setErrorResult(Object)
を介してDeferredResult
が設定された後に呼び出され、同時に結果を処理する準備ができています。このメソッドは、デフォルトのタイムアウト結果を受け入れるコンストラクターを使用して
DeferredResult
が作成された場合、タイムアウト後に呼び出すこともできます。- パラメーター:
request
- 現在のリクエストdeferredResult
- 現在のリクエストの DeferredResultconcurrentResult
-DeferredResult
の結果- 例外:
ExceptionSE
- エラーの場合
handleTimeout
default <T> boolean handleTimeout(NativeWebRequest request, DeferredResult<T> deferredResult) throws ExceptionSE DeferredResult
が設定される前に非同期リクエストがタイムアウトしたときにコンテナースレッドから呼び出されます。実装はsetResult
またはsetErrorResult
を呼び出して処理を再開できます。- パラメーター:
request
- 現在のリクエストdeferredResult
- 現在のリクエストの DeferredResult。DeferredResult
が設定されている場合、並行処理が再開され、後続のインターセプターは呼び出されません- 戻り値:
- 処理を続行する必要がある場合は
true
、他のインターセプターを呼び出さない場合はfalse
- 例外:
ExceptionSE
- エラーの場合
handleError
default <T> boolean handleError(NativeWebRequest request, DeferredResult<T> deferredResult, ThrowableSE t) throws ExceptionSE DeferredResult
が設定される前の非同期リクエストの処理中にエラーが発生したときに、コンテナースレッドから呼び出されます。実装はsetResult
またはsetErrorResult
を呼び出して処理を再開できます。- パラメーター:
request
- 現在のリクエストdeferredResult
- 現在のリクエストの DeferredResult。DeferredResult
が設定されている場合、並行処理が再開され、後続のインターセプターは呼び出されませんt
- リクエスト処理中に発生したエラー- 戻り値:
- エラー処理を続行する必要がある場合は
true
、他のインターセプターをバイパスして呼び出さない場合はfalse
- 例外:
ExceptionSE
- エラーの場合
afterCompletion
default <T> void afterCompletion(NativeWebRequest request, DeferredResult<T> deferredResult) throws ExceptionSE タイムアウトやネットワークエラーなどの何らかの理由で非同期リクエストが完了したときにコンテナースレッドから呼び出されます。このメソッドは、DeferredResult
インスタンスが使用できなくなったことを検出できます。- パラメーター:
request
- 現在のリクエストdeferredResult
- 現在のリクエストの DeferredResult- 例外:
ExceptionSE
- エラーの場合