public class StandardServletAsyncWebRequest extends ServletWebRequest implements AsyncWebRequest, AsyncListener
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
.
DESTRUCTION_CALLBACK_NAME_PREFIX, immutableValueTypes
requestDestructionCallbacks
REFERENCE_REQUEST, REFERENCE_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(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 |
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(Long timeout)
In Servlet 3 async processing, the timeout period begins after the
container processing thread has exited.
|
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, checkNotModified, getContextPath, getDescription, getHeader, getHeaderNames, getHeaderValues, getHttpMethod, getLocale, getNativeRequest, getNativeRequest, getNativeResponse, getNativeResponse, getParameter, getParameterMap, getParameterNames, getParameterValues, getRemoteUser, getUserPrincipal, isNotModified, isSecure, isUserInRole, toString
getAttribute, getAttributeNames, getRequest, getResponse, getSession, getSessionId, getSessionMutex, isImmutableSessionAttribute, 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, checkNotModified, getContextPath, getDescription, getHeader, getHeaderNames, getHeaderValues, getLocale, getParameter, getParameterMap, getParameterNames, getParameterValues, getRemoteUser, getUserPrincipal, isSecure, isUserInRole
getAttribute, getAttributeNames, getSessionId, getSessionMutex, registerDestructionCallback, removeAttribute, resolveReference, setAttribute
public StandardServletAsyncWebRequest(HttpServletRequest request, HttpServletResponse response)
request
- current HTTP requestresponse
- current HTTP responsepublic void setTimeout(Long timeout)
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(Runnable timeoutHandler)
AsyncWebRequest
addTimeoutHandler
in interface AsyncWebRequest
public void addErrorHandler(Consumer<Throwable> exceptionHandler)
AsyncWebRequest
addErrorHandler
in interface AsyncWebRequest
public void addCompletionHandler(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 IOException
onStartAsync
in interface AsyncListener
IOException
public void onTimeout(AsyncEvent event) throws IOException
onTimeout
in interface AsyncListener
IOException
public void onError(AsyncEvent event) throws IOException
onError
in interface AsyncListener
IOException
public void onComplete(AsyncEvent event) throws IOException
onComplete
in interface AsyncListener
IOException