public class TimeoutDeferredResultProcessingInterceptor extends ObjectSE implements DeferredResultProcessingInterceptor
AsyncRequestTimeoutException
を返すことによって間接的に行われ、処理の結果は Spring MVC のデフォルトの例外処理によって 503 エラーとして処理されます。最後に、他のすべてのインターセプターの後に登録されるため、他のインターセプターがタイムアウトを処理しない場合にのみ呼び出されます。
RFC 7231 によると、"Retry-After" ヘッダーのない 503 は 500 エラーとして解釈され、クライアントは再試行してはならないことに注意してください。アプリケーションは独自のインターセプターをインストールしてタイムアウトを処理し、必要に応じて 'Retry-After' ヘッダーを追加できます。
コンストラクターと説明 |
---|
TimeoutDeferredResultProcessingInterceptor() |
修飾子と型 | メソッドと説明 |
---|---|
<T> boolean | handleTimeout(NativeWebRequest request, DeferredResult<T> result) DeferredResult が設定される前に非同期リクエストがタイムアウトしたときにコンテナースレッドから呼び出されます。 |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
afterCompletion, beforeConcurrentHandling, handleError, postProcess, preProcess
public TimeoutDeferredResultProcessingInterceptor()
public <T> boolean handleTimeout(NativeWebRequest request, DeferredResult<T> result) throws ExceptionSE
DeferredResultProcessingInterceptor
DeferredResult
が設定される前に非同期リクエストがタイムアウトしたときにコンテナースレッドから呼び出されます。実装は setResult
または setErrorResult
を呼び出して処理を再開できます。DeferredResultProcessingInterceptor
の handleTimeout
request
- 現在のリクエスト result
- 現在のリクエストの DeferredResult。DeferredResult
が設定されている場合、並行処理が再開され、後続のインターセプターは呼び出されません true
、他のインターセプターを呼び出さない場合は false
ExceptionSE
- エラーの場合