インターフェース DeferredResultProcessingInterceptor
- すべての既知の実装クラス:
TimeoutDeferredResultProcessingInterceptor
public interface DeferredResultProcessingInterceptor
同時リクエスト処理をインターセプトします。同時結果は、アプリケーションによって選択されたスレッド (たとえば、外部イベントへのレスポンス) から
DeferredResult が設定されるまで待機することによって取得されます。DeferredResultProcessingInterceptor は、非同期処理の開始前、DeferredResult の設定後、タイムアウト / エラー発生時、タイムアウトやネットワークエラーなどの何らかの理由で完了した後に呼び出されます。
原則として、インターセプターメソッドによって例外が発生すると、コンテナーにディスパッチして例外インスタンスを同時結果として使用することにより、非同期処理が再開されます。このような例外は、HandlerExceptionResolver メカニズムを介して処理されます。
handleTimeout メソッドは、処理を再開するために DeferredResult を設定できます。
- 導入:
- 3.2
- 作成者:
- Rossen Stoyanchev, Rob Winch
方法の概要
修飾子と型メソッド説明default <T> voidafterCompletion(NativeWebRequest request, DeferredResult<T> deferredResult) タイムアウトやネットワークエラーなどの何らかの理由で非同期リクエストが完了したときにコンテナースレッドから呼び出されます。default <T> voidbeforeConcurrentHandling(NativeWebRequest request, DeferredResult<T> deferredResult) 並行処理の開始直前に、それを開始したのと同じスレッドで呼び出されます。default <T> booleanhandleError(NativeWebRequest request, DeferredResult<T> deferredResult, ThrowableSE t) DeferredResultが設定される前の非同期リクエストの処理中にエラーが発生したときに、コンテナースレッドから呼び出されます。default <T> booleanhandleTimeout(NativeWebRequest request, DeferredResult<T> deferredResult) DeferredResultが設定される前に非同期リクエストがタイムアウトしたときにコンテナースレッドから呼び出されます。default <T> voidpostProcess(NativeWebRequest request, DeferredResult<T> deferredResult, @Nullable ObjectSE concurrentResult) DeferredResult.setResult(Object)またはDeferredResult.setErrorResult(Object)を介してDeferredResultが設定された後に呼び出され、同時に結果を処理する準備ができています。default <T> voidpreProcess(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, @Nullable ObjectSE concurrentResult) throws ExceptionSE DeferredResult.setResult(Object)またはDeferredResult.setErrorResult(Object)を介してDeferredResultが設定された後に呼び出され、同時に結果を処理する準備ができています。このメソッドは、デフォルトのタイムアウト結果を受け入れるコンストラクターを使用して
DeferredResultが作成された場合、タイムアウト後に呼び出すこともできます。- パラメーター:
request- 現在のリクエストdeferredResult- 現在のリクエストの DeferredResultconcurrentResult- 同時結果- 例外:
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- エラーの場合