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 SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescription<T> booleanhandleTimeout(NativeWebRequest request, DeferredResult<T> result) Invoked from a container thread when an async request times out before theDeferredResulthas been set.Methods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.web.context.request.async.DeferredResultProcessingInterceptorafterCompletion, beforeConcurrentHandling, handleError, postProcess, preProcess
- 
Constructor Details- 
TimeoutDeferredResultProcessingInterceptorpublic TimeoutDeferredResultProcessingInterceptor()
 
- 
- 
Method Details- 
handleTimeoutpublic <T> boolean handleTimeout(NativeWebRequest request, DeferredResult<T> result) throws Exception Description copied from interface:DeferredResultProcessingInterceptorInvoked from a container thread when an async request times out before theDeferredResulthas been set. Implementations may invokesetResultorsetErrorResultto resume processing.- Specified by:
- handleTimeoutin interface- DeferredResultProcessingInterceptor
- Parameters:
- request- the current request
- result- the DeferredResult for the current request; if the- DeferredResultis set, then concurrent processing is resumed and subsequent interceptors are not invoked
- Returns:
- trueif processing should continue, or- falseif other interceptors should not be invoked
- Throws:
- Exception- in case of errors
 
 
-