Class TimeoutDeferredResultProcessingInterceptor

java.lang.Object
org.springframework.web.context.request.async.TimeoutDeferredResultProcessingInterceptor
All Implemented Interfaces:
DeferredResultProcessingInterceptor

public class TimeoutDeferredResultProcessingInterceptor extends Object implements DeferredResultProcessingInterceptor
Sends a 503 (SERVICE_UNAVAILABLE) in case of a timeout if the response is not already committed. As of 4.2.8 this is done indirectly by returning AsyncRequestTimeoutException as the result of processing which is then handled by Spring MVC's default exception handling as a 503 error.

Registered at the end, after all other interceptors and therefore invoked only if no other interceptor handles the timeout.

Note that according to RFC 7231, a 503 without a 'Retry-After' header is interpreted as a 500 error and the client should not retry. Applications can install their own interceptor to handle a timeout and add a 'Retry-After' header if necessary.

Since:
3.2
Author:
Rossen Stoyanchev
  • Constructor Details

    • TimeoutDeferredResultProcessingInterceptor

      public TimeoutDeferredResultProcessingInterceptor()
  • Method Details

    • handleTimeout

      public <T> boolean handleTimeout(NativeWebRequest request, DeferredResult<T> result) throws Exception
      Description copied from interface: DeferredResultProcessingInterceptor
      Invoked from a container thread when an async request times out before the DeferredResult has been set. Implementations may invoke setResult or setErrorResult to resume processing.
      Specified by:
      handleTimeout in interface DeferredResultProcessingInterceptor
      Parameters:
      request - the current request
      result - the DeferredResult for the current request; if the DeferredResult is set, then concurrent processing is resumed and subsequent interceptors are not invoked
      Returns:
      true if processing should continue, or false if other interceptors should not be invoked
      Throws:
      Exception - in case of errors