org.springframework.web.context.request.async

## Interface AsyncWebRequest

- All Superinterfaces:
    NativeWebRequest, RequestAttributes, WebRequest
  All Known Implementing Classes:
    NoSupportAsyncWebRequest, StandardServletAsyncWebRequest

      public interface AsyncWebRequest
      extends NativeWebRequest

  Extends `NativeWebRequest` with methods for asynchronous request processing.
  Since:
    3.2
  Author:
    Rossen Stoyanchev

- - ### Field Summary

    - ### Fields inherited from interface org.springframework.web.context.request.RequestAttributes

      `REFERENCE_REQUEST, REFERENCE_SESSION, SCOPE_GLOBAL_SESSION, SCOPE_REQUEST, SCOPE_SESSION`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addCompletionHandler(Runnable runnable)` Add a handle to invoke when request processing completes.
    `void` | `addTimeoutHandler(Runnable runnable)` 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 asynchronous processing has completed.
    `boolean` | `isAsyncStarted()` Whether the request is in async mode following a call to `startAsync()`.
    `void` | `setTimeout(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.

    - ### Methods inherited from interface org.springframework.web.context.request.NativeWebRequest

      `getNativeRequest, getNativeRequest, getNativeResponse, getNativeResponse`

    - ### Methods inherited from interface org.springframework.web.context.request.WebRequest

      `checkNotModified, checkNotModified, getContextPath, getDescription, getHeader, getHeaderNames, getHeaderValues, getLocale, getParameter, getParameterMap, getParameterNames, getParameterValues, getRemoteUser, getUserPrincipal, isSecure, isUserInRole`

    - ### Methods inherited from interface org.springframework.web.context.request.RequestAttributes

      `getAttribute, getAttributeNames, getSessionId, getSessionMutex, registerDestructionCallback, removeAttribute, resolveReference, setAttribute`

- - ### Method Detail

    - #### setTimeout

          void setTimeout(Long timeout)

      Set the time required for concurrent handling to complete. This property should not be set when concurrent handling is in progress, i.e. when `isAsyncStarted()` is `true`.
      Parameters:
        `timeout` - amount of time in milliseconds; `null` means no timeout, i.e. rely on the default timeout of the container.

    - #### addTimeoutHandler

          void addTimeoutHandler(Runnable runnable)

      Add a handler to invoke when concurrent handling has timed out.

    - #### addCompletionHandler

          void addCompletionHandler(Runnable runnable)

      Add a handle to invoke when request processing completes.

    - #### startAsync

          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.
      Throws:
        `IllegalStateException` - if async processing has completed or is not supported

    - #### isAsyncStarted

          boolean isAsyncStarted()

      Whether the request is in async mode following a call to `startAsync()`. Returns "false" if asynchronous processing never started, has completed, or the request was dispatched for further processing.

    - #### dispatch

          void dispatch()

      Dispatch the request to the container in order to resume processing after concurrent execution in an application thread.

    - #### isAsyncComplete

          boolean isAsyncComplete()

      Whether asynchronous processing has completed.