JBoss4.2.3 で実行されている J2EE アプリケーション内から、サードパーティの Web サービスを呼び出す SOAPConnection を作成しています。SOAP ヘッダー内で、'mustUnderstand' を '1' に設定して、Addressing To タグと Action タグを設定する必要があります。この「mustUnderstand」属性はhttp://www.w3.org/2003/05/soap-envelope
名前空間にあります。これを作成するには、次を呼び出します。
SOAPFactory#createName("mustUnderstand", "soap", "http://www.w3.org/2003/05/soap-envelope");
これは、saaj.jar と saaj-impl.jar を WEB-INF/lib フォルダーに含めると正しく表示されます。これらを取り出すと、名前空間は xmlns:soap='null' ではなく null になりxmlns:soap="http://www.w3.org/2003/05/soap-envelope"
ます。悪いタグ全体は次のとおりです。
<wsa:To xmlns:wsa='http://schemas.xmlsoap.org/ws/2004/08/addressing' xmlns:soap='null' soap:mustUnderstand='1'>http://domain/web-service.url</wsa:To>
.
しかし、これらの 2 つの jar ファイルをアプリと共にデプロイすると、フォルトの作成時に独自のホストされた Web サービスが失敗します (クラスキャストの例外が原因で:
javax.xml.soap.SOAPException: java.lang.ClassCastException: com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl)
私たちの J2EE アプリは、サードパーティの Web サービス自体を呼び出す JBossWS Web サービスです。jar ファイルとの明らかな競合があります。
http://www.w3.org/2003/05/soap-envelope
生成された SOAP タグに名前空間を書き出す方法に関するアイデアはありますか?