Package org.springframework.web.context.request.async

# 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

Constructors
Constructor
Description
`StandardServletAsyncWebRequest(HttpServletRequest request, HttpServletResponse response)`
Create a new instance for the given request/response pair.

## Method Summary

Modifier and Type
Method
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.

### 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

public StandardServletAsyncWebRequest(HttpServletRequest request, HttpServletResponse response)
Create a new instance for the given request/response pair.

Parameters:
  `request` - current HTTP request
  `response` - current HTTP response

## Method Details

### setTimeout

public void setTimeout(@Nullable Long timeout)
In Servlet 3 async processing, the timeout period begins after the container processing thread has exited.

Specified by:
  `setTimeout` in interface `AsyncWebRequest`
Parameters:
  `timeout` - amount of time in milliseconds; `null` means no timeout, i.e. rely on the default timeout of the container.

### addTimeoutHandler

public void addTimeoutHandler(Runnable timeoutHandler)
Description copied from interface: `AsyncWebRequest`
Add a handler to invoke when concurrent handling has timed out.

Specified by:
  `addTimeoutHandler` in interface `AsyncWebRequest`

### addErrorHandler

public void addErrorHandler(Consumer<Throwable> exceptionHandler)
Description copied from interface: `AsyncWebRequest`
Add a handler to invoke when an error occurred while concurrent handling of a request.

Specified by:
  `addErrorHandler` in interface `AsyncWebRequest`

### addCompletionHandler

public void addCompletionHandler(Runnable runnable)
Description copied from interface: `AsyncWebRequest`
Add a handler to invoke when request processing completes.

Specified by:
  `addCompletionHandler` in interface `AsyncWebRequest`

### isAsyncStarted

public boolean isAsyncStarted()
Description copied from interface: `AsyncWebRequest`
Whether the request is in async mode following a call to `AsyncWebRequest.startAsync()`. Returns "false" if asynchronous processing never started, has completed, or the request was dispatched for further processing.

Specified by:
  `isAsyncStarted` in interface `AsyncWebRequest`

### 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 interface `AsyncWebRequest`

### 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 interface `AsyncWebRequest`

### 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 interface `AsyncWebRequest`

### onStartAsync

public void onStartAsync(AsyncEvent event) throws IOException

Specified by:
  `onStartAsync` in interface `AsyncListener`
Throws:
  `IOException`

### onTimeout

public void onTimeout(AsyncEvent event) throws IOException

Specified by:
  `onTimeout` in interface `AsyncListener`
Throws:
  `IOException`

### onError

public void onError(AsyncEvent event) throws IOException

Specified by:
  `onError` in interface `AsyncListener`
Throws:
  `IOException`

### onComplete

public void onComplete(AsyncEvent event) throws IOException

Specified by:
  `onComplete` in interface `AsyncListener`
Throws:
  `IOException`