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) にデプロイしようとすると発生します。

ファイルに文字列を入れることによりcom.sun.xml.messaging.saaj...、古いJDKのもの(これは1つです)ではなく、SAAJ()の最新バージョンを使用しようとしています。com.sun.xml.internal.saaj...com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1ImplMETA-INF/services/javax.xml.soap.MessageFactory

OSGi クラスローディングが開始される前に何らかのロギングが行われているようです。したがって、(SAAJ の の実装) の静的フィールドのResourceBundle初期化中に「間違った」が返されています。logcom.sun.xml.messaging.saaj.soap.MessageFactoryImpljavax.xml.soap.MessageFactory

これを見た人はいますか / 提供されている回避策はありますか?

4

2 に答える 2

0

これの根底に到達することはありませんでしたが、マニフェストブードゥーは最終的にそれをなくしました(バンドルクラスパスではなく、すべてのjavax.xml.ws/javax.ws.rsパッケージが含まれています)。Import-PackageWEB-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 をスローする

代わりに、それは JDK 6 への saaj の導入に関連しています...そして、回避策には jar の並べ替えが含まれていました。

于 2013-12-13T23:05:13.847 に答える