Fru*_*ner 7 java xml web-services soaphandler
(关注这个问题:从Java Web服务客户端获取原始XML响应)
我有一个SOAP消息处理程序,它能够获取Web服务响应的原始XML.我需要将这个XML放到webservice客户端中,这样我就可以在响应之前对响应执行一些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());
}
}
Run Code Online (Sandbox Code Playgroud)
在非常简单的测试中,这似乎有效.但这个解决方案感觉有点像廉价黑客.我不喜欢将原始XML设置为链处理程序的成员,我有一种直觉,这违反了许多其他最佳实践.有没有人有更优雅的方式这样做?
解决方案是使用 JAXB 将对象转换回 XML。我其实不想这样做,因为让 Web 服务客户端接收 XML、将其转换为 POJO、然后将该 POJO 转换回 XML 似乎是多余的,但它确实有效。
| 归档时间: |
|
| 查看次数: |
4529 次 |
| 最近记录: |