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:
jakarta.servlet.AsyncListener, EventListener, AsyncWebRequest, NativeWebRequest, RequestAttributes, WebRequest
public class StandardServletAsyncWebRequest
extends ServletWebRequest
implements AsyncWebRequest, jakarta.servlet.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 ServletRequestAttributes
DESTRUCTION_CALLBACK_NAME_PREFIX, immutableValueTypesFields inherited from class AbstractRequestAttributes
requestDestructionCallbacksFields inherited from interface RequestAttributes
REFERENCE_REQUEST, REFERENCE_SESSION, SCOPE_REQUEST, SCOPE_SESSION -
Constructor Summary
ConstructorsConstructorDescriptionStandardServletAsyncWebRequest(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) Create a new instance for the given request/response pair. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddCompletionHandler(Runnable runnable) Add a handler to invoke when request processing completes.voidaddErrorHandler(Consumer<Throwable> exceptionHandler) Add a handler to invoke when an error occurred while concurrent handling of a request.voidaddTimeoutHandler(Runnable timeoutHandler) Add a handler to invoke when concurrent handling has timed out.voiddispatch()Dispatch the request to the container in order to resume processing after concurrent execution in an application thread.booleanWhether async request processing has completed.booleanWhether the request is in async mode following a call toAsyncWebRequest.startAsync().voidonComplete(jakarta.servlet.AsyncEvent event) voidonError(jakarta.servlet.AsyncEvent event) voidonStartAsync(jakarta.servlet.AsyncEvent event) voidonTimeout(jakarta.servlet.AsyncEvent event) voidsetTimeout(@Nullable Long timeout) In Servlet 3 async processing, the timeout period begins after the container processing thread has exited.voidMark 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 ServletWebRequest
checkNotModified, checkNotModified, checkNotModified, getContextPath, getDescription, getHeader, getHeaderNames, getHeaderValues, getHttpMethod, getLocale, getNativeRequest, getNativeRequest, getNativeResponse, getNativeResponse, getParameter, getParameterMap, getParameterNames, getParameterValues, getRemoteUser, getUserPrincipal, isNotModified, isSecure, isUserInRole, toStringMethods inherited from class ServletRequestAttributes
getAttribute, getAttributeNames, getRequest, getResponse, getSession, getSessionId, getSessionMutex, isImmutableSessionAttribute, registerDestructionCallback, registerSessionDestructionCallback, removeAttribute, resolveReference, setAttribute, updateAccessedSessionAttributesMethods inherited from class AbstractRequestAttributes
isRequestActive, registerRequestDestructionCallback, removeRequestDestructionCallback, requestCompletedMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface NativeWebRequest
getNativeRequest, getNativeRequest, getNativeResponse, getNativeResponseMethods inherited from interface RequestAttributes
getAttribute, getAttributeNames, getSessionId, getSessionMutex, registerDestructionCallback, removeAttribute, resolveReference, setAttributeMethods inherited from interface WebRequest
checkNotModified, checkNotModified, checkNotModified, getContextPath, getDescription, getHeader, getHeaderNames, getHeaderValues, getLocale, getParameter, getParameterMap, getParameterNames, getParameterValues, getRemoteUser, getUserPrincipal, isSecure, isUserInRole
-
Constructor Details
-
StandardServletAsyncWebRequest
public StandardServletAsyncWebRequest(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) 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:
setTimeoutin interfaceAsyncWebRequest- Parameters:
timeout- amount of time in milliseconds;nullmeans no timeout, i.e. rely on the default timeout of the container.
-
addTimeoutHandler
Description copied from interface:AsyncWebRequestAdd a handler to invoke when concurrent handling has timed out.- Specified by:
addTimeoutHandlerin interfaceAsyncWebRequest
-
addErrorHandler
Description copied from interface:AsyncWebRequestAdd a handler to invoke when an error occurred while concurrent handling of a request.- Specified by:
addErrorHandlerin interfaceAsyncWebRequest
-
addCompletionHandler
Description copied from interface:AsyncWebRequestAdd a handler to invoke when request processing completes.- Specified by:
addCompletionHandlerin interfaceAsyncWebRequest
-
isAsyncStarted
public boolean isAsyncStarted()Description copied from interface:AsyncWebRequestWhether 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:
isAsyncStartedin 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:
isAsyncCompletein interfaceAsyncWebRequest
-
startAsync
public void startAsync()Description copied from interface:AsyncWebRequestMark 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:
startAsyncin interfaceAsyncWebRequest
-
dispatch
public void dispatch()Description copied from interface:AsyncWebRequestDispatch the request to the container in order to resume processing after concurrent execution in an application thread.- Specified by:
dispatchin interfaceAsyncWebRequest
-
onStartAsync
- Specified by:
onStartAsyncin interfacejakarta.servlet.AsyncListener- Throws:
IOException
-
onTimeout
- Specified by:
onTimeoutin interfacejakarta.servlet.AsyncListener- Throws:
IOException
-
onError
- Specified by:
onErrorin interfacejakarta.servlet.AsyncListener- Throws:
IOException
-
onComplete
- Specified by:
onCompletein interfacejakarta.servlet.AsyncListener- Throws:
IOException
-