0

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

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)时,就会发生这种情况。

我正在尝试通过将字符串放入文件中来使用最新版本的 SAAJ ( com.sun.xml.messaging.saaj...) 而不是旧的 JDK 版本(即 JDK版本) 。com.sun.xml.internal.saaj...com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1ImplMETA-INF/services/javax.xml.soap.MessageFactory

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

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

4

2 回答 2

0

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

也可以通过使用来解决它

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

在 Glassfish 启动时,尽管显然这会强制所有MessageFactory.

于 2012-06-06T15:02:55.933 回答
0

请参阅:JDK-6741342:Logger.getLogger() 在 saaj 类上抛出 java.lang.IllegalArgumentException

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

于 2013-12-13T23:05:13.847 回答