Eu criei um servlet 3.0 para explorar o processamento de solicitações assíncronas:
@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); ... } }
mas recebo uma IllegalStateException
quando .startAsync(...)
é chamado. Eu sei que o Javadoc menciona essa exceção, mas eu habilitei explicitamente async (cf anotação WebServlet
). Eu estou usando o Tomcat 7.0.11.0 entregue com o NetBeans.
Eu poderia confirmar que req.isAsyncSupported()
está retornando false. O que estou fazendo de errado? O que mais preciso fazer para habilitar o processamento asynchronous?
EDITAR:
Eu tentei implementar o seguinte exemplo e recebi o mesmo problema.
Eu verifiquei o código do Tomcat e vi que a variável asyncSupported precisa estar explicitamente definida como true. É por isso que você está recebendo req.isAsyncSupported() == false
.
Você pode tentar definir o atributo async no object HttpServletRequest como true por um dos methods a seguir.
req.setAttribute("org.apache.catalina.ASYNC_SUPPORTED", true);
ou
((org.apache.catalina.connector.Request)req).setAsyncSupported(true);
Espero que ajude.
Por favor, verifique se você tem algum filtro de solicitação que não está habilitado para suportar async. Você pode remover o filtro (temporariamente) ou marcá-lo para suportar async.