[ 
https://issues.apache.org/jira/browse/EXTCDI-120?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12981950#action_12981950
 ] 

Gerhard Petracek commented on EXTCDI-120:
-----------------------------------------

it's a hook for codi btw. support-modules or add-ons e.g. for integrating 
existing frameworks like mojarra and gets triggered >before< bootstrapping 
codi. (that's the only contract.)
what you are referring to is a different story. for jsf based apps codi 
provides such an event (see StartupEvent)
however, it would be nice to get an event which gets fired after the 
bootstrapping process of cdi.

> 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