protected Container checkContainers( ContainerContext cc, StringBuilder dump, Iterable<Container> containers) { for (Container c : containers) { try { if (c.touch(cc)) return c; } catch (Throwable t) { dump.append(c).append("->").append(t.getMessage()).append("\n"); } } return null; }
@Override public void contextDestroyed(ServletContextEvent sce) { bootstrap.shutdown(); if (container != null) container.destroy(new ContainerContext(sce, null)); super.contextDestroyed(sce); }
@Override public void contextInitialized(ServletContextEvent sce) { ClassLoader classLoader = Reflections.getClassLoader(); ServletContext context = sce.getServletContext(); URLScanner scanner = createUrlScanner(classLoader, context); if (scanner != null) { context.setAttribute(URLScanner.class.getName(), scanner); } ServletDeployment deployment = createServletDeployment(context, bootstrap); try { deployment .getWebAppBeanDeploymentArchive() .getServices() .add(ResourceInjectionServices.class, new ServletResourceInjectionServices() {}); } catch (NoClassDefFoundError e) { // Support GAE log.warn("@Resource injection not available in simple beans"); } bootstrap.startContainer(Environments.SERVLET, deployment).startInitialization(); WeldManager manager = bootstrap.getManager(deployment.getWebAppBeanDeploymentArchive()); ContainerContext cc = new ContainerContext(sce, manager); StringBuilder dump = new StringBuilder(); Container container = findContainer(cc, dump); if (container == null) { log.info( "No supported servlet container detected, CDI injection will NOT be available in Servlets, Filters or Listeners"); log.debug("Exception dump from Container lookup: {}", dump); } else { container.initialize(cc); this.container = container; } // Push the manager into the servlet context so we can access in JSF context.setAttribute(BEAN_MANAGER_ATTRIBUTE_NAME, manager); if (JspFactory.getDefaultFactory() != null) { JspApplicationContext jspApplicationContext = JspFactory.getDefaultFactory().getJspApplicationContext(context); // Register the ELResolver with JSP jspApplicationContext.addELResolver(manager.getELResolver()); // Register ELContextListener with JSP jspApplicationContext.addELContextListener( Reflections.<ELContextListener>newInstance("org.jboss.weld.el.WeldELContextListener")); // Push the wrapped expression factory into the servlet context so that Tomcat or Jetty can // hook it in using a container code context.setAttribute( EXPRESSION_FACTORY_NAME, manager.wrapExpressionFactory(jspApplicationContext.getExpressionFactory())); } bootstrap.deployBeans().validateBeans().endInitialization(); super.contextInitialized(sce); }
@Override public void destroy(ContainerContext context) { delegate.destroy(context); }
@Override public void initialize(ContainerContext context) { delegate.initialize(context); }
@Override public boolean touch(ContainerContext context) throws Exception { return delegate.touch(context); }