クラス TimeoutDeferredResultProcessingInterceptor

java.lang.ObjectSE
org.springframework.web.context.request.async.TimeoutDeferredResultProcessingInterceptor
実装されたすべてのインターフェース:
DeferredResultProcessingInterceptor

public class TimeoutDeferredResultProcessingInterceptor extends ObjectSE implements DeferredResultProcessingInterceptor
レスポンスがまだコミットされていない場合、タイムアウトの場合に 503(SERVICE_UNAVAILABLE)を送信します。4.2.8 では、これは処理の結果として AsyncRequestTimeoutException を返すことによって間接的に行われ、処理の結果は Spring MVC のデフォルトの例外処理によって 503 エラーとして処理されます。

最後に、他のすべてのインターセプターの後に登録されるため、他のインターセプターがタイムアウトを処理しない場合にのみ呼び出されます。

RFC 7231 によると、"Retry-After" ヘッダーのない 503 は 500 エラーとして解釈され、クライアントは再試行してはならないことに注意してください。アプリケーションは独自のインターセプターをインストールしてタイムアウトを処理し、必要に応じて 'Retry-After' ヘッダーを追加できます。

導入:
3.2
作成者:
Rossen Stoyanchev
  • コンストラクターの詳細

    • TimeoutDeferredResultProcessingInterceptor

      public TimeoutDeferredResultProcessingInterceptor()
  • メソッドの詳細

    • handleTimeout

      public <T> boolean handleTimeout(NativeWebRequest request, DeferredResult<T> result) throws ExceptionSE
      インターフェースからコピーされた説明: DeferredResultProcessingInterceptor
      DeferredResult が設定される前に非同期リクエストがタイムアウトしたときにコンテナースレッドから呼び出されます。実装は setResult または setErrorResult を呼び出して処理を再開できます。
      次で指定:
      インターフェース DeferredResultProcessingInterceptorhandleTimeout 
      パラメーター:
      request - 現在のリクエスト
      result - 現在のリクエストの DeferredResult。DeferredResult が設定されている場合、並行処理が再開され、後続のインターセプターは呼び出されません
      戻り値:
      処理を続行する必要がある場合は true、他のインターセプターを呼び出さない場合は false 
      例外:
      ExceptionSE - エラーの場合