如何在 JBoss 7 中启用漂亮的 SOAP 消息记录
How to enable pretty logging of SOAP messages in JBoss 7
我已通过在 standalone.xml 中添加以下内容来启用 SOAP 日志记录,如 Jboss Advanced User Guide 中所述:
<system-properties>
<property name="org.apache.cxf.logging.enabled" value="true"/>
</system-properties>
此配置不会很好地打印 XML 消息。我确信 CXF 支持漂亮的打印,因为库中有一个 AbstractLoggingInterceptor.setPrettyLogging()
方法。
如何在 JBoss 7.
中启用 SOAP 请求和响应的漂亮打印
通过执行以下操作,我能够漂亮地打印并增加来自 Webservice 的 XML 响应的限制大小:
wsdlLocationURL = new URL(productServiceURLStr);
ServiceFacadeBeanService serviceFacade =
new ServiceFacadeBeanService(wsdlLocationURL, SERVICE_FACADE_QNAME);
ServiceFacade sfPort = serviceFacade.getServiceFacadeBeanPort();
Client client = ClientProxy.getClient(sfPort);
List<Interceptor<? extends Message>> ics = client.getBus().getOutInterceptors();
for (Interceptor ic: ics) {
if (ic instanceof LoggingOutInterceptor) {
LoggingOutInterceptor out = (LoggingOutInterceptor) ic;
out.setPrettyLogging(true);
out.setLimit(1024 * 1024 *1024);
}
}
尽管Serdal 的回答是正确的,但对我来说并不实用。
我的解决方案
我删除了 org.apache.cxf.logging.enabled
系统 属性 并使用以下代码启用 SOAP 日志记录:
Client client = ClientProxy.getClient(port);
LoggingInInterceptor inInterceptor = new LoggingInInterceptor();
inInterceptor.setPrettyLogging(true);
client.getInInterceptors().add(inInterceptor);
LoggingOutInterceptor outInterceptor = new LoggingOutInterceptor();
outInterceptor.setPrettyLogging(true);
client.getOutInterceptors().add(outInterceptor);
使用 org.apache.cxf.logging.enabled 属性 是正确的方法,它接受值 "pretty" 以获得格式良好的 xml 输出
<system-properties>
<property name="org.apache.cxf.logging.enabled" value="pretty"/>
</system-properties>
在您的 Web 服务中使用下面提到的注释。
@InInterceptors(interceptors = "org.apache.cxf.interceptor.LoggingInInterceptor")
@OutInterceptors(interceptors = "org.apache.cxf.interceptor.LoggingOutInterceptor")
@InFaultInterceptors(interceptors = "org.apache.cxf.interceptor.LoggingInInterceptor")
@OutFaultInterceptors(interceptors = "org.apache.cxf.interceptor.LoggingOutInterceptor")
@Logging(pretty = true)
我已通过在 standalone.xml 中添加以下内容来启用 SOAP 日志记录,如 Jboss Advanced User Guide 中所述:
<system-properties>
<property name="org.apache.cxf.logging.enabled" value="true"/>
</system-properties>
此配置不会很好地打印 XML 消息。我确信 CXF 支持漂亮的打印,因为库中有一个 AbstractLoggingInterceptor.setPrettyLogging()
方法。
如何在 JBoss 7.
中启用 SOAP 请求和响应的漂亮打印通过执行以下操作,我能够漂亮地打印并增加来自 Webservice 的 XML 响应的限制大小:
wsdlLocationURL = new URL(productServiceURLStr);
ServiceFacadeBeanService serviceFacade =
new ServiceFacadeBeanService(wsdlLocationURL, SERVICE_FACADE_QNAME);
ServiceFacade sfPort = serviceFacade.getServiceFacadeBeanPort();
Client client = ClientProxy.getClient(sfPort);
List<Interceptor<? extends Message>> ics = client.getBus().getOutInterceptors();
for (Interceptor ic: ics) {
if (ic instanceof LoggingOutInterceptor) {
LoggingOutInterceptor out = (LoggingOutInterceptor) ic;
out.setPrettyLogging(true);
out.setLimit(1024 * 1024 *1024);
}
}
尽管Serdal 的回答是正确的,但对我来说并不实用。
我的解决方案
我删除了 org.apache.cxf.logging.enabled
系统 属性 并使用以下代码启用 SOAP 日志记录:
Client client = ClientProxy.getClient(port);
LoggingInInterceptor inInterceptor = new LoggingInInterceptor();
inInterceptor.setPrettyLogging(true);
client.getInInterceptors().add(inInterceptor);
LoggingOutInterceptor outInterceptor = new LoggingOutInterceptor();
outInterceptor.setPrettyLogging(true);
client.getOutInterceptors().add(outInterceptor);
使用 org.apache.cxf.logging.enabled 属性 是正确的方法,它接受值 "pretty" 以获得格式良好的 xml 输出
<system-properties>
<property name="org.apache.cxf.logging.enabled" value="pretty"/>
</system-properties>
在您的 Web 服务中使用下面提到的注释。
@InInterceptors(interceptors = "org.apache.cxf.interceptor.LoggingInInterceptor")
@OutInterceptors(interceptors = "org.apache.cxf.interceptor.LoggingOutInterceptor")
@InFaultInterceptors(interceptors = "org.apache.cxf.interceptor.LoggingInInterceptor")
@OutFaultInterceptors(interceptors = "org.apache.cxf.interceptor.LoggingOutInterceptor")
@Logging(pretty = true)