2012-09-04 47 views
0

當我嘗試啓動Tomcat6與我的應用程序(即我嘗試從Tomcat7移植到Tomcat6)時,出現一個奇怪的解析問題。 Digester本身並沒有聲明一個錯誤,直到它遇到意外的文件結束 - 這個解析本身必定是錯誤的。部署Tomcat6 JSF應用程序時解析錯誤 - digester.Digester

有沒有人有任何想法?

我的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>ilearn web.xml</description> 
    <display-name>iLearn</display-name> 
    <welcome-file-list> 
     <welcome-file>home.jsf</welcome-file> 
    </welcome-file-list> 
     <servlet> 
     <servlet-name>Faces Servlet</servlet-name> 
     <servlet-class>javax.faces.webapp.FacesServlet</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> 
    <context-param> 
    <param-name>      javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL </param-name> 
    <param-value>true</param-value> 
    </context-param> 
    <filter> 
     <filter-name>Extensions Filter</filter-name> 
     <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class> 
     <init-param> 
      <param-name>uploadMaxFileSize</param-name> 
      <param-value>100m</param-value> 
     </init-param> 
     <init-param> 
      <param-name>uploadThresholdSize</param-name> 
      <param-value>100k</param-value> 
     </init-param> 
     <init-param> 
      <param-name>uploadRepositoryPath</param-name> 
      <param-value>/iLearnData/temp/</param-value> 
     </init-param> 
    </filter> 
</web-app> 

這是在faces-config.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<faces-config 
    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-facesconfig_2_0.xsd" 
    version="2.0"> 
    <!-- Config here --> 
</faces-config> 

這是beans.xml中

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

這是日誌從控制檯的一部分

[methodName=setComponentFamily, paramCount=0, paramTypes={java.lang.String}] 
2012-09-04 02:20:42,503 DEBUG [main] digester.Digester (CallMethodRule.java:615)  - [CallMethodRule]{faces-config/render-kit/renderer/component-family} Call org.apache.myfaces.config.impl.digester.elements.Renderer.setComponentFamily(javax.faces.SelectMany/java.lang.String) 
2012-09-04 02:20:42,503 DEBUG [main] Digester.sax  (Digester.java:1094)  - characters(
     ) 
2012-09-04 02:20:42,503 DEBUG [main] Digester.sax  (Digester.java:1410)  - startElement(http://java.sun.com/xml/ns/javaee,renderer-type,renderer-type) 
2012-09-04 02:20:42,503 DEBUG [main] digester.Digester (Digester.java:1417)  - Pushing body text ' 

     ' 
2012-09-04 02:20:42,503 DEBUG [main] digester.Digester (Digester.java:1436)  - New match='faces-config/render-kit/renderer/renderer-type' 
2012-09-04 02:20:42,503 DEBUG [main] digester.Digester (Digester.java:1451)  - Fire begin() for CallMethodRule[methodName=setRendererType, paramCount=0, paramTypes={java.lang.String}] 
2012-09-04 02:20:42,503 DEBUG [main] Digester.sax  (Digester.java:1094)  - characters(javax.faces.Checkbox) 
2012-09-04 02:20:42,503 DEBUG [main] Digester.sax  (Digester.java:1164)  - endElement(http://java.sun.com/xml/ns/javaee,renderer-type,renderer-type) 
2012-09-04 02:20:42,503 DEBUG [main] digester.Digester (Digester.java:1167)  - match='faces-config/render-kit/renderer/renderer-type' 
2012-09-04 02:20:42,504 DEBUG [main] digester.Digester (Digester.java:1168)  - bodyText='javax.faces.Checkbox' 
2012-09-04 02:20:42,504 DEBUG [main] digester.Digester (Digester.java:1190)  - Fire body() for CallMethodRule[methodName=setRendererType, paramCount=0, paramTypes={java.lang.String}] 
2012-09-04 02:20:42,504 DEBUG [main] digester.Digester (Digester.java:1210)  - Popping body text ' 
    ' 
2012-09-04 02:20:42,567 DEBUG [main] digester.Digester (Digester.java:1190)  - Fire body() for ObjectCreateRule[className=org.apache.myfaces.config.impl.digester.elements.FacesConfig, attributeName=null] 
2012-09-04 02:20:42,567 DEBUG [main] digester.Digester (Digester.java:1190)  - Fire body() for SetPropertiesRule[] 
2012-09-04 02:20:42,568 DEBUG [main] digester.Digester (Digester.java:1190)  - Fire body() for SetPropertiesRule[] 
2012-09-04 02:20:42,568 DEBUG [main] digester.Digester (Digester.java:1210)  - Popping body text '' 
2012-09-04 02:20:42,568 DEBUG [main] digester.Digester (Digester.java:1220)  - Fire end() for SetPropertiesRule[] 
2012-09-04 02:20:42,568 DEBUG [main] digester.Digester (Digester.java:1220)  - Fire end() for SetPropertiesRule[] 
2012-09-04 02:20:42,568 DEBUG [main] digester.Digester (Digester.java:1220)  - Fire end() for ObjectCreateRule[className=org.apache.myfaces.config.impl.digester.elements.FacesConfig, attributeName=null] 
2012-09-04 02:20:42,568 DEBUG [main] digester.Digester (ObjectCreateRule.java:219)  - [ObjectCreateRule]{faces-config} Pop org.apache.myfaces.config.impl.digester.elements.FacesConfig 
2012-09-04 02:20:42,568 DEBUG [main] Digester.sax  (Digester.java:1254)  - endPrefixMapping() 
2012-09-04 02:20:42,568 DEBUG [main] Digester.sax  (Digester.java:1254)  - endPrefixMapping(xsi) 
2012-09-04 02:20:42,568 DEBUG [main] Digester.sax  (Digester.java:1114)  - endDocument() 
Sep 4, 2012 2:20:42 AM org.apache.myfaces.config.DefaultFacesConfigurationProvider getWebAppFacesConfig 
INFO: Reading config /WEB-INF/faces-config.xml 
2012-09-04 02:20:42,571 DEBUG [main] Digester.sax  (Digester.java:1341)  - setDocumentLocator(com.sun.or[email protected]154e4e31) 
2012-09-04 02:20:42,572 DEBUG [main] Digester.sax  (Digester.java:1375)  - startDocument() 
2012-09-04 02:20:42,574 ERROR [main] digester.Digester (Digester.java:1655)  - Parse Fatal Error at line 3 column 1: Premature end of file. 
org.xml.sax.SAXParseException: Premature end of file. 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195) 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:174) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388) 
    at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1427) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1056) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) 
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) 
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522) 
    at org.apache.commons.digester.Digester.parse(Digester.java:1745) 
    at org.apache.myfaces.config.impl.digester.DigesterFacesConfigUnmarshallerImpl.getFacesConfig(DigesterFacesConfigUnmarshallerImpl.java:309) 
    at org.apache.myfaces.config.impl.digester.DigesterFacesConfigUnmarshallerImpl.getFacesConfig(DigesterFacesConfigUnmarshallerImpl.java:36) 
    at org.apache.myfaces.config.DefaultFacesConfigurationProvider.getWebAppFacesConfig(DefaultFacesConfigurationProvider.java:345) 
    at org.apache.myfaces.config.DefaultFacesConfigurationMerger.getFacesConfigData(DefaultFacesConfigurationMerger.java:75) 
    at org.apache.myfaces.config.FacesConfigurator.configure(FacesConfigurator.java:416) 
    at org.apache.myfaces.webapp.AbstractFacesInitializer.buildConfiguration(AbstractFacesInitializer.java:338) 
    at org.apache.myfaces.webapp.Jsp21FacesInitializer.initContainerIntegration(Jsp21FacesInitializer.java:73) 
    at org.apache.myfaces.webapp.AbstractFacesInitializer.initFaces(AbstractFacesInitializer.java:140) 
    at org.apache.myfaces.webapp.StartupServletContextListener.contextInitialized(StartupServletContextListener.java:119) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
    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:597) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
Sep 4, 2012 2:20:42 AM org.apache.myfaces.webapp.AbstractFacesInitializer initFaces 
SEVERE: An error occured while initializing MyFaces: org.xml.sax.SAXParseException: Premature end of file. 
javax.faces.FacesException: org.xml.sax.SAXParseException: Premature end of file. 
    at org.apache.myfaces.config.DefaultFacesConfigurationProvider.getWebAppFacesConfig(DefaultFacesConfigurationProvider.java:357) 
    at org.apache.myfaces.config.DefaultFacesConfigurationMerger.getFacesConfigData(DefaultFacesConfigurationMerger.java:75) 
    at org.apache.myfaces.config.FacesConfigurator.configure(FacesConfigurator.java:416) 
    at org.apache.myfaces.webapp.AbstractFacesInitializer.buildConfiguration(AbstractFacesInitializer.java:338) 
    at org.apache.myfaces.webapp.Jsp21FacesInitializer.initContainerIntegration(Jsp21FacesInitializer.java:73) 
    at org.apache.myfaces.webapp.AbstractFacesInitializer.initFaces(AbstractFacesInitializer.java:140) 
    at org.apache.myfaces.webapp.StartupServletContextListener.contextInitialized(StartupServletContextListener.java:119) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
    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:597) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
Caused by: org.xml.sax.SAXParseException: Premature end of file. 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1231) 
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522) 
    at org.apache.commons.digester.Digester.parse(Digester.java:1745) 
    at org.apache.myfaces.config.impl.digester.DigesterFacesConfigUnmarshallerImpl.getFacesConfig(DigesterFacesConfigUnmarshallerImpl.java:309) 
    at org.apache.myfaces.config.impl.digester.DigesterFacesConfigUnmarshallerImpl.getFacesConfig(DigesterFacesConfigUnmarshallerImpl.java:36) 
    at org.apache.myfaces.config.DefaultFacesConfigurationProvider.getWebAppFacesConfig(DefaultFacesConfigurationProvider.java:345) 
    ... 21 more 
Sep 4, 2012 2:20:42 AM org.apache.catalina.core.ApplicationContext log 
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:286) 
    at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:206) 
    at javax.faces.webapp.FacesServlet.init(FacesServlet.java:116) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1206) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4734) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
    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:597) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
Sep 4, 2012 2:20:42 AM org.apache.catalina.core.StandardContext loadOnStartup 
SEVERE: Servlet /ilearn threw load() exception 
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:286) 
    at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:206) 
    at javax.faces.webapp.FacesServlet.init(FacesServlet.java:116) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1206) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4734) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
    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:597) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
Sep 4, 2012 2:20:42 AM org.apache.coyote.http11.Http11Protocol start 
INFO: Starting Coyote HTTP/1.1 on http-8080 
Sep 4, 2012 2:20:42 AM org.apache.jk.common.ChannelSocket init 
INFO: JK: ajp13 listening on /0.0.0.0:8009 
Sep 4, 2012 2:20:42 AM org.apache.jk.server.JkMain start 
INFO: Jk running ID=0 time=0/19 config=null 
Sep 4, 2012 2:20:42 AM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 7062 ms 
+0

順便說一下,Digester的日誌行重複了幾十次,或許是一百次 - 我只是在這裏放了幾圈,給你這個想法。 – Ramesh

+0

你在之後有一個額外的謊言,pl刪除它,然後嘗試 – Satya

+0

文件中沒有多餘的行 - 它只是在這裏添加來從控制檯日誌中分離文件 – Ramesh

回答

-1

你可以使用JBoss EL。

說明

下載最新版本的接縫2的 提取的lib /的jboss-el.jar 將其複製到WEB-INF/lib中/的jboss-el.jar 在你的web.xml文件中:

<context-param> 
     <param-name>com.sun.faces.expressionFactory</param-name> 
     <param-value>org.jboss.el.ExpressionFactoryImpl</param-value> 
    </context-param> 
+0

此答案與問題不符。也許你看錯了瀏覽器選項卡? – BalusC