public class StandardServletAsyncWebRequest extends ServletWebRequest implements AsyncWebRequest
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-support>true</async-support>
element to servlet and filter
declarations in web.xml
Modifier and Type | Field and Description |
---|---|
private java.util.concurrent.atomic.AtomicBoolean |
asyncCompleted |
private AsyncContext |
asyncContext |
private java.util.List<java.lang.Runnable> |
completionHandlers |
private java.lang.Long |
timeout |
private java.util.List<java.lang.Runnable> |
timeoutHandlers |
DESTRUCTION_CALLBACK_NAME_PREFIX
requestDestructionCallbacks
REFERENCE_REQUEST, REFERENCE_SESSION, SCOPE_GLOBAL_SESSION, SCOPE_REQUEST, SCOPE_SESSION
Constructor and Description |
---|
StandardServletAsyncWebRequest(HttpServletRequest request,
HttpServletResponse response)
Create a new instance for the given request/response pair.
|
Modifier and Type | Method and Description |
---|---|
void |
addCompletionHandler(java.lang.Runnable runnable)
Add a handle to invoke when request processing completes.
|
void |
addTimeoutHandler(java.lang.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 |
isAsyncComplete()
Whether async request processing has completed.
|
boolean |
isAsyncStarted()
Whether the request is in async mode following a call to
AsyncWebRequest.startAsync() . |
void |
onComplete(AsyncEvent event) |
void |
onError(AsyncEvent event) |
void |
onStartAsync(AsyncEvent event) |
void |
onTimeout(AsyncEvent event) |
void |
setTimeout(java.lang.Long timeout)
Set the time required for concurrent handling to complete.
|
void |
startAsync()
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.
|
checkNotModified, checkNotModified, getContextPath, getDescription, getHeader, getHeaderNames, getHeaderValues, getHttpMethod, getLocale, getNativeRequest, getNativeRequest, getNativeResponse, getNativeResponse, getParameter, getParameterMap, getParameterNames, getParameterValues, getRemoteUser, getResponse, getUserPrincipal, isNotModified, isSecure, isUserInRole, toString
getAttribute, getAttributeNames, getRequest, getSession, getSessionId, getSessionMutex, registerDestructionCallback, registerSessionDestructionCallback, removeAttribute, resolveReference, setAttribute, updateAccessedSessionAttributes
isRequestActive, registerRequestDestructionCallback, removeRequestDestructionCallback, requestCompleted
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getNativeRequest, getNativeRequest, getNativeResponse, getNativeResponse
checkNotModified, checkNotModified, getContextPath, getDescription, getHeader, getHeaderNames, getHeaderValues, getLocale, getParameter, getParameterMap, getParameterNames, getParameterValues, getRemoteUser, getUserPrincipal, isSecure, isUserInRole
getAttribute, getAttributeNames, getSessionId, getSessionMutex, registerDestructionCallback, removeAttribute, resolveReference, setAttribute
private java.lang.Long timeout
private AsyncContext asyncContext
private java.util.concurrent.atomic.AtomicBoolean asyncCompleted
private final java.util.List<java.lang.Runnable> timeoutHandlers
private final java.util.List<java.lang.Runnable> completionHandlers
public StandardServletAsyncWebRequest(HttpServletRequest request, HttpServletResponse response)
request
- current HTTP requestresponse
- current HTTP responsepublic void setTimeout(java.lang.Long timeout)
AsyncWebRequest.isAsyncStarted()
is true
.
In Servlet 3 async processing, the timeout period begins after the container processing thread has exited.
setTimeout
in interface AsyncWebRequest
timeout
- amount of time in milliseconds; null
means no
timeout, i.e. rely on the default timeout of the container.public void addTimeoutHandler(java.lang.Runnable timeoutHandler)
AsyncWebRequest
addTimeoutHandler
in interface AsyncWebRequest
public void addCompletionHandler(java.lang.Runnable runnable)
AsyncWebRequest
addCompletionHandler
in interface AsyncWebRequest
public boolean isAsyncStarted()
AsyncWebRequest
AsyncWebRequest.startAsync()
.
Returns "false" if asynchronous processing never started, has completed,
or the request was dispatched for further processing.isAsyncStarted
in interface AsyncWebRequest
public boolean isAsyncComplete()
It is important to avoid use of request and response objects after async processing has completed. Servlet containers often re-use them.
isAsyncComplete
in interface AsyncWebRequest
public void startAsync()
AsyncWebRequest
startAsync
in interface AsyncWebRequest
public void dispatch()
AsyncWebRequest
dispatch
in interface AsyncWebRequest
public void onStartAsync(AsyncEvent event) throws java.io.IOException
java.io.IOException
public void onError(AsyncEvent event) throws java.io.IOException
java.io.IOException
public void onTimeout(AsyncEvent event) throws java.io.IOException
java.io.IOException
public void onComplete(AsyncEvent event) throws java.io.IOException
java.io.IOException