[
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