WebLogic 9.2和Xerces144.jar中的EAR异常

时间:2009-10-28 01:20:26

标签: weblogic weblogic9.x

我正在使用一个应用程序,我将xerces144.jar文件放在EAR文件内的war文件的WEB-INF / lib文件夹中。当我将此EAR文件部署到WebLogic Server并启动应用程序时,我收到以下异常。我们正在使用Spring MVC。但是,如果我仅使用WAR文件部署相同的应用程序,那么每件事都可以。我还注意到,如果我从EAR文件中删除了xerces144.jar文件并部署了EAR,那么它的部署没有任何问题。当这个xerces144.jar文件在WAR中被包含在与EAR中包含的相同WAR中并且已部署时,它有什么区别。

2009-10-27 21:05:50,468 ERROR - Context initialization failed org.springframework.beans.factory.BeanDefinitionStoreException: Parser configuration exception parsing XML from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is javax.xml.parsers.ParserConfigurationException: Unable to validate using XSD: Your JAXP provider [org.apache.xerces.jaxp.Document BuilderFactoryImpl@19b5ed8] does not support XML Schema. Are you running on Java
 1.4 with Apache Crimson? Upgrade to Apache Xerces (or Java 1.5) for full XSD support.
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadB 

2 个答案:

答案 0 :(得分:1)

  

当xerces144.jar文件包含在WAR与EAR中包含的相同WAR中并且已部署时,该文件有何不同。

我认为这与classloading有关。在EAR中部署WAR或部署相同的WAR时,Weblogic不会创建相同的类加载器层次结构。

最奇怪的部分是Weblogic 9.x在3rdparty.jar中附带了Xerces 1.4.4(至少,对于9.1来说这是正确的,检查9.2的版本会很有趣)。通过在命令行上运行以下命令可以轻松验证这一点:

$ java -cp 3rdparty.jar org.apache.xerces.framework.Version

说实话,我不知道究竟发生了什么以及在WAR中使用Xerces在EAR中部署WAR时实际上是什么问题。在你描述的所有场景中,我的理解是在类路径的某个地方有一个Xerces jar。

如果您真的想在WAR中部署Xerces-144.jar,您是否可以尝试在weblogic.xml中设置prefer-web-inf-classes并测试此配置?

答案 1 :(得分:0)

由于weblogic确实有相同版本的xerces,我相信不需要将它打包到你的应用程序中