java.util.logging,ResourceBundles,SAAJ:加载Glassfish OSGi webapp包时的异常

时间:2012-04-25 10:53:48

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

我被以下例外驱逐出境:

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(com.sun.xml.internal.saaj...版本),通过放置字符串{文件com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl中的{1}}。

在OSGi类加载开始之前,似乎有一些日志记录正在进行,因此错误的&#39;在META-INF/services/javax.xml.soap.MessageFactory的静态ResourceBundle字段初始化期间返回log(SAAJ&#39}的com.sun.xml.messaging.saaj.soap.MessageFactoryImpl实现)。

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

2 个答案:

答案 0 :(得分:0)

从来没有深究这一点,但是清单伏都教最终使它消失了(javax.xml.ws中的所有javax.ws.rs / Import-Package包而不是捆绑类路径{{ 1}})。

也可以使用

来解决它
WEB-INF/lib

在Glassfish创业公司,但显然这会强制实施-Djavax.xml.soap.MessageFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl 的所有用户。

答案 1 :(得分:0)

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

  

相反,它与将saaj引入JDK 6相关.....并且解决方法涉及重新订购罐子。