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
`protected static StringManager` `sm`

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

`ASYNC_CONTEXT_PATH, ASYNC_MAPPING, ASYNC_PATH_INFO, ASYNC_QUERY_STRING, ASYNC_REQUEST_URI, ASYNC_SERVLET_PATH`

### Constructor Summary

Constructors
`AsyncContextImpl​(Request request)`

### Method Summary

All Methods Instance Methods Concrete Methods
`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​(ServletContext servletContext, String path)`
`void` `dispatch​(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 Detail

#### sm

    protected static final StringManager sm

### Constructor Detail

#### AsyncContextImpl

    public AsyncContextImpl​(Request request)

### Method Detail

#### complete

    public void complete()

Description copied from interface: `jakarta.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: `jakarta.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: `jakarta.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: `jakarta.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: `jakarta.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: `jakarta.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: `jakarta.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`