Tomcat6在重新启动后意外(有时)失败以部署相同的Web应用程序

时间:2014-12-09 05:48:34

标签: ajax jsf-2 tomcat6 saxparser cron-task

我在日志中收到一条奇怪的错误消息,重新启动我的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)  

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

经过数月的研究和编程试验,我找到了解决方案。它是 版本兼容性问题与jspcss语法错误相结合。对于Tomcat6,JSF 1.2我们必须使用更低的 RichFaces Ajax的版本。但不仅如此。看一下您的jpscss&#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库就没有问题 解析旧的源代码。