Class TimeoutDeferredResultProcessingInterceptor
- java.lang.Object
- org.springframework.web.context.request.async.DeferredResultProcessingInterceptorAdapter
- org.springframework.web.context.request.async.TimeoutDeferredResultProcessingInterceptor
- All Implemented Interfaces:
DeferredResultProcessingInterceptor
public class TimeoutDeferredResultProcessingInterceptor extends DeferredResultProcessingInterceptorAdapter
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 returningAsyncRequestTimeoutExceptionas 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 Summary
Constructors Constructor Description TimeoutDeferredResultProcessingInterceptor()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <T> booleanhandleTimeout(NativeWebRequest request, DeferredResult<T> result)This implementation returnstrueby default allowing other interceptors to be given a chance to handle the timeout.Methods inherited from class org.springframework.web.context.request.async.DeferredResultProcessingInterceptorAdapter
afterCompletion, beforeConcurrentHandling, postProcess, preProcess
Constructor Detail
TimeoutDeferredResultProcessingInterceptor
public TimeoutDeferredResultProcessingInterceptor()
Method Detail
handleTimeout
public <T> boolean handleTimeout(NativeWebRequest request, DeferredResult<T> result) throws Exception
Description copied from class:DeferredResultProcessingInterceptorAdapterThis implementation returnstrueby default allowing other interceptors to be given a chance to handle the timeout.- Specified by:
handleTimeoutin interfaceDeferredResultProcessingInterceptor- Overrides:
handleTimeoutin classDeferredResultProcessingInterceptorAdapter- Parameters:
request- the current requestresult- the DeferredResult for the current request; if theDeferredResultis set, then concurrent processing is resumed and subsequent interceptors are not invoked- Returns:
trueif processing should continue, orfalseif other interceptors should not be invoked- Throws:
Exception- in case of errors