StartupEventBroadcaster
-----------------------
Key: EXTCDI-120
URL: https://issues.apache.org/jira/browse/EXTCDI-120
Project: MyFaces CODI
Issue Type: New Feature
Components: Core
Reporter: Gerhard Petracek
before codi configures anything it should be possible to process initialization
tasks.
public interface StartupEventBroadcaster
{
void broadcastStartup();
}
example for an use-case:
it can be used for an improved app-server support in combination with mojarra
the basic problem is the early config approach of mojarra.
if mojarra gets invoked before the bootstrapping process of a cdi container, it
starts to configure everything immediately and codi gets invoked (outside a cdi
context).
in such a case it's possible to use a custom ServletContextListener for
bootsrapping the container.
in case of owb it's possible to extend WebBeansConfigurationListener
example:
public class MojarraAwareWebBeansConfigurationListener extends
WebBeansConfigurationListener implements StartupEventBroadcaster
{
private static Boolean initialized = false;
private static ContainerLifecycle storedContainerLifecycle;
public void contextInitialized(ServletContextEvent event)
{
if (!initialized)
{
//in this case CDI is bootstrapped already
super.contextInitialized(event);
initialized = true;
storedContainerLifecycle = this.lifeCycle;
}
}
public void broadcastStartup()
{
if (initialized)
{
return;
}
//in this case Mojarra was invoked too soon
FacesContext facesContext = FacesContext.getCurrentInstance();
if (facesContext != null && facesContext.getExternalContext() != null)
{
//force bootstrapping of OWB
contextInitialized(new ServletContextEvent((ServletContext)
facesContext.getExternalContext().getContext()));
initialized = true;
}
}
public void requestInitialized(ServletRequestEvent event)
{
if (this.lifeCycle == null)
{
//here we have a different instance
this.lifeCycle = storedContainerLifecycle;
}
super.requestInitialized(event);
}
}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.