如何解决CXF 网络客户端 - Java.net.SocketTimeoutException - 未记录入站消息
我的日志记录功能在 cxf 客户端 3.3.4 版本中运行良好,但是当soap 调用出现超时错误(java.net.socketTimeoutException)时,不会记录入站消息。您能否告知如何/如何配置以获取入站消息以进行记录?
JaxWsProxyfactorybean proxy = new JaxWSProxyfactorybean()
---
--
LoggingInInterceptor reqInter = new LoggingInInterceptor();
LoggingOutInterceptor resInter = new LoggingOutInterceptor();
proxy.getininterceptors().add(reqInter);
proxy.getoutInterceptors().add(respInter);
proxy.getoutInterceptors().add(new NillablesaajInterceptor());
proxy.getoutInterceptors().add(new saajOutInterceptor());
log4j.xml
<AsyncLogger name ="org.apache.cxf" level="info">
</AsyncLogger>
<AsyncLogger name="org.apache.cxf.interceptor.LogginInIntercetpor" level="info">
</AsyncLogger>
<AsyncLogger name="org.apache.cxf.interceptor.LoggingOuInteceptor" level="info">
</AsyncLogger>
解决方法
JAX-WS 客户端使用 HTTPS 将 SOAP 消息发送到服务器,然后该消息将发送到应用程序中的消息日志拦截器。您必须告诉 CXF 它需要配置一个额外的 Nginx/Apache HTTP 代理服务器,用于从 HTTP 端点到 SOAP 端点提供消息。
请在您的应用程序中尝试以下配置。如果可行,那么我们可以讨论其他方法。
<jaxws:client configurator-ref="cxfClientConfig">
<jaxws:inInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
</jaxws:inInterceptors>
<jaxws:outInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
</jaxws:outInterceptors>
<jaxws:inFaultInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
</jaxws:inFaultInterceptors>
<jaxws:outFaultInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
</jaxws:outFaultInterceptors>
</jaxws:client>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。