[ 
https://issues.apache.org/jira/browse/EXTCDI-120?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gerhard Petracek resolved EXTCDI-120.
-------------------------------------

       Resolution: Fixed
    Fix Version/s: 0.9.3

> 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
>             Fix For: 0.9.3
>
>
> 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.

Reply via email to