Details
-
Bug
-
Resolution: Done
-
Major
-
7.0.2.Final
-
None
-
Compatibility/Configuration
Description
Looking up BeanManager from JNDI doesn't work if the lookup is done from ServletRequestListener.requestInitialized(). You can reproduce this issue by simply adding this class to CDI WAR application deployed to AS 7.0.2.Final:
@WebListener @WebFilter(urlPatterns = "/*") public class TestListener implements ServletRequestListener, Filter { @Override public void init(FilterConfig config) throws ServletException { lookupBeanManager("Filter.init()"); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { lookupBeanManager("filter.doFilter()"); chain.doFilter(request, response); } @Override public void destroy() { } @Override public void requestInitialized(ServletRequestEvent event) { lookupBeanManager("ServletRequestListener.requestInitialized()"); } @Override public void requestDestroyed(ServletRequestEvent arg0) { } private void lookupBeanManager(String calledFrom) { try { InitialContext ic = new InitialContext(); Object beanManager = ic.lookup("java:comp/BeanManager"); System.out.println(calledFrom + ": Lookup SUCCESS"); } catch (NamingException e) { System.out.println(calledFrom + ": Lookup FAILED"); } } }
You will see that the lookup works fine for the Filter methods initFilter and doFilter, but not for requestInitialized.