Class StandardServletAsyncWebRequest
java.lang.Object
org.springframework.web.context.request.AbstractRequestAttributes
org.springframework.web.context.request.ServletRequestAttributes
org.springframework.web.context.request.ServletWebRequest
org.springframework.web.context.request.async.StandardServletAsyncWebRequest
- All Implemented Interfaces:
AsyncListener
,EventListener
,AsyncWebRequest
,NativeWebRequest
,RequestAttributes
,WebRequest
public class StandardServletAsyncWebRequest
extends ServletWebRequest
implements AsyncWebRequest, AsyncListener
A Servlet implementation of
AsyncWebRequest
.
The servlet and all filters involved in an async request must have async
support enabled using the Servlet API or by adding an
<async-supported>true</async-supported>
element to servlet and filter
declarations in web.xml
.
- Since:
- 3.2
- Author:
- Rossen Stoyanchev
-
Field Summary
Fields inherited from class org.springframework.web.context.request.ServletRequestAttributes
DESTRUCTION_CALLBACK_NAME_PREFIX, immutableValueTypes
Fields inherited from class org.springframework.web.context.request.AbstractRequestAttributes
requestDestructionCallbacks
Fields inherited from interface org.springframework.web.context.request.RequestAttributes
REFERENCE_REQUEST, REFERENCE_SESSION, SCOPE_REQUEST, SCOPE_SESSION
-
Constructor Summary
ConstructorDescriptionStandardServletAsyncWebRequest
(HttpServletRequest request, HttpServletResponse response) Create a new instance for the given request/response pair. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addCompletionHandler
(Runnable runnable) Add a handler to invoke when request processing completes.void
addErrorHandler
(Consumer<Throwable> exceptionHandler) Add a handler to invoke when an error occurred while concurrent handling of a request.void
addTimeoutHandler
(Runnable timeoutHandler) Add a handler to invoke when concurrent handling has timed out.void
dispatch()
Dispatch the request to the container in order to resume processing after concurrent execution in an application thread.boolean
Whether async request processing has completed.boolean
Whether the request is in async mode following a call toAsyncWebRequest.startAsync()
.void
onComplete
(AsyncEvent event) void
onError
(AsyncEvent event) void
onStartAsync
(AsyncEvent event) void
onTimeout
(AsyncEvent event) void
setTimeout
(Long timeout) In Servlet 3 async processing, the timeout period begins after the container processing thread has exited.void
Mark the start of asynchronous request processing so that when the main processing thread exits, the response remains open for further processing in another thread.Methods inherited from class org.springframework.web.context.request.ServletWebRequest
checkNotModified, checkNotModified, checkNotModified, getContextPath, getDescription, getHeader, getHeaderNames, getHeaderValues, getHttpMethod, getLocale, getNativeRequest, getNativeRequest, getNativeResponse, getNativeResponse, getParameter, getParameterMap, getParameterNames, getParameterValues, getRemoteUser, getUserPrincipal, isNotModified, isSecure, isUserInRole, toString
Methods inherited from class org.springframework.web.context.request.ServletRequestAttributes
getAttribute, getAttributeNames, getRequest, getResponse, getSession, getSessionId, getSessionMutex, isImmutableSessionAttribute, registerDestructionCallback, registerSessionDestructionCallback, removeAttribute, resolveReference, setAttribute, updateAccessedSessionAttributes
Methods inherited from class org.springframework.web.context.request.AbstractRequestAttributes
isRequestActive, registerRequestDestructionCallback, removeRequestDestructionCallback, requestCompleted
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.web.context.request.NativeWebRequest
getNativeRequest, getNativeRequest, getNativeResponse, getNativeResponse
Methods inherited from interface org.springframework.web.context.request.RequestAttributes
getAttribute, getAttributeNames, getSessionId, getSessionMutex, registerDestructionCallback, removeAttribute, resolveReference, setAttribute
Methods inherited from interface org.springframework.web.context.request.WebRequest
checkNotModified, checkNotModified, checkNotModified, getContextPath, getDescription, getHeader, getHeaderNames, getHeaderValues, getLocale, getParameter, getParameterMap, getParameterNames, getParameterValues, getRemoteUser, getUserPrincipal, isSecure, isUserInRole
-
Constructor Details
-
StandardServletAsyncWebRequest
Create a new instance for the given request/response pair.- Parameters:
request
- current HTTP requestresponse
- current HTTP response
-
-
Method Details
-
setTimeout
In Servlet 3 async processing, the timeout period begins after the container processing thread has exited.- Specified by:
setTimeout
in interfaceAsyncWebRequest
- Parameters:
timeout
- amount of time in milliseconds;null
means no timeout, i.e. rely on the default timeout of the container.
-
addTimeoutHandler
Description copied from interface:AsyncWebRequest
Add a handler to invoke when concurrent handling has timed out.- Specified by:
addTimeoutHandler
in interfaceAsyncWebRequest
-
addErrorHandler
Description copied from interface:AsyncWebRequest
Add a handler to invoke when an error occurred while concurrent handling of a request.- Specified by:
addErrorHandler
in interfaceAsyncWebRequest
-
addCompletionHandler
Description copied from interface:AsyncWebRequest
Add a handler to invoke when request processing completes.- Specified by:
addCompletionHandler
in interfaceAsyncWebRequest
-
isAsyncStarted
public boolean isAsyncStarted()Description copied from interface:AsyncWebRequest
Whether the request is in async mode following a call toAsyncWebRequest.startAsync()
. Returns "false" if asynchronous processing never started, has completed, or the request was dispatched for further processing.- Specified by:
isAsyncStarted
in interfaceAsyncWebRequest
-
isAsyncComplete
public boolean isAsyncComplete()Whether async request processing has completed.It is important to avoid use of request and response objects after async processing has completed. Servlet containers often re-use them.
- Specified by:
isAsyncComplete
in interfaceAsyncWebRequest
-
startAsync
public void startAsync()Description copied from interface:AsyncWebRequest
Mark the start of asynchronous request processing so that when the main processing thread exits, the response remains open for further processing in another thread.- Specified by:
startAsync
in interfaceAsyncWebRequest
-
dispatch
public void dispatch()Description copied from interface:AsyncWebRequest
Dispatch the request to the container in order to resume processing after concurrent execution in an application thread.- Specified by:
dispatch
in interfaceAsyncWebRequest
-
onStartAsync
- Specified by:
onStartAsync
in interfaceAsyncListener
- Throws:
IOException
-
onError
- Specified by:
onError
in interfaceAsyncListener
- Throws:
IOException
-
onTimeout
- Specified by:
onTimeout
in interfaceAsyncListener
- Throws:
IOException
-
onComplete
- Specified by:
onComplete
in interfaceAsyncListener
- Throws:
IOException
-