Class TimeoutCallableProcessingInterceptor
- java.lang.Object
- org.springframework.web.context.request.async.CallableProcessingInterceptorAdapter
- org.springframework.web.context.request.async.TimeoutCallableProcessingInterceptor
- All Implemented Interfaces:
CallableProcessingInterceptor
public class TimeoutCallableProcessingInterceptor extends CallableProcessingInterceptorAdapter
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 setting the result to anAsyncRequestTimeoutException
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
Field Summary
Fields inherited from interface org.springframework.web.context.request.async.CallableProcessingInterceptor
RESPONSE_HANDLED, RESULT_NONE
Constructor Summary
Constructors Constructor Description TimeoutCallableProcessingInterceptor()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <T> Object
handleTimeout(NativeWebRequest request, Callable<T> task)
This implementation always returnsRESULT_NONE
.Methods inherited from class org.springframework.web.context.request.async.CallableProcessingInterceptorAdapter
afterCompletion, beforeConcurrentHandling, postProcess, preProcess
Constructor Detail
TimeoutCallableProcessingInterceptor
public TimeoutCallableProcessingInterceptor()
Method Detail
handleTimeout
public <T> Object handleTimeout(NativeWebRequest request, Callable<T> task) throws Exception
Description copied from class:CallableProcessingInterceptorAdapter
This implementation always returnsRESULT_NONE
.- Specified by:
handleTimeout
in interfaceCallableProcessingInterceptor
- Overrides:
handleTimeout
in classCallableProcessingInterceptorAdapter
- Parameters:
request
- the current requesttask
- the task for the current async request- Returns:
- a concurrent result value; if the value is anything other than
CallableProcessingInterceptor.RESULT_NONE
orCallableProcessingInterceptor.RESPONSE_HANDLED
, concurrent processing is resumed and subsequent interceptors are not invoked - Throws:
Exception
- in case of errors