Suspend the processing of the request and associated {@link ServletResponse}.
After this method has been called, the lifecycle of the request will be extended beyond the return to the container from the {@link Servlet#service(ServletRequest,ServletResponse)} method and{@link Filter#doFilter(ServletRequest,ServletResponse,FilterChain)}calls. When a suspended request is returned to the container after a dispatch, then the container will not commit the associated response (unless an exception other than {@link ContinuationThrowable} is thrown).
When the thread calling the filter chain and/or servlet has returned to the container with a suspended request, the thread is freed for other tasks and the request is held until either:
- a call to {@link #resume()}.
- a call to {@link #complete()}.
- the timeout expires.
Typically suspend with no arguments is uses when a call to {@link #resume()}is expected. If a call to {@link #complete()} is expected, then the {@link #suspend(ServletResponse)} method should be used instead of this method.
@exception IllegalStateException If the request cannot be suspended