2012-09-26 158 views
0

我試圖將我們的web應用程序從myfaces 1.1升級到1.2。我希望它比直接遷移到最新的2.x版更容易。但是,我得到了這樣的錯誤,當我試圖啓動應用程序:從myfaces 1.1遷移到1.2

SEVERE: 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:137) 
at evo.ui.jsf.EvoFacesServlet.init(EvoFacesServlet.java:56) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173) 
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993) 
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4420) 
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4733) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) 
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) 
at org.apache.catalina.core.StandardService.start(StandardService.java:525) 
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:595) 
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:592) 
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 

在應用程序日誌中可以觀察到這樣的例外:

2012-09-26 15:44:00|main|ERROR|org.apache.myfaces.webapp.AbstractFacesInitializer|An error occured while initializing MyFaces: null 
java.lang.NullPointerException 
    at org.apache.myfaces.webapp.Jsp21FacesInitializer.initContainerIntegration(Jsp21FacesInitializer.java:61) 
    at org.apache.myfaces.webapp.AbstractFacesInitializer.initFaces(AbstractFacesInitializer.java:96) 
    at org.apache.myfaces.webapp.StartupServletContextListener.contextInitialized(StartupServletContextListener.java:89) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4205) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4704) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:525) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:595) 
    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:592) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 

的web.xml看起來像這樣的:

<?xml version="1.0" encoding="UTF-8"?> 

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 

<description>My app</description> 
<display-name>My app</display-name> 

<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
</welcome-file-list> 

<context-param> 
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name> 
    <param-value>.xhtml</param-value> 
</context-param> 

<context-param> 
    <param-name>facelets.REFRESH_PERIOD</param-name> 
    <param-value>2</param-value> 
</context-param> 

<context-param> 
    <param-name>facelets.DEVELOPMENT</param-name> 
    <param-value>false</param-value> 
</context-param> 

<context-param> 
    <param-name>facelets.RESOURCE_RESOLVER</param-name> 
    <param-value>evo.ui.jsf.EvoResourceResolver</param-value> 
</context-param> 

<context-param> 
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
    <param-value>server</param-value> 
</context-param>  

<!-- AJAX4JSF --> 
<context-param> 
    <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name> 
    <param-value>com.sun.facelets.FaceletViewHandler</param-value> 
</context-param> 

<context-param> 
    <param-name>org.ajax4jsf.SKIN</param-name> 
    <param-value>DEFAULT</param-value> 
</context-param> 

<context-param> 
    <param-name>evo.ajaxlink.level</param-name> 
    <param-value>2</param-value> 
</context-param> 

<filter> 
    <display-name>Ajax4jsf Filter</display-name> 
    <filter-name>ajax4jsf</filter-name> 
    <filter-class>org.ajax4jsf.Filter</filter-class> 
    <init-param> 
     <param-name>forceparser</param-name> 
     <param-value>false</param-value> 
    </init-param> 
</filter> 

<filter-mapping> 
    <filter-name>ajax4jsf</filter-name> 
    <servlet-name>Faces Servlet</servlet-name> 
    <dispatcher>REQUEST</dispatcher> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>INCLUDE</dispatcher> 
</filter-mapping> 

<filter> 
    <filter-name>UploadMultipartFilter</filter-name> 
    <filter-class> 
     evo.ui.jsf.filters.UploadMultipartFilter 
    </filter-class> 
</filter> 

<filter> 
    <filter-name>OpenSessionInViewFilter</filter-name> 
    <filter-class> 
     org.springframework.orm.hibernate3.support.OpenSessionInViewFilter 
    </filter-class> 
    <init-param> 
     <param-name>singleSession</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <init-param> 
     <param-name>sessionFactoryBeanName</param-name> 
     <param-value>configDatabaseSessionFactory</param-value> 
    </init-param> 
</filter> 

<filter-mapping> 
    <filter-name>OpenSessionInViewFilter</filter-name> 
    <url-pattern>*.jsf</url-pattern> 
</filter-mapping> 

<filter> 
    <filter-name>MyFacesExtensionsFilter</filter-name> 
    <filter-class> 
     org.apache.myfaces.webapp.filter.ExtensionsFilter 
    </filter-class> 
    <init-param> 
     <param-name>maxFileSize</param-name> 
     <param-value>20m</param-value> 
    </init-param> 
</filter> 

<filter-mapping> 
    <filter-name>MyFacesExtensionsFilter</filter-name> 
    <servlet-name>Faces Servlet</servlet-name> 
</filter-mapping> 

<filter-mapping> 
    <filter-name>MyFacesExtensionsFilter</filter-name> 
    <url-pattern>/faces/myFacesExtensionResource/*</url-pattern> 
</filter-mapping> 

<filter-mapping> 
    <filter-name>UploadMultipartFilter</filter-name> 
    <servlet-name>Faces Servlet</servlet-name> 
</filter-mapping> 

<filter> 
    <description>Force encoding to get correct results of sorting 
    Global Task List with fields containing non-ASCII characters. 
    </description> 
    <filter-name>EncodingFilter</filter-name> 
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF-8</param-value>    
    </init-param> 
    <init-param> 
     <param-name>forceEncoding</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</filter> 

<filter-mapping> 
    <filter-name>EncodingFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

<servlet> 
    <servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>evo.ui.jsf.EvoFacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.jsf</url-pattern> 
</servlet-mapping> 

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>/faces/*</url-pattern> 
</servlet-mapping> 

<listener> 
    <listener-class> 
     org.apache.myfaces.webapp.StartupServletContextListener 
    </listener-class> 
</listener> 

<listener> 
    <listener-class> 
     org.springframework.web.context.ContextLoaderListener 
    </listener-class> 
</listener> 

<listener> 
    <listener-class> 
     org.springframework.web.context.request.RequestContextListener 
    </listener-class> 
</listener> 


<!-- XFIRE Webservices --> 
<servlet> 
    <servlet-name>xfire</servlet-name> 
    <servlet-class> 
     org.springframework.web.servlet.DispatcherServlet 
    </servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>xfire</servlet-name> 
    <url-pattern>/services/*</url-pattern> 
</servlet-mapping> 

<session-config> 
    <session-timeout>60</session-timeout> 
</session-config> 

的< web應用程序>標籤公頃已經從「2.4」更新爲版本=「2.5」。我已經嘗試用原始的javax.faces.webapp.FacesServlet替換我們的委託servlet(EvoFacesServlet),但沒有成功。

servlet容器是Tomcat的6

否則我應該怎麼做才能讓這件事嗎?

回答

0

從部署中刪除與容器相關的jar有助於:servlet-api.jar,el-api.jar,jsp-api.jar。不確定其中哪一個是問題的根源。

+0

你的依賴關係是怎樣的?你還必須升級org.apache.myfaces.tomahawk和磁貼嗎? – Angelina

+1

我不記得了。很久以前。 – pkalinow