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, immutableValueTypesrequestDestructionCallbacksREFERENCE_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)
Notifies this AsyncListener that an asynchronous operation
has been completed.
|
void |
onError(AsyncEvent event)
Notifies this AsyncListener that an asynchronous operation
has failed to complete.
|
void |
onStartAsync(AsyncEvent event)
Notifies this AsyncListener that a new asynchronous cycle is being
initiated via a call to one of the
ServletRequest.startAsync()
methods. |
void |
onTimeout(AsyncEvent event)
Notifies this AsyncListener that an asynchronous operation
has timed out.
|
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, toStringgetAttribute, getAttributeNames, getRequest, getResponse, getSession, getSessionId, getSessionMutex, isImmutableSessionAttribute, registerDestructionCallback, registerSessionDestructionCallback, removeAttribute, resolveReference, setAttribute, updateAccessedSessionAttributesisRequestActive, registerRequestDestructionCallback, removeRequestDestructionCallback, requestCompletedclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetNativeRequest, getNativeRequest, getNativeResponse, getNativeResponsecheckNotModified, checkNotModified, checkNotModified, getContextPath, getDescription, getHeader, getHeaderNames, getHeaderValues, getLocale, getParameter, getParameterMap, getParameterNames, getParameterValues, getRemoteUser, getUserPrincipal, isSecure, isUserInRolegetAttribute, getAttributeNames, getSessionId, getSessionMutex, registerDestructionCallback, removeAttribute, resolveReference, setAttributepublic StandardServletAsyncWebRequest(HttpServletRequest request, HttpServletResponse response)
request - current HTTP requestresponse - current HTTP responsepublic void setTimeout(Long timeout)
setTimeout in interface AsyncWebRequesttimeout - amount of time in milliseconds; null means no
timeout, i.e. rely on the default timeout of the container.public void addTimeoutHandler(Runnable timeoutHandler)
AsyncWebRequestaddTimeoutHandler in interface AsyncWebRequestpublic void addErrorHandler(Consumer<Throwable> exceptionHandler)
AsyncWebRequestaddErrorHandler in interface AsyncWebRequestpublic void addCompletionHandler(Runnable runnable)
AsyncWebRequestaddCompletionHandler in interface AsyncWebRequestpublic boolean isAsyncStarted()
AsyncWebRequestAsyncWebRequest.startAsync().
Returns "false" if asynchronous processing never started, has completed,
or the request was dispatched for further processing.isAsyncStarted in interface AsyncWebRequestpublic 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 AsyncWebRequestpublic void startAsync()
AsyncWebRequeststartAsync in interface AsyncWebRequestpublic void dispatch()
AsyncWebRequestdispatch in interface AsyncWebRequestpublic void onStartAsync(AsyncEvent event) throws IOException
javax.servlet.AsyncListenerServletRequest.startAsync()
methods.
The AsyncContext corresponding to the asynchronous
operation that is being reinitialized may be obtained by calling
getAsyncContext on the given
event.
In addition, if this AsyncListener had been registered via a call
to AsyncContext.addListener(AsyncListener,
ServletRequest, ServletResponse), the supplied ServletRequest and
ServletResponse objects may be retrieved by calling
getSuppliedRequest and
getSuppliedResponse,
respectively, on the given event.
This AsyncListener will not receive any events related to the
new asynchronous cycle unless it registers itself (via a call
to AsyncContext.addListener(javax.servlet.AsyncListener)) with the AsyncContext that
is delivered as part of the given AsyncEvent.
onStartAsync in interface AsyncListenerevent - the AsyncEvent indicating that a new asynchronous
cycle is being initiatedIOException - if an I/O related error has occurred during the
processing of the given AsyncEventpublic void onError(AsyncEvent event) throws IOException
javax.servlet.AsyncListenerThe AsyncContext corresponding to the asynchronous
operation that failed to complete may be obtained by calling
getAsyncContext on the given
event.
In addition, if this AsyncListener had been registered via a call
to AsyncContext.addListener(AsyncListener,
ServletRequest, ServletResponse), the supplied ServletRequest and
ServletResponse objects may be retrieved by calling
getSuppliedRequest and
getSuppliedResponse,
respectively, on the given event.
onError in interface AsyncListenerevent - the AsyncEvent indicating that an asynchronous
operation has failed to completeIOException - if an I/O related error has occurred during the
processing of the given AsyncEventpublic void onTimeout(AsyncEvent event) throws IOException
javax.servlet.AsyncListenerThe AsyncContext corresponding to the asynchronous
operation that has timed out may be obtained by calling
getAsyncContext on the given
event.
In addition, if this AsyncListener had been registered via a call
to AsyncContext.addListener(AsyncListener,
ServletRequest, ServletResponse), the supplied ServletRequest and
ServletResponse objects may be retrieved by calling
getSuppliedRequest and
getSuppliedResponse,
respectively, on the given event.
onTimeout in interface AsyncListenerevent - the AsyncEvent indicating that an asynchronous
operation has timed outIOException - if an I/O related error has occurred during the
processing of the given AsyncEventpublic void onComplete(AsyncEvent event) throws IOException
javax.servlet.AsyncListenerThe AsyncContext corresponding to the asynchronous
operation that has been completed may be obtained by calling
getAsyncContext on the given
event.
In addition, if this AsyncListener had been registered via a call
to AsyncContext.addListener(AsyncListener,
ServletRequest, ServletResponse), the supplied ServletRequest and
ServletResponse objects may be retrieved by calling
getSuppliedRequest and
getSuppliedResponse,
respectively, on the given event.
onComplete in interface AsyncListenerevent - the AsyncEvent indicating that an asynchronous
operation has been completedIOException - if an I/O related error has occurred during the
processing of the given AsyncEvent