Java JAX-WS Web服务客户端:如何记录日志请求和响应xml?
我创建了一个实现SOAPHandler
的LoggingHandler
实现
它应该在handleMessage
触发时handleMessage
(在我的情况下永远不会调用它)
MyService service = new MyService(); MyServicePort port = service.getPortType();
现在我试试这个:
BindingProvider bindingProvider = (BindingProvider)port; bindingProvider.getBinding().getHandlerChain().add(new LoggingHandler());
我没有看到任何请求/响应xml。
你能建议任何解决方案吗? 也许有另一种方式来查看输出和请求XML?
如果您使用此方法,它将开始工作:
binding.setHandlerChain(handlerList);
所以,先用这个列表初始化
binding.getHandlerChain();
然后将您的元素添加到列表中
setHandlerChain();
您可以在log4j.xml文件中添加记录器:
如果有人想知道@EugeneP的“为什么”出色的答案。
在接口javax.xml.ws.Binding中,有以下注释。
/** * Gets a copy of the handler chain for a protocol binding instance. * If the returned chain is modified a call to
setHandlerChain
* is required to configure the binding instance with the new chain. * * @return java.util.List<Handler> Handler chain */ public java.util.ListgetHandlerChain();
因此getHandlerChain()方法返回List的副本而不是列表本身。 所以你必须使用setHandlerChain来更新实际的List。