+1 for: Or a ctx param : o.a.m.INIT_ALWAYS. Nothing meteor-specific, I would say.
best regards, Martin On 10/29/10, Matthias Wessendorf <mat...@apache.org> wrote: > Or a ctx param : o.a.m.INIT_ALWAYS > > default => false > > sent from my Android phone > On Oct 29, 2010 12:41 PM, "Matthias Wessendorf" <mat...@apache.org> wrote: >> Currently MyFaces stops initializing when there is no (My)FacesServlet >> configured in the (present) web.xml. >> >> I am sure this is in 99.99% of all cases right. However there is a >> chance that a "wrapping" framework will >> instantiate the (My)FacesServlet, inside a wrapping Servlet. >> >> An example of that is the WebSocket/Comet Framework Atmosphere. >> As mentioned in [1] a typical configuration looks like: >> >> <servlet> >> <description>MeteorServlet</description> >> <servlet-name>MeteorServlet</servlet-name> >> <servlet-class>org.atmosphere.cpr.MeteorServlet</servlet-class> >> <init-param> >> <param-name>org.atmosphere.servlet</param-name> >> <param-value>javax.faces.webapp.FacesServlet</param-value> >> </init-param> >> <init-param> >> <param-name>org.atmosphere.useWebSocket</param-name> >> <param-value>true</param-value> >> </init-param> >> <init-param> >> <param-name>org.atmosphere.useNative</param-name> >> <param-value>true</param-value> >> </init-param> >> </servlet> >> >> >> So in order to enable the AbstractFacesInitializer.java to see that it >> can continue the initialization work, I thought about adding the >> following to shared WebXml.java: >> >> Index: src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXml.java >> =================================================================== >> --- src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXml.java > (revision >> 1028633) >> +++ src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXml.java > (working >> copy) >> @@ -107,6 +107,11 @@ >> public abstract boolean isErrorPagePresent(); >> >> /** >> + * Determines, if the web.xml contains the Atmosphere Meteor Servlet >> + */ >> + public abstract boolean isAtmosphereMeteorServletPresent(); >> + >> + /** >> * Returns true if the given servlet class is a valid FacesServlet. >> * This is the FacesServlet itself or any DelegatedFacesServlet. >> * >> >> >> The AbstractFacesInitializer would be changed to something like: >> >> >> >> Index: > impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java >> =================================================================== >> --- > impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java > (revision >> 1028633) >> +++ > impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java > (working >> copy) >> @@ -79,6 +79,7 @@ >> * application. >> */ >> public void initFaces(ServletContext servletContext) { >> + >> try { >> if (log.isLoggable(Level.FINEST)) { >> log.finest("Initializing MyFaces"); >> @@ -102,7 +103,9 @@ >> } >> >> return; >> - } else if (webXml.getFacesServletMappings().isEmpty()) { >> + } else if (webXml.getFacesServletMappings().isEmpty() && >> !webXml.isAtmosphereMeteorServletPresent()) { >> + // IF the >> + >> // check if the FacesServlet has been added dynamically >> // in a Servlet 3.0 environment by MyFacesContainerInitializer >> Boolean mappingAdded = (Boolean) >> servletContext.getAttribute(FACES_SERVLET_ADDED_ATTRIBUTE); >> >> >> What do you think? >> >> Note....of course - today we have Atmoshpere, tomorrow we may have >> different use cases to see if a different Servlet (and/or Filter) is >> present. >> Hence we could have something like instead: >> <WebXml_API> >> public abstract boolean containsServlet(String fullQualifiedClassName); >> </WebXml_API> >> >> (we want String here, since (with Atmosphere) we can't compile against >> it (->(L)GPL))... but we can use the String-based name >> as a constant in our code....) >> >> Oh yes... a similar change would be needed for the >> MyFacesContainerInitializer.java from our implee6 module. >> >> -Matthias >> >> [1] https://issues.apache.org/jira/browse/MYFACES-2952 >> >> -- >> Matthias Wessendorf >> >> blog: http://matthiaswessendorf.wordpress.com/ >> sessions: http://www.slideshare.net/mwessendorf >> twitter: http://twitter.com/mwessendorf > -- http://www.irian.at Your JSF powerhouse - JSF Consulting, Development and Courses in English and German Professional Support for Apache MyFaces