Package org.apache.catalina.core
Class AsyncContextImpl
- java.lang.Object
-
- org.apache.catalina.core.AsyncContextImpl
-
- All Implemented Interfaces:
AsyncContext
,AsyncContextCallback
public class AsyncContextImpl extends java.lang.Object implements AsyncContext, AsyncContextCallback
-
-
Field Summary
Fields Modifier and Type Field Description 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 Constructor Description AsyncContextImpl(Request request)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addListener(AsyncListener listener)
Adds an event listener that will be called for different AsyncEvents firevoid
addListener(AsyncListener listener, ServletRequest servletRequest, ServletResponse servletResponse)
Adds an event listener that will be called when different AsyncEvents firevoid
complete()
Completes the async request processing and closes the response stream<T extends AsyncListener>
TcreateListener(java.lang.Class<T> clazz)
Creates and returns an AsyncListener objectvoid
decrementInProgressAsyncCount()
Used to notify the Context that async processing has ended.void
dispatch()
void
dispatch(ServletContext servletContext, java.lang.String path)
void
dispatch(java.lang.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(java.lang.Throwable t, boolean fireOnError)
void
setStarted(Context context, ServletRequest request, ServletResponse response, boolean originalRequestResponse)
void
setTimeout(long timeout)
Set the timeout.void
start(java.lang.Runnable run)
Starts a new thread to process the asynchronous requestboolean
timeout()
-
-
-
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 interfaceAsyncContext
-
fireOnComplete
public void fireOnComplete()
- Specified by:
fireOnComplete
in interfaceAsyncContextCallback
-
timeout
public boolean timeout()
-
dispatch
public void dispatch()
- Specified by:
dispatch
in interfaceAsyncContext
-
dispatch
public void dispatch(java.lang.String path)
- Specified by:
dispatch
in interfaceAsyncContext
- Parameters:
path
- The path to which the request/response should be dispatched relative to theServletContext
from which this async request was started.
-
dispatch
public void dispatch(ServletContext servletContext, java.lang.String path)
- Specified by:
dispatch
in interfaceAsyncContext
- Parameters:
servletContext
- TheServletContext
to which the request/response should be dispatched.path
- The path to which the request/response should be dispatched relative to the specifiedServletContext
.
-
getRequest
public ServletRequest getRequest()
- Specified by:
getRequest
in interfaceAsyncContext
- Returns:
- a reference to the ServletRequest object
-
getResponse
public ServletResponse getResponse()
- Specified by:
getResponse
in interfaceAsyncContext
- Returns:
- a reference to the ServletResponse object
-
start
public void start(java.lang.Runnable run)
Description copied from interface:jakarta.servlet.AsyncContext
Starts a new thread to process the asynchronous request- Specified by:
start
in interfaceAsyncContext
- 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 interfaceAsyncContext
- 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 interfaceAsyncContext
- Parameters:
listener
- an AsyncListener that will be called with AsyncEvent objectsservletRequest
- the ServletRequest that will be passed with the AsyncEventservletResponse
- the ServletResponse that will be passed with the AsyncEvent
-
createListener
public <T extends AsyncListener> T createListener(java.lang.Class<T> clazz) throws ServletException
Description copied from interface:jakarta.servlet.AsyncContext
Creates and returns an AsyncListener object- Specified by:
createListener
in interfaceAsyncContext
- 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 interfaceAsyncContext
- Returns:
- true if the Request and Response are the original ones
-
doInternalDispatch
protected void doInternalDispatch() throws ServletException, java.io.IOException
- Throws:
ServletException
java.io.IOException
-
getTimeout
public long getTimeout()
Description copied from interface:jakarta.servlet.AsyncContext
Get the current timeout.- Specified by:
getTimeout
in interfaceAsyncContext
- 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 interfaceAsyncContext
- 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 interfaceAsyncContextCallback
- Returns:
true
if the associated web application is available, otherwisefalse
-
setErrorState
public void setErrorState(java.lang.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 theAsyncStateMachine
transitions from DISPATCHED to any other state.- Specified by:
incrementInProgressAsyncCount
in interfaceAsyncContextCallback
-
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 theAsyncStateMachine
transitions to DISPATCHED from any other state.- Specified by:
decrementInProgressAsyncCount
in interfaceAsyncContextCallback
-
-