[cdi-dev] [JBoss JIRA] (CDI-452) Specify that web scoped (request, session, application) beans are injectable in async servlets

Ed Burns (JIRA) issues at jboss.org
Wed Aug 13 16:44:29 EDT 2014


Ed Burns created CDI-452:
----------------------------

             Summary: Specify that web scoped (request, session, application) beans are injectable in async servlets
                 Key: CDI-452
                 URL: https://issues.jboss.org/browse/CDI-452
             Project: CDI Specification Issues
          Issue Type: Feature Request
          Components: Java EE integration
    Affects Versions: 1.0
            Reporter: Ed Burns
            Priority: Trivial


Consider this code based on this blog post: < https://weblogs.java.net/blog/swchan2/archive/2013/06/06/asynchronous-servlet-and-java-ee-concurrency-utilities >.

{code}
@WebServlet(urlPatterns="/test2", asyncSupported=true)
public class TestAsyncMESServlet extends HttpServlet {
    @Resource
    private ManagedExecutorService managedExecutorService;

    @Inject
    MyRunnableImpl myRunnableImpl;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse res)
            throws ServletException, IOException {

        final AsyncContext asyncContext = req.startAsync();
        final PrintWriter writer = res.getWriter();

        managedExecutorService.submit(myRunnableImpl);
    }

    public static class MyRunnableImpl implements Runnable {

      @Inject
      Bean bean; // Bean is @RequestScoped

      @Override
      public void run() {
	  writer.println("Done");
	  asyncContext.complete();
      }

    }
}
{code}

According to Jozef Hartzinger, this currently does not work, because only @Dependent and @ApplicationScoped beans are propagated to the new thread.  To keep CDI relevant in light of the reactive programming movement and the popularity of node.js, we need to make this work.





--
This message was sent by Atlassian JIRA
(v6.2.6#6264)


More information about the cdi-dev mailing list