(關於這個問題的後續處理:Getting raw XML response from Java web service client)如何將數據從SOAP處理程序傳回web服務客戶端?
我有一個SOAP消息處理程序能夠獲取Web服務響應的原始XML。我需要將這個XML放入web服務客戶端,以便在發送它之前對響應執行一些XSL轉換。我很難找出從SOAP處理程序獲取數據的好方法,該處理程序捕獲傳入消息,並使原始XML可用於生成(來自WSDL)Web服務客戶端。任何想法,如果這是可行的?
我想出這樣的事情:
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設置爲鏈處理程序的成員,我有一種直覺認爲這違反了許多其他最佳實踐。有沒有人有一個更優雅的方式來做到這一點?
你可以在HttpSession中設置一個DOM對象嗎? – davidfmatheson 2012-08-18 19:38:10
@davidfmatheson:也許,但爲什麼我會使用DOM對象而不是字符串,這正是我真正想要的? – FrustratedWithFormsDesigner 2012-08-20 13:06:43