【问题标题】:java.util.logging, ResourceBundles, SAAJ: exception on loading Glassfish OSGi webapp bundlejava.util.logging、ResourceBundles、SAAJ:加载 Glassfish OSGi webapp 包时出现异常
【发布时间】:2012-04-25 10:53:48
【问题描述】:

以下异常让我失去了理智:

java.lang.IllegalArgumentException: 
com.sun.xml.messaging.saaj.soap.LocalStrings != com.sun.xml.internal.messaging.saaj.soap.LocalStrings
    at java.util.logging.Logger.getLogger(Logger.java:357)
    at com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl.<clinit>(SAAJMetaFactoryImpl.java:41)

当我尝试将 WAB(Web 应用程序 OSGi 包)部署到 Glassfish (3.1.1) 时,就会发生这种情况。

通过将字符串 com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl 放入文件 @ 987654325@.

似乎在 OSGi 类加载开始之前正在进行一些日志记录,因此在 com.sun.xml.messaging.saaj.soap.MessageFactoryImpl 的静态 log 字段的初始化期间返回了“错误”ResourceBundle(SAAJ 的 javax.xml.soap.MessageFactory 实现)。

有人看到这个/提供的任何解决方法吗?

【问题讨论】:

    标签: java glassfish osgi java.util.logging saaj


    【解决方案1】:

    从未深入了解这一点,但 manifest voodoo 最终让它消失了(所有 javax.xml.ws / javax.ws.rs 包都在 Import-Package 中,而不是在 bundle 类路径 WEB-INF/lib 中)。

    也可以通过使用来解决它

    -Djavax.xml.soap.MessageFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl 
    

    在 Glassfish 启动时,尽管显然这会强制 MessageFactory 的所有用户实施。

    【讨论】:

      【解决方案2】:

      请参阅:JDK-6741342 : Logger.getLogger() throws java.lang.IllegalArgumentException on saaj classes

      相反,它与将 saaj 引入 JDK 6 相关......并且解决方法涉及重新排序 jar。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-04-07
        • 2013-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多