Package org.apache.catalina.core

# Class AsyncContextImpl

java.lang.Object
org.apache.catalina.core.AsyncContextImpl

All Implemented Interfaces:
  `AsyncContext`, `AsyncContextCallback`

public class AsyncContextImpl extends Object implements AsyncContext, AsyncContextCallback

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected static final StringManager`
  `sm`

  ### Fields inherited from interface javax.servlet.AsyncContext

  `ASYNC_CONTEXT_PATH, ASYNC_PATH_INFO, ASYNC_QUERY_STRING, ASYNC_REQUEST_URI, ASYNC_SERVLET_PATH`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `AsyncContextImpl(Request request)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addListener(AsyncListener listener)`
  Adds an event listener that will be called for different AsyncEvents fire
  `void`
  `addListener(AsyncListener listener, ServletRequest servletRequest, ServletResponse servletResponse)`
  Adds an event listener that will be called when different AsyncEvents fire
  `void`
  `complete()`
  Completes the async request processing and closes the response stream
  `<T extends AsyncListener>
  T`
  `createListener(Class<T> clazz)`
  Creates and returns an AsyncListener object
  `void`
  `decrementInProgressAsyncCount()`
  Used to notify the Context that async processing has ended.
  `void`
  `dispatch()`
  `void`
  `dispatch(String path)`
  `void`
  `dispatch(ServletContext servletContext, String path)`
  `protected void`
  `doInternalDispatch()`
  `void`
  `fireOnComplete()`
  `ServletRequest`
  `getRequest()`
  `ServletResponse`
  `getResponse()`
  `long`
  `getTimeout()`
  Get the current timeout.
  `boolean`
  `hasOriginalRequestAndResponse()`
  `void`
  `incrementInProgressAsyncCount()`
  Used to notify the Context that async processing has started.
  `boolean`
  `isAvailable()`
  Reports if the web application associated with this async request is available.
  `boolean`
  `isStarted()`
  `void`
  `recycle()`
  `void`
  `setErrorState(Throwable t, boolean fireOnError)`
  `void`
  `setStarted(Context context, ServletRequest request, ServletResponse response, boolean originalRequestResponse)`
  `void`
  `setTimeout(long timeout)`
  Set the timeout.
  `void`
  `start(Runnable run)`
  Starts a new thread to process the asynchronous request
  `boolean`
  `timeout()`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### sm

    protected static final StringManager sm

- ## Constructor Details

  - ### AsyncContextImpl

    public AsyncContextImpl(Request request)

- ## Method Details

  - ### complete

    public void complete()
    Description copied from interface: `javax.servlet.AsyncContext`
    Completes the async request processing and closes the response stream
    Specified by:
      `complete` in interface `AsyncContext`

  - ### fireOnComplete

    public void fireOnComplete()
    Specified by:
      `fireOnComplete` in interface `AsyncContextCallback`

  - ### timeout

    public boolean timeout()

  - ### dispatch

    public void dispatch()
    Specified by:
      `dispatch` in interface `AsyncContext`

  - ### dispatch

    public void dispatch(String path)
    Specified by:
      `dispatch` in interface `AsyncContext`
    Parameters:
      `path` - The path to which the request/response should be dispatched relative to the `ServletContext` from which this async request was started.

  - ### dispatch

    public void dispatch(ServletContext servletContext, String path)
    Specified by:
      `dispatch` in interface `AsyncContext`
    Parameters:
      `servletContext` - The `ServletContext` to which the request/response should be dispatched.
      `path` - The path to which the request/response should be dispatched relative to the specified `ServletContext`.

  - ### getRequest

    public ServletRequest getRequest()
    Specified by:
      `getRequest` in interface `AsyncContext`
    Returns:
      a reference to the ServletRequest object

  - ### getResponse

    public ServletResponse getResponse()
    Specified by:
      `getResponse` in interface `AsyncContext`
    Returns:
      a reference to the ServletResponse object

  - ### start

    public void start(Runnable run)
    Description copied from interface: `javax.servlet.AsyncContext`
    Starts a new thread to process the asynchronous request
    Specified by:
      `start` in interface `AsyncContext`
    Parameters:
      `run` - a Runnable that the new thread will run

  - ### addListener

    public void addListener(AsyncListener listener)
    Description copied from interface: `javax.servlet.AsyncContext`
    Adds an event listener that will be called for different AsyncEvents fire
    Specified by:
      `addListener` in interface `AsyncContext`
    Parameters:
      `listener` - an AsyncListener that will be called with AsyncEvent objects

  - ### addListener

    public void addListener(AsyncListener listener, ServletRequest servletRequest, ServletResponse servletResponse)
    Description copied from interface: `javax.servlet.AsyncContext`
    Adds an event listener that will be called when different AsyncEvents fire
    Specified by:
      `addListener` in interface `AsyncContext`
    Parameters:
      `listener` - an AsyncListener that will be called with AsyncEvent objects
      `servletRequest` - the ServletRequest that will be passed with the AsyncEvent
      `servletResponse` - the ServletResponse that will be passed with the AsyncEvent

  - ### createListener

    public <T extends AsyncListener> T createListener(Class<T> clazz) throws ServletException
    Description copied from interface: `javax.servlet.AsyncContext`
    Creates and returns an AsyncListener object
    Specified by:
      `createListener` in interface `AsyncContext`
    Type Parameters:
      `T` - The type to create that extends AsyncListener
    Parameters:
      `clazz` - The class to instantiate to create the listener
    Returns:
      the newly created AsyncListener object
    Throws:
      `ServletException` - if the listener cannot be created

  - ### recycle

    public void recycle()

  - ### isStarted

    public boolean isStarted()

  - ### setStarted

    public void setStarted(Context context, ServletRequest request, ServletResponse response, boolean originalRequestResponse)

  - ### hasOriginalRequestAndResponse

    public boolean hasOriginalRequestAndResponse()
    Specified by:
      `hasOriginalRequestAndResponse` in interface `AsyncContext`
    Returns:
      true if the Request and Response are the original ones

  - ### doInternalDispatch

    protected void doInternalDispatch() throws ServletException, IOException
    Throws:
      `ServletException`
      `IOException`

  - ### getTimeout

    public long getTimeout()
    Description copied from interface: `javax.servlet.AsyncContext`
    Get the current timeout.
    Specified by:
      `getTimeout` in interface `AsyncContext`
    Returns:
      The timeout in milliseconds. 0 or less indicates no timeout.

  - ### setTimeout

    public void setTimeout(long timeout)
    Description copied from interface: `javax.servlet.AsyncContext`
    Set the timeout.
    Specified by:
      `setTimeout` in interface `AsyncContext`
    Parameters:
      `timeout` - The timeout in milliseconds. 0 or less indicates no timeout.

  - ### isAvailable

    public boolean isAvailable()
    Description copied from interface: `AsyncContextCallback`
    Reports if the web application associated with this async request is available.
    Specified by:
      `isAvailable` in interface `AsyncContextCallback`
    Returns:
      `true` if the associated web application is available, otherwise `false`

  - ### setErrorState

    public void setErrorState(Throwable t, boolean fireOnError)

  - ### incrementInProgressAsyncCount

    public void incrementInProgressAsyncCount()
    Description copied from interface: `AsyncContextCallback`
    Used to notify the Context that async processing has started. Specifically, for the counting of in-progress async requests to work correctly, this must be called exactly once every time the `AsyncStateMachine` transitions from DISPATCHED to any other state.
    Specified by:
      `incrementInProgressAsyncCount` in interface `AsyncContextCallback`

  - ### decrementInProgressAsyncCount

    public void decrementInProgressAsyncCount()
    Description copied from interface: `AsyncContextCallback`
    Used to notify the Context that async processing has ended. Specifically, for the counting of in-progress async requests to work correctly, this must be called exactly once every time the `AsyncStateMachine` transitions to DISPATCHED from any other state.
    Specified by:
      `decrementInProgressAsyncCount` in interface `AsyncContextCallback`