异步Servlet或过滤器不起作用

时间:2016-01-22 17:59:03

标签: java servlets asynchronous

我是Java EE的新手,并且即将学会使用异步Servlet。我创建了一个带有简单index.jsp的Web应用程序,在按下按钮后调用servlet。我总是得到以下例外:

  

java.lang.IllegalStateException:请求在a的范围内   不支持异步操作的过滤器或servlet

但我在servlet或web.xml中以两种方式将async-supported设置为true作为注释。我在这里通过类似的问题搜索了几个小时,但我找不到解决方案。我正在使用随NetBeans一起提供的NetBeans 8.0.2和glassfish服务器4.1。这是我的index.jsp:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Async Test</h1>
        <form method="get" action="Asynctest">
            <input type="submit"
                   value="Start test">
        </form>
    </body>
</html>

Asynctest servlet:

package Controller;

import java.io.IOException;
import javax.servlet.AsyncContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        AsyncContext ac = request.startAsync(request, response);
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
}

和web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <servlet>
        <servlet-name>Asynctest</servlet-name>
        <servlet-class>Controller.Asynctest</servlet-class>
        <async-supported>true</async-supported>
    </servlet>
    <servlet-mapping>
        <servlet-name>Asynctest</servlet-name>
        <url-pattern>/Asynctest</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>

这让我发疯了...感谢您的帮助!

0 个答案:

没有答案
相关问题