package com.example.zhangwenbo.demo.web.servlet;
import org.springframework.http.HttpRequest;
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;
import java.io.IOException;
@WebServlet(urlPatterns = "/test",
asyncSupported = true)
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
AsyncContext asyncContext = req.getAsyncContext();
asyncContext.start(() -> {
try {
resp.getWriter().println("Hello World");
} catch (IOException e) {
e.printStackTrace();
}finally {
asyncContext.complete();
}
});
}
}
java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode (i.e. isAsyncStarted() returns false)
at org.apache.catalina.connector.Request.getAsyncContext(Request.java:1758) ~[tomcat-embed-core-9.0.19.jar:9.0.19]
at org.apache.catalina.connector.RequestFacade.getAsyncContext(RequestFacade.java:1068) ~[tomcat-embed-core-
AsyncContext asyncContext = req.getAsyncContext(); 改为 AsyncContext asyncContext = req.startAsync();