Using JBoss AS 7.1CRb I have defined the following Servlet AsyncListener:
@ManagedBean public class AsyncServletListener implements AsyncListener { @Inject private AsyncBean asyncBean; @Override public void onStartAsync(AsyncEvent event) throws IOException { System.out.println("onStartAsync"); } @Override public void onComplete(AsyncEvent event) throws IOException { System.out.println("onComplete"); } @Override public void onError(AsyncEvent event) throws IOException { System.out.println("onError"); } @Override public void onTimeout(AsyncEvent event) throws IOException { System.out.println("onTimeout"); } }
I registered this listener on an AsyncContext as follows:
AsyncContext asyncContext = request.startAsync(); asyncContext.addListener(asyncContext.createListener(AsyncServletListener.class));
The listener is called correctly, but there's no injection happening. Everything is inside a single war and the mandatory empty beans.xml has been created. JBoss AS is indeed starting up CDI ("Starting weld service" appears in the logs).
If I run the same code in GlassFish, injection does happen.