ヘッダーから特定の要素を取得できるように、jax-ws ハンドラーを使用して SOAP メッセージをインターセプトしています。ヘッダーを逆シリアル化し、それを wsdl2java または xmlbeans 生成オブジェクトに解析する方法はありますか? 現在、AXIS から CXF に移行中です。AXIS では、Header xml を取得し、Factory クラスを使用して解析できました。CXF wsdl2java から生成されたオブジェクトでこれを行う良い方法が見つかりませんでした。getElementsByTagName を使用して各ノードを取得できることはわかっていますが、実際のオブジェクトを操作する方が簡単です。
1 に答える
1
SAAJ API を使用して、SOAP メッセージを直接操作できます。AbstractSoapInterceptor
メソッドを実装して拡張しhandleMessage()
、InInterceptor のチェーンに追加します。
public class MyCustomInInterceptor extends AbstractSoapInterceptor {
public void handleMessage(SoapMessage soapMessage) throws Fault {
try {
SOAPMessage message = soapMessage.getContent(SOAPMessage.class);
SOAPPart sp = message.getSOAPPart();
SOAPEnvelope se = sp.getEnvelope();
SOAPBody sb = se.getBody();
SOAPHeader sh = se.getHeader();
}
catch(Exception e)
{
log.error(e);
throw new Fault(e);
}
}
}
注SAAJInInterceptor
:インターセプターのチェーンにも接続する必要があります。そうしないsoapMessage.getContent(SOAPMessage.class)
と、戻りますnull
于 2013-06-14T18:02:31.243 に答える