myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mark Struberg (JIRA)" <...@myfaces.apache.org>
Subject [jira] Commented: (EXTCDI-120) StartupEventBroadcaster
Date Fri, 14 Jan 2011 20:57:45 GMT

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

Mark Struberg commented on EXTCDI-120:
--------------------------------------

might it be interesting to propose the introduction of a new ContainerStarted system Event
(JSR-299 spec section 11).
Will ask for clarification about it on the weld-dev list.

> 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.


Mime
View raw message