Asynchronous Servlet Exception

I am new to JavaEE 6 and I found out that it supports asynchronous servlets called AsyncServlets. So I tried to create a small program using JavaEE6.

Here is my servlet code

@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"); } } 

But when I try to start the servlet, I get java.lang.IllegalStateException: exception not supported. I am using tomcat 7.0.14 as a server. I did not create web.xml. Where is the problem in this code?

EDIT:

This is a complete exception stack trace.

 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 org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) 
+4
source share
2 answers

if you use tomcat as your web server, then you must indicate that you are going to use the asyc request for tomcat

put this line code before starting the asynchronous request

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

I hope you can get what you want from him.

+8
source

An IllegalStateException is thrown if an application tries to start an asynchronous operation and there is a servlet or servlet filter in the request processing chain that does not support asynchronous processing. Therefore, error.plz error may occur.

+4
source

All Articles