首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java JAX-web服务客户端:如何记录请求和响应xml?

Java JAX-web服务客户端:如何记录请求和响应xml?
EN

Stack Overflow用户
提问于 2010-05-11 14:39:47
回答 3查看 19.3K关注 0票数 17

我创建了一个实现SOAPHandler<SOAPMessageContext>LoggingHandler实现

它应该在handleMessage触发时记录(在我的例子中它从来没有被调用过)

代码语言:javascript
复制
MyService service = new MyService();
MyServicePort port = service.getPortType();

现在我尝试这样做:

代码语言:javascript
复制
BindingProvider bindingProvider = (BindingProvider)port;
bindingProvider.getBinding().getHandlerChain().add(new LoggingHandler());

但是,我没有看到任何请求/响应xml。

你能提出什么解决方案吗?也许还有另一种方式来查看输出和请求XML?

EN

回答 3

Stack Overflow用户

发布于 2010-05-11 15:04:24

如果您使用以下方法,它将开始工作:

代码语言:javascript
复制
binding.setHandlerChain(handlerList);

因此,首先使用以下命令初始化此列表

代码语言:javascript
复制
binding.getHandlerChain();

然后将您的元素添加到列表中,毕竟

代码语言:javascript
复制
setHandlerChain();
票数 25
EN

Stack Overflow用户

发布于 2013-01-23 19:29:38

您可以在log4j.xml文件中添加记录器:

代码语言:javascript
复制
<!-- Log WebService's inputs and outputs -->
<logger name="org.apache.cxf.interceptor">
    <level value="INFO" />
    <appender-ref ref="[YOUR_LOGGER]" />
</logger>
票数 3
EN

Stack Overflow用户

发布于 2018-04-10 02:52:33

如果有人想知道@EugeneP的“为什么”,这是一个很好的答案。

在接口javax.xml.ws.Binding中,有以下注释。

代码语言:javascript
复制
/**
 * Gets a copy of the handler chain for a protocol binding instance.
 * If the returned chain is modified a call to 
 <code>setHandlerChain</code>
 * is required to configure the binding instance with the new chain.
 *
 *  @return java.util.List&lt;Handler> Handler chain
 */
 public java.util.List<javax.xml.ws.handler.Handler> getHandlerChain();

因此,getHandlerChain()方法返回列表的副本,而不是列表本身。所以你必须使用setHandlerChain来更新实际的列表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2808544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档