【问题标题】:How do I make Weblogic 10 prefer the jars in myApp.war:/WEB-INF/lib/ without throwing VerifyErrors?如何让 Weblogic 10 更喜欢 myApp.war:/WEB-INF/lib/ 中的罐子而不抛出 VerifyErrors?
【发布时间】:2011-09-10 20:00:45
【问题描述】:

Weblogic 类加载器似乎更喜欢系统库而不是我的战争WEB-INF/lib/ 中的库。

我尝试在WEB-INF/weblogic.xml 中设置以下内容,但没有成功:

<weblogic-web-app>
    <container-descriptor>
        <prefer-web-inf-classes>true</prefer-web-inf-classes>
    </container-descriptor>
</weblogic-web-app>

这只是给了我很多验证错误:

exception is java.lang.VerifyError: (class: org/apache/xerces/parsers/AbstractSAXParser, method: parse signature: (Lorg/xml/sax/InputSource;)V) Incompatible object argument for function call
        at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:730)
        at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:196)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1003)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:907)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
        Truncated. see log file for complete stacktrace

(我试图避免将 WAR 打包到 EAR 中。)

【问题讨论】:

  • 这些是什么系统库?
  • prefer-web-inf-classes 应该可以工作,我假设您已经清除了域内的所有临时文件夹和缓存的战争副本?
  • 这与 Weblogic 有用地包含在您的战争类路径中的 JAXP 库有关吗?
  • WebLogic 中有一个新选项可以在 WAR 文件中使用 perfer-application-packages。你用的是什么版本?
  • 如果您想继续对话,请发送电子邮件至 jeffrey.west@oracle.com。比留言板更容易进行迭代工作。我们可以在这里发布结果。

标签: java weblogic classloader web-inf


【解决方案1】:

tomcat-arquillian 也有这个问题。原来“xml-apis 2.0.2”在我的类路径中,它实际上是 xml-apis 1.0.b2,它太旧了,无法与需要 xml-apis 1.3.04 的 xercesImpl 2.9.1 兼容。

【讨论】:

    【解决方案2】:

    除了在启动 Weblogic 时指定 -Djavax.xml.parsers.SAXParserFactory=[xerces sax parser factory class name](对于其他 JAXP 工厂,如验证 SchemaFactory 等等)之外,我一直无法令人满意地解决这个问题。

    过滤/prefer-web-inf 的东西都不起作用,可能是因为 Weblogic 在启动时需要 JAXP 库,然后才读取任何 WAR/EAR 配置文件。

    【讨论】:

      【解决方案3】:

      此视频很好地概述了配置 WebLogic FilteringClassLoaders 的选项:

      http://www.youtube.com/watch?v=ArLTKapjV_8

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-08-13
        • 2020-11-14
        • 1970-01-01
        • 2020-09-11
        • 1970-01-01
        • 1970-01-01
        • 2011-06-11
        相关资源
        最近更新 更多