in extscript-core-root/extscript-cdi/src/main/java/org/apache/myfaces/extensions/scripting/cdi/core/ReloadingListener.java [47:86]
public void onEvent(WeavingEvent evt)
{
if (evt instanceof TaintedEvent)
{
_tainted = true;
} else if (evt instanceof RefreshBeginEvent)
{
RefreshBeginEvent refreshEvent = (RefreshBeginEvent) evt;
if (_tainted)
{
_tainted = false;
HttpServletRequest req = (HttpServletRequest) refreshEvent.getRequest();
//TODO plug reloadable classloader in here temporarily
//as context classloader, then restart the container
//then restore the old classloader
//ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
//ClassLoader tempClassLoader = new ThrowAwayClassloader(oldClassLoader);
//Thread.currentThread().setContextClassLoader(tempClassLoader);
try
{
OpenWebBeansContainerControl container = (OpenWebBeansContainerControl) CdiContainerLoader
.getCdiContainer();
container.init();
container.getContextControl(req.getServletContext(),
req.getSession()).stopContexts();
container.shutdown(new ServletContextEvent(req.getServletContext()));
CdiContainerLoader.getCdiContainer().boot(new ServletContextEvent(req.getServletContext()));
container.getContextControl(req.getServletContext(),
req.getSession()).startContexts();
}
finally
{
//Thread.currentThread().setContextClassLoader(oldClassLoader);
}
}
}
}