【问题标题】:Setting the Order of Precedence of Jars in WAR在 WAR 中设置 jar 的优先顺序
【发布时间】:2023-04-03 13:00:01
【问题描述】:

我收到以下错误:

com.sun.xml.messaging.saaj.soap.MessageFactoryImpl cannot be cast to javax.xml.soap.MessageFactory

有没有办法强制使用来自 saaj-api 的 MessageFactory 而不是来自 javaee-api 的消息工厂?至少这是我认为可能需要做的。

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>7.0</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.messaging.saaj</groupId>
    <artifactId>saaj-impl</artifactId>
    <version>1.3.15</version>
</dependency>
<dependency>
    <groupId>javax.xml.soap</groupId>
    <artifactId>saaj-api</artifactId>
    <version>1.3.5</version>
</dependency>

<prefer-application-packages>
    <package-name>javax.xml.soap.*</package-name>
    <package-name>javax.xml.ws.*</package-name>
    <package-name>com.sun.xml.messsaging.saaj.*</package-name>
</prefer-application-packages> 

【问题讨论】:

    标签: java spring weblogic classloader war


    【解决方案1】:

    一般来说,您不希望将 API 打包到您的 war/ear 文件中,因为它们应该由应用服务器提供。我会将范围设置为提供这两个 api 依赖项并从那里开始工作。

    【讨论】:

    • 问题是我在 WebLogic 12c 中的一个 jar 中遇到了一些错误,该 jar 与 11g 版本一起工作。我想覆盖 WebLogic 提供的包。
    • 这通常是不可能的(或非常困难的)。应用服务器已针对一组给定的 API 版本(例如 Java EE 6 或 7)进行了认证。
    猜你喜欢
    • 2017-05-07
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多