[ 
https://issues.apache.org/jira/browse/MYFACES-3055?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12998131#comment-12998131
 ] 

vvasabi commented on MYFACES-3055:
----------------------------------

Okay, after hacking around for a bit, here's the solution that I have.

Web.xml:
<context-param>
    <param-name>org.apache.myfaces.FACES_INIT_PLUGINS</param-name>
    <param-value>my.package.MyFacesStartupListener</param-value>
</context-param>

MyFacesStartupListener:
public class MyFacesStartupListener implements StartupListener {

        private static final String FACTORY_KEY = 
FacesConfigResourceProviderFactory.class.getName();

        @Override
        public void postDestroy(ServletContextEvent event) {
        }

        @Override
        public void postInit(ServletContextEvent event) {
        }

        @Override
        public void preDestroy(ServletContextEvent event) {
        }

        @Override
        public void preInit(ServletContextEvent event) {
                ServletContext context = event.getServletContext();
                context.setAttribute(FACTORY_KEY, new 
MyFacesConfigResourceProviderFactory());
        }

}

MyFacesConfigResourceProviderFactory:
public class MyFacesConfigResourceProviderFactory
        extends FacesConfigResourceProviderFactory {

        @Override
        public FacesConfigResourceProvider createFacesConfigResourceProvider(
                        ExternalContext ectx) {
                return new MyFacesConfigResourceProvider();
        }

}

MyFacesConfigResourceProvider:
public class MyFacesConfigResourceProvider
        extends DefaultFacesConfigResourceProvider {

        @Override
        public Collection<URL> getMetaInfConfigurationResources(
                ExternalContext ectx) throws IOException {
                Collection<URL> resources = 
super.getMetaInfConfigurationResources(ectx);
                Collection<URL> filtered = new HashSet<URL>();
                for (URL resource : resources) {
                        if (!filtered.contains(resource)) {
                                filtered.add(resource);
                        }
                }
                return filtered;
        }

}

This workaround may be helpful for people who also have a buggy ClassLoader.

> META-INF/faces-config.xml files in JARs are loaded twice
> --------------------------------------------------------
>
>                 Key: MYFACES-3055
>                 URL: https://issues.apache.org/jira/browse/MYFACES-3055
>             Project: MyFaces Core
>          Issue Type: Bug
>    Affects Versions: 2.0.3, 2.0.4
>         Environment: Mac OS X, EclipseRT Virgo 2.1.0
>            Reporter: vvasabi
>
> META-INF/faces-config.xml files in the jars of component libraries are loaded 
> twice, causing OpenFaces to give the following error:
> Second notification for the same phase in the same request occurred.
> Below is the server log. Note that same config files, 
> 99/1/bundlefile!/META-INF/faces-config.xml and 
> 101/1/bundlefile!/META-INF/faces-config.xml are loaded twice.
> [2011-02-22 17:00:55.245] start-signalling-1           System.err             
>                                            Feb 22, 2011 5:00:55 PM 
> org.apache.myfaces.config.DefaultFacesConfigurationProvider 
> getClassloaderFacesConfig 
> [2011-02-22 17:00:55.246] start-signalling-1           System.err             
>                                            INFO: Reading config : 
> jar:file:/usr/local/virgo-web-server/work/osgi/configuration/org.eclipse.osgi/bundles/36/data/store/org.eclipse.osgi/bundles/99/1/bundlefile!/META-INF/faces-config.xml
>  
> [2011-02-22 17:00:55.277] start-signalling-1           System.err             
>                                            Feb 22, 2011 5:00:55 PM 
> org.apache.myfaces.config.DefaultFacesConfigurationProvider 
> getClassloaderFacesConfig 
> [2011-02-22 17:00:55.277] start-signalling-1           System.err             
>                                            INFO: Reading config : 
> jar:file:/usr/local/virgo-web-server/work/osgi/configuration/org.eclipse.osgi/bundles/36/data/store/org.eclipse.osgi/bundles/101/1/bundlefile!/META-INF/faces-config.xml
>  
> [2011-02-22 17:00:55.290] start-signalling-1           System.err             
>                                            Feb 22, 2011 5:00:55 PM 
> org.apache.myfaces.config.DefaultFacesConfigurationProvider 
> getClassloaderFacesConfig 
> [2011-02-22 17:00:55.291] start-signalling-1           System.err             
>                                            INFO: Reading config : 
> jar:file:/usr/local/virgo-web-server/work/osgi/configuration/org.eclipse.osgi/bundles/36/data/store/org.eclipse.osgi/bundles/99/1/bundlefile!/META-INF/faces-config.xml
>  
> [2011-02-22 17:00:55.369] start-signalling-1           System.err             
>                                            Feb 22, 2011 5:00:55 PM 
> org.apache.myfaces.config.DefaultFacesConfigurationProvider 
> getClassloaderFacesConfig 
> [2011-02-22 17:00:55.370] start-signalling-1           System.err             
>                                            INFO: Reading config : 
> jar:file:/usr/local/virgo-web-server/work/osgi/configuration/org.eclipse.osgi/bundles/36/data/store/org.eclipse.osgi/bundles/101/1/bundlefile!/META-INF/faces-config.xml
> However, /WEB-INF/faces-config.xml in the war is only loaded once, so I 
> suspect that this is a bug with 
> org.apache.myfaces.config.DefaultFacesConfigurationProvider. My current 
> workaround to install OpenFaces is, therefore, extract 
> META-INF/faces-config.xml out of the jar, and load it with the war.

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to