我在日志中收到一条奇怪的错误消息,重新启动我的Tomcat6定义了一个cron作业, 这会阻止我的Web应用程序工作。
背景:我使用Raspbian OS,Java 6,Tomcat 6,JSF API 2.0.1(jsf-impl2.0.1.jar,jsf-api2.0.1.jar),
Ajax(通过JSF 2.0.1中嵌入的Ajax功能),
为了开发应用程序,我使用Windows与Eclipse Indigo,Java 6,JSF2.0,Tomcat 7.将jsf-impl2.0.1.jar和jsf-api2.0.1.jar放在/usr/share/tomcat6/lib
文件夹下。
因此,Web应用程序像/var/lib/tomcat6/webapps
下的ROOT.war一样部署,所以我不使用任何其他应用程序
小型Web服务器(Raspberry PI)。
问题所在:通常我的网络应用 正常工作 - catalina日志中没有任何错误消息,没有任何其他错误,它可以工作很多天。我已经定义了一个cron作业,它每天执行一个“一个突击队”脚本
重新启动我的tomcat6:sudo service tomcat6 restart
。但有时候,我的tomcat6重新启动失败了
部署我的网络应用程序战争,并无法使用每次不同的错误消息启动我的网络应用程序,但每次
来自同一个原因:SAX-Parser错误,它们每次都不同。所以,当我手动重启SECOND时,
从cron作业第一次重启后立即 - tomcat成功,日志和我的网络应用程序都没有问题
开始正常工作 - 但问题是,我不能每次第二次或第三次重启我的Tomcat,
因为我的客户不可能每次都这样
那么,人们,任何想法,关于我的情况?请帮忙!我研究了5天,但情况不一样
如果这有帮助,当我使用旧的jsf-impl和jsf-api时,
它工作正常,但在这种情况下我不能使用Ajax功能。
这是我的web.xml的标题部分:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>a7</display-name>
<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>/faces/*</url-pattern>
</servlet-mapping>
以下是我的faces-config.xml的标题:
<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">
这是主要错误,它有不同的原因,但原因不同:
09-Dec-2014 02:00:49 org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of clas
s com.sun.faces.config.ConfigureListener
java.lang.ExceptionInInitializerError
at com.sun.faces.config.ConfigManager$ParseTask.<init>(ConfigManager.jav
a:810)
at com.sun.faces.config.ConfigManager.getConfigDocuments(ConfigManager.j
ava:650)
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:306)
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureLi
stener.java:219)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContex
t.java:4206)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4
705)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase
.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:77
9)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:778
.........
而且,例如,出现SAX-Parser错误的3个不同原因,有不同之处:
......
Caused by: com.sun.faces.config.ConfigurationException: org.xml.sax.SAXParseExce
ption; lineNumber: 172; columnNumber: 33; src-resolve: Cannot resolve the name '
xml:lang' to a(n) 'attribute declaration' component.
at com.sun.faces.config.DbfFactory.initStatics(DbfFactory.java:269)
at com.sun.faces.config.DbfFactory.<clinit>(DbfFactory.java:186)
.......
Caused by: com.sun.faces.config.ConfigurationException: org.xml.sax.SAXParseExce
ption; lineNumber: 56; columnNumber: 7; The element type "xtion" must be termina
ted by the matching end-tag "</xtion>".
at com.sun.faces.config.DbfFactory.initStatics(DbfFactory.java:269)
at com.sun.faces.config.DbfFactory.<clinit>(DbfFactory.java:186)
.......
Caused by: com.sun.faces.config.ConfigurationException: org.xml.sax.SAXParseExce
ption; lineNumber: 389; columnNumber: 33; Open quote is expected for attribute "
{1}" associated with an element type "id".
at com.sun.faces.config.DbfFactory.initStatics(DbfFactory.java:269)
at com.sun.faces.config.DbfFactory.<clinit>(DbfFactory.java:186)
提前感谢您的帮助!
答案 0 :(得分:1)
经过数月的研究和编程试验,我找到了解决方案。它是
版本兼容性问题与jsp
和css
语法错误相结合。对于Tomcat6,JSF 1.2我们必须使用更低的
RichFaces Ajax的版本。但不仅如此。看一下您的jps
和css
&#39}。 Ajax库每次都要解析它
Tomcat的重启。一旦有Tomcat的日志
语法SAX解析错误,例如:
Caused by: org.xml.sax.SAXParseException; lineNumber: 389; columnNumber: 33; Ope
n quote is expected for attribute "{1}" associated with an element type "id".
每次错误信息不同时,例如我的情况, 意味着.jsp和.css中存在解析错误。 我的案例的解决方案是在版本之间进行正确的组合 Tomcat6,JSF1.2和RichFaces Ajax以及我的.jsp和.css的清理 语法错误。注意,没有Ajax,JSF库就没有问题 解析旧的源代码。