部署war文件的间歇性奇怪的tomcat问题

时间:2013-01-09 00:10:40

标签: java tomcat

我试图首先搜索此问题,但没有发现这个问题。

当我尝试在tomcat服务器上部署war文件时,我遇到了间歇性问题。在我们部署之前,它偶尔会失败,迫使我们bounce tomcat

Jan 08, 2013 11:50:20 AM org.apache.catalina.startup.HostConfig deployWAR SEVERE: Error deploying web application archive /usr/local/apache-tomcat-7.0.29/webapps /somewar.war javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found at javax.xml.parsers.SAXParserFactory.newInstance(SAXParserFactory.java:132)

一旦我们退回tomcat,我们可以毫无问题地部署war文件。事实上,这种失败是如此随机,我甚至无法正确地重现这一点。

有没有人对可能发生的事情有任何想法?。

java版:

Java版“1.7.0_09” Java(TM)SE运行时环境(版本1.7.0_09-b05) Java HotSpot(TM)64位服务器VM(版本23.5-b02,混合模式)

tomcat版本:

服务器版本:Apache Tomcat / 7.0.29 服务器内置:2012年7月3日11:31:52 服务器编号:7.0.29.0 操作系统名称:Linux 操作系统版本:2.6.18-308.16.1.el5 架构:amd64 JVM版本:1.7.0_09-b05 JVM供应商:Oracle Corporation

2 个答案:

答案 0 :(得分:0)

通过在tomcat关闭的同时部署两个.war文件,然后重新启动tomcat,我能够始终如一地重现此问题。 (我怀疑它是相关的,但每个.war文件的servlet非常相似,并且也有xerces依赖)

通过更改每个.war文件的web.xml文件,似乎已修复此问题,如下所示:

将'load-on-startup'元素值更改为-1而不是1.

答案 1 :(得分:0)

可能的原因是冲突的JAR文件,即类路径上有多个相同的类。您可以使用以下代码确定类的来源:

System.out.println(javax.xml.parsers.SAXParserFactory.class.getResource("SAXParserFactory.class"));