in extscript-core-root/extscript-weld/src/main/java/org/apache/myfaces/extension/scripting/weld/startup/Listener.java [126:191]
public void contextInitialized(ServletContextEvent sce) {
// Make Javassist always use the TCCL to load classes
ProxyFactory.classLoaderProvider = new ClassLoaderProvider() {
public ClassLoader get(ProxyFactory pf) {
return Thread.currentThread().getContextClassLoader();
}
};
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");
if (log.isDebugEnabled())
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);
}