public class TimeoutDeferredResultProcessingInterceptor extends DeferredResultProcessingInterceptorAdapter
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.
Constructor and Description |
---|
TimeoutDeferredResultProcessingInterceptor() |
Modifier and Type | Method and Description |
---|---|
<T> boolean |
handleTimeout(NativeWebRequest request,
DeferredResult<T> result)
This implementation returns
true by default allowing other interceptors
to be given a chance to handle the timeout. |
afterCompletion, beforeConcurrentHandling, postProcess, preProcess
public TimeoutDeferredResultProcessingInterceptor()
public <T> boolean handleTimeout(NativeWebRequest request, DeferredResult<T> result) throws Exception
DeferredResultProcessingInterceptorAdapter
true
by default allowing other interceptors
to be given a chance to handle the timeout.handleTimeout
in interface DeferredResultProcessingInterceptor
handleTimeout
in class DeferredResultProcessingInterceptorAdapter
request
- the current requestresult
- the DeferredResult for the current request; if the
DeferredResult
is set, then concurrent processing is resumed and
subsequent interceptors are not invokedtrue
if processing should continue, or false
if
other interceptors should not be invokedException
- in case of errors