2

我曾尝试先搜索此问题,但没有发现与此确切问题有关的任何内容。

当我尝试在我们的 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 版本“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 供应商:甲骨文公司

4

2 回答 2

0

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

System.out.println(javax.xml.parsers.SAXParserFactory.class.getResource("SAXParserFactory.class"));
于 2015-04-21T14:34:32.233 回答
0

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

该问题似乎已通过更改每个 .war 文件的 web.xml 文件得到解决,如下所示:

将“load-on-startup”元素值更改为 -1 而不是 1。

于 2015-04-21T14:25:38.047 回答