(この質問のフォローアップ: Geting raw XML response from Java web service client )
Web サービス応答の生の XML を取得できる SOAP メッセージ ハンドラーがあります。この XML を Web サービス クライアントに取り込む必要があるため、応答を途中で送信する前に応答に対して XSL 変換を実行できます。着信メッセージをキャッチし、生の XML を (WSDL から) 生成された Web サービス クライアントで使用できるようにする SOAP ハンドラーからデータを取得する良い方法を見つけるのに苦労しています。これが実現可能かどうかのアイデアはありますか?
私はこのようなものを思いついた:
public class CustomSOAPHandler implements javax.xml.ws.handler.soap.SOAPHandler<javax.xml.ws.handler.soap.SOAPMessageContext>
{
private String myXML;
public String getMyXML()
{
return myXML;
}
...
public boolean handleMessage(SOAPMessageContext context)
{
...
myXML = this.getRawXML(context.getMessage());
}
//elsewhere in the application:
...
myService.doSomething(someRequest);
for (Handler h: ((BindingProvider)myService).getBinding().getHandlerChain())
{
if (h instanceof CustomSOAPHandler )
{
System.out.println("HandlerResult: "+ ((CustomSOAPHandler )h).getMyXML());
}
}
非常に単純なテストでは、これは機能しているようです。しかし、このソリューションは安っぽいハックのように感じます。生の XML をチェーン ハンドラーのメンバーとして設定するのは好きではありません。これは他の多くのベスト プラクティスに違反していると感じています。誰かがこれを行うためのよりエレガントな方法を持っていますか?