myfaces-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jakob Korherr <jakob.korh...@gmail.com>
Subject Re: update from 1.1.6 to 1.2.8 -> IllegalStateException: No Factories configured for this Application
Date Tue, 08 Dec 2009 10:39:25 GMT
You're welcome!

OK, well now it's clear. The problem is that AbstractFacesInitializer checks
the web.xml for FacesServlet entries. This is achieved by looking at every
servlet entry in the web.xml and checking if the class is either
javax.faces.webapp.FacesServlet or a class that implements
org.apache.myfaces.shared.webapp.webxml.DelegatedFacesServlet. If no
appropriate class is found, the described exception is thrown.

So you just have to change your FacesServletWrapper to implement the (empty)
interface DelegatedFacesServlet and it should work.

However, a better way would be to extend
org.apache.myfaces.webapp.MyFacesServlet, which is a fully working
FacesServlet delegate solution. Then you only have to override the service
method as follows:

try {
    super.service(...);
} catch (Throwable throwable) {
 ...
}

I hope this will solve your problem!

Regards,

Jakob

2009/12/8 Michael Heinen <michael.heinen@recommind.com>

> Thanks Jakob.
>
> Now I see following WARN message:
> [2009-12-08 09:31:50,287] main [ WARN] [] webapp.AbstractFacesInitializer
> initFaces: No mappings of FacesServlet found. Abort initializing MyFaces.
>
> I specified a Wrapper around the FacesServlet for better exception
> handling.
> This worked well with myFaces 1.1.6
>
>  <servlet>
>    <servlet-name>Faces Servlet</servlet-name>
>    <servlet-class>foo.servlets.FacesServletWrapper</servlet-class>
>  <servlet>
>  <servlet-mapping>
>    <servlet-name>Faces Servlet</servlet-name>
>    <url-pattern>/faces/*</url-pattern>
>  </servlet-mapping>
>
> public class FacesServletWrapper extends HttpServlet {
>  private FacesServlet delegate;
>  …
>
>  public void service(ServletRequest request, ServletResponse response)
> throws ServletException, IOException {
>    try {
>      this.delegate.service(request, response);
>    }
>    catch (Throwable throwable) {
> …
>
> Isn’t this supported anymore?
> How Do I use this pattern with JSF 1.2?
>
> Michael
>
> From: sethfromaustria@gmail.com [mailto:sethfromaustria@gmail.com] On
> Behalf Of Jakob Korherr
> Sent: Montag, 7. Dezember 2009 18:21
> To: Michael Heinen
> Cc: MyFaces Discussion
> Subject: Re: update from 1.1.6 to 1.2.8 -> IllegalStateException: No
> Factories configured for this Application
>
> Hi Michael,
>
> Looking at the following lines, the StartupServletContextListener wants to
> tell you something, but you are not listening:
>
> log4j:WARN No appenders could be found for logger
> (org.apache.myfaces.webapp.StartupServletContextListener).
> log4j:WARN Please initialize the log4j system properly.
>
> The factories for MyFaces are configured in the
> StartupServletContextListener, so something must went wrong in its
> contextInitialized() method.
>
> Please configure a logger for StartupServletContextListener and post the
> output to the mailing list for more information about the problem!
>
> Regards,
>
> Jakob Korherr
>
> 2009/12/7 Michael Heinen <michael.heinen@recommind.com<mailto:
> michael.heinen@recommind.com>>
> Hi,
>
> I tried to update my webApp  from MyFaces 1.1.6, Tomahawk 1.1.7 and
> RichFaces 3.1.5 to JSF 1.2 compliant version.
>
> Now the app does not start anymore and I get following exception on
> startup:
>
> INFO: Starting Servlet Engine: Apache Tomcat/6.0.18
> 07.12.2009 17:58:49 org.apache.catalina.core.StandardContext
> addApplicationListener
> INFO: The listener
> "org.apache.myfaces.webapp.StartupServletContextListener" is already
> configured for this context. The duplicate definition has been ignored.
> log4j:WARN No appenders could be found for logger
> (org.apache.myfaces.webapp.StartupServletContextListener).
> log4j:WARN Please initialize the log4j system properly.
> 07.12.2009 17:58:50 org.apache.catalina.core.ApplicationContext log
> SCHWERWIEGEND: StandardWrapper.Throwable
> java.lang.IllegalStateException: No Factories configured for this
> Application. This happens if the faces-initialization does not work at all -
> make sure that you properly include all configuration settings necessary for
> a basic faces application and that all the necessary libs are included. Also
> check the logging output of your web application and your container for any
> exceptions!
> If you did that and find nothing, the mistake might be due to the fact that
> you use some special web-containers which do not support registering
> context-listeners via TLD files and a context listener is not setup in your
> web.xml.
> A typical config looks like this;
> <listener>
>
>  <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
> </listener>
>
>               at
> javax.faces.FactoryFinder.getFactory(FactoryFinder.java:106)
>               at
> javax.faces.webapp.FacesServlet.init(FacesServlet.java:132)
>               at
> com.recommind.litigation.client.web.servlets.FacesServletWrapper.init(FacesServletWrapper.java:73)
>               at
> org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1172)
>               at
> org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
>               at
> org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
>               at
> org.apache.catalina.core.StandardContext.start(StandardContext.java:4371)
>               at
> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>               at
> org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
>               at
> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>               at
> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
>               at
> org.apache.catalina.core.StandardService.start(StandardService.java:516)
>               at
> org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
>               at
> org.apache.catalina.startup.Catalina.start(Catalina.java:578)
>               at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
>               at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>               at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>               at java.lang.reflect.Method.invoke(Method.java:597)
>               at
> org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
>               at
> org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
> 07.12.2009 17:58:50 org.apache.catalina.core.StandardContext loadOnStartup
> SCHWERWIEGEND: Servlet /foo threw load() exception
>
>
> What I did:
> 1) Updated myFaces jars from 1.1.6 to 1.2.8 (api and impl)
> 2) updated tomahawk 1.1.7 to tomahawk12-1.1.9
> 3) removed tomahawk sandbox 1.1.7
> 4) updated richfaces from 3.1.5 to 3.3.2 (api, impl and ui)
> 5) updated jstl-1.1.0.jar to jstl-1.2.jar and removed standard.jar
> 6) deleted work folder of the webApp
>
> I did not change web.xml or faces-config. Tomcat version is 6.0.18.
>
> Any ideas where to look now?
> Michael
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message