FacesServletInitializer interferes with FacesInitializer
--------------------------------------------------------
Key: SEAMFACES-163
URL:
https://issues.jboss.org/browse/SEAMFACES-163
Project: Seam Faces
Issue Type: Bug
Components: Configuration API
Affects Versions: 3.0.1
Environment: Glassfish 3.1. Mojarra 2.1.1, Weld 1.1.1, Seam-Faces 3.0.1
Reporter: Bryn Cooke
I have a basic 1 page JSF app on glassfish with seam-faces.
Sometimes I am getting java.lang.IllegalStateException: Application was not properly
initialized at startup, could not find Factory: javax.faces.context.FacesContextFactory
After some digging I think the problem is the following:
org.jboss.seam.faces.config.FacesServletInitializer and
com.sun.faces.config.FacesInitializer both have logic that tries to register the faces
servlet if one isn't already registered.
Glassfish seems to execute context listeners in a random order. Whichever listener is run
first will perform faces initialization (they both check to see if a faces servlet has
been
configured).
com.sun.faces.config.FacesInitializer has the following code, which seems to be required
to set up faces correctly.
// The following line is temporary until we can solve an ordering
// issue in V3. Right now the JSP container looks for a mapping
// of the FacesServlet in the web.xml. If it's not present, then
// it assumes that the application isn't a faces application. In this
// case the JSP container will not register the ConfigureListener
// definition from our TLD nor will it parse cause or JSP TLDs to
// be parsed.
servletContext.addListener(com.sun.faces.config.ConfigureListener.class);
This bug is not deterministic due to the random ordering of listeners by Glassfish.
--
This message is automatically generated by JIRA.
For more information on JIRA, see:
http://www.atlassian.com/software/jira