I have created a servlet 3.0 to explore asynchronous request processing:
@WebServlet(name="MyTest", urlPatterns={"/MyTest"}, asyncSupported=true)
public class MyTest extends HttpServlet {
@Override
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
AsyncContext tmp = req.startAsync(req, res);
...
}
}
but I get an IllegalStateException
when .startAsync(...)
is called. I know the Javadoc mentions that exception, but I did explicitly enable async (c.f. WebServlet
annotation). I am using Tomcat 7.0.11.0 delivered with NetBeans.
I could confirm that req.isAsyncSupported()
is returning false. What am I doing wrong? What more do I need to do to enable async processing?
EDIT:
I tried to implement the following example and got the same issue.
I checked out Tomcat's code and saw that the asyncSupported variable has to be explicitly set to true. That's why you are getting req.isAsyncSupported() == false
.
You could try to set the async attribute in the HttpServletRequest object to true by one of the following methods.
req.setAttribute("org.apache.catalina.ASYNC_SUPPORTED", true);
or
((org.apache.catalina.connector.Request)req).setAsyncSupported(true);
Hope it helps.
Please check if you have any request filter which is not enabled to support async. Either you can remove the filter (temporarily) or mark it to support async.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With