相关疑难解决方法(0)

IllegalStateException:AsyncContext.startAsync(req,res)不支持

我创建了一个servlet 3.0来探索异步请求处理:

@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);
        ...

    }    

}
Run Code Online (Sandbox Code Playgroud)

但我得到的IllegalStateException时候.startAsync(...)被调用.我知道Javadoc提到了异常,但我明确地启用了异步(cf WebServletannotation).我正在使用随NetBeans提供的Tomcat 7.0.11.0.

我可以确认这req.isAsyncSupported()是假的.我究竟做错了什么?我还需要做些什么来启用异步处理?

编辑:

我试图实现以下示例并得到相同的问题.

java asynchronous process request servlet-3.0

13
推荐指数
2
解决办法
8542
查看次数

异步Servlet异常

我是JavaEE 6的新手,我了解到它支持名为AsyncServlets的异步servlet.所以我尝试使用JavaEE6创建一个小程序.

这是我的servlet代码

@WebServlet(name = "AsyncServlet", urlPatterns = {"/AsyncServlet"}, asyncSupported=true)
public class AsyncServlet extends HttpServlet {


    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        AsyncContext aCtx = request.startAsync(request, response);
        Executor executor = Executors.newSingleThreadExecutor();
        executor.execute(new MyClass(aCtx));
        System.out.println("Original thread is freed");
    }




} 
Run Code Online (Sandbox Code Playgroud)

但是当我尝试运行servlet时,我得到一个异常java.lang.IllegalStateException:不支持.我正在使用tomcat 7.0.14作为服务器.我没有创建web.xml.这段代码中的问题在哪里?

编辑:

这是异常的完整堆栈跟踪

SEVERE: Servlet.service() for servlet [AsyncServlet] in context with path [/AsyncTest] threw exception
java.lang.IllegalStateException: Not supported.
at org.apache.catalina.connector.Request.startAsync(Request.java:1618)
at org.apache.catalina.connector.RequestFacade.startAsync(RequestFacade.java:1031)
at javax.servlet.ServletRequestWrapper.startAsync(ServletRequestWrapper.java:379)
at com.icbt.demo.servlet.AsyncServlet.doGet(AsyncServlet.java:30)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at …
Run Code Online (Sandbox Code Playgroud)

java servlet-3.0 java-ee-6 tomcat7

4
推荐指数
1
解决办法
6527
查看次数

标签 统计

java ×2

servlet-3.0 ×2

asynchronous ×1

java-ee-6 ×1

process ×1

request ×1

tomcat7 ×1