google / google/guice

Guice can't create async servlet

Open
#650 8 comments 0 reactions 0 assignees View on GitHub
imported
Dominant language
Java
Stars
12.7k
Forks
1.7k
Avg merge
11m
Merged PRs (30d)
2

Description

_From [swapii](https://code.google.com/u/103782806946526981779/) on August 30, 2011 07:39:51_

I've connect Guice to my project, write web.xml and everything gone right until I wan't to realize async servlet. I using Tomcat 7.0.20 and Guice 3.0. Servlets spec version is 3.0.

Test Comet servlet:

`@`Singleton
`@`WebServlet(name = "comet", urlPatterns = {"/comet"}, asyncSupported = true)
public class CometServlet extends HttpServlet {

        private class TestThread implements Runnable {

                private AsyncContext context;

                public TestThread(AsyncContext ctx) {
                        context = ctx;
                }

                `@`Override
                public void run() {
                        try {
                                Thread.sleep(5000);
                                context.getResponse().getWriter().write("TEST!");
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        } catch (IOException e) {
                                e.printStackTrace();
                        }
                }
        }

        `@`Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
                AsyncContext ctx = req.startAsync(req, resp);
                new Thread(new TestThread(ctx)).start();
        }
        
}

Servlet created, it placed at "/comet" path, but async not working and error was printed:

HTTP Status 500

java.lang.IllegalStateException: Not supported.
        org.apache.catalina.connector.Request.startAsync(Request.java:1638)
        org.apache.catalina.connector.RequestFacade.startAsync(RequestFacade.java:1031)
        javax.servlet.ServletRequestWrapper.startAsync(ServletRequestWrapper.java:379)
        javax.servlet.ServletRequestWrapper.startAsync(ServletRequestWrapper.java:379)
        ru.unimobi.cinema.server.server.servlets.CometServlet.service(CometServlet.java:46)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
        com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:216)
        com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:141)
        com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:93)
        com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:63)
        com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:134)
        com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:59)
        com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:122)
        com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:110)

I think this is bug, because I write web.xml directly without Guice and it working as expected.

_Original issue: http://code.google.com/p/google-guice/issues/detail?id=650_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.