【问题标题】:Exception with EAR in WebLogic 9.2 and Xerces144.jarWebLogic 9.2 和 Xerces144.jar 中的 EAR 异常
【发布时间】:2009-10-28 01:20:25
【问题描述】:

我正在使用一个应用程序,其中我已将 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 

【问题讨论】:

    标签: weblogic weblogic9.x


    【解决方案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
    

    老实说,当您在 EAR 中部署 WAR 并在 WAR 中打包 Xerces 时,我不知道究竟发生了什么以及实际问题是什么。在您描述的所有场景中,我的理解是类路径中的某处有一个 Xerces jar。

    如果你真的想在WAR中部署Xerces-144.jar,可以尝试在weblogic.xml中设置prefer-web-inf-classes并测试一下这个配置吗?

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多