java - IllegalStateException : Not supported on AsyncContext. startAsync(请求,资源)

标签 java asynchronous process request servlet-3.0

我创建了一个 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);
        ...

    }    

}

但是当调用 .startAsync(...) 时,我得到一个 IllegalStateException。我知道 Javadoc 提到了该异常,但我确实明确启用了异步(参见 WebServlet 注释)。我使用的是随 NetBeans 一起提供的 Tomcat 7.0.11.0。

我可以确认 req.isAsyncSupported() 正在返回 false。我究竟做错了什么?我还需要做什么才能启用异步处理?

编辑:

我尝试实现以下 example并得到了同样的问题。

最佳答案

我检查了 Tomcat 的代码,发现 asyncSupported 变量必须明确设置为 true。这就是您得到 req.isAsyncSupported() == false 的原因。

您可以尝试通过以下方法之一将 HttpServletRequest 对象中的 async 属性设置为 true。

req.setAttribute("org.apache.catalina.ASYNC_SUPPORTED", true);

((org.apache.catalina.connector.Request)req).setAsyncSupported(true);

希望对您有所帮助。

关于java - IllegalStateException : Not supported on AsyncContext. startAsync(请求,资源),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7749350/

相关文章:

java - Process.waitFor() 一个线程

java - 两个依赖链 OSGI

java - 一方面是无限循环,另一方面是 NoSuchElementException

java - 检测变量变化

java - 动态编译java类web项目

asp.net - 异步任务 ASP.net HttpContext.Current.Items 为空 - 如何处理此问题?

javascript - 带有 Promise 的同步 Javascript 函数无法正常工作

mysql - node.js - 代码执行路径的精度

java - 为什么 Process.waitFor() 永远不会返回?

c++ - 多线程:thread 或 process.h - C++