网站seo诊断书,运城建网站,动画设计培训费用,网站地址查询最新区域名jax-ws 生成soap每当在Spring中使用JAX-WS时#xff0c;您可能都希望记录传入和传出的SOAP消息-如果仅用于开发过程中的调试。 因此#xff0c;第一件事就是增加日志级别#xff0c;对吗#xff1f; 不幸的是#xff0c;这将无效。 您将要做的是利用javax.xml.ws.handler.… jax-ws 生成soap 每当在Spring中使用JAX-WS时您可能都希望记录传入和传出的SOAP消息-如果仅用于开发过程中的调试。 因此第一件事就是增加日志级别对吗 不幸的是这将无效。 您将要做的是利用javax.xml.ws.handler.HandlerResolver接口。 那么我们该怎么做呢 首先您将要创建一个实现HandlerResolver接口的类。 这是一个非常基本的类将用于控制处理程序链。 它可能看起来像以下内容 DefaultHandlerResolver package it.jdev.example.ws;import java.util.List;import javax.xml.ws.handler.Handler;
import javax.xml.ws.handler.HandlerResolver;
import javax.xml.ws.handler.PortInfo;public class DefaultHandlerResolver implements HandlerResolver {private ListHandler handlerList;Overridepublic ListHandler getHandlerChain(final PortInfo portInfo) {return handlerList;}public void setHandlerList(final ListHandler handlerList) {this.handlerList handlerList;}} 然后我们必须实现将进行实际日志记录的类。 此类将必须实现SOAPHandlerSOAPMessageContext接口。 一个非常简单的实现仅使用SLF4J记录消息 LoggingHandler package it.jdev.example.ws;import java.io.ByteArrayOutputStream;
import java.lang.invoke.MethodHandles;
import java.util.Set;import javax.xml.namespace.QName;
import javax.xml.soap.SOAPMessage;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.SOAPHandler;
import javax.xml.ws.handler.soap.SOAPMessageContext;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class LoggingHandler implements SOAPHandlerSOAPMessageContext {private static final Logger LOGGER LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());Overridepublic boolean handleMessage(final SOAPMessageContext context) {final SOAPMessage msg context.getMessage();final boolean request ((Boolean) context.get(SOAPMessageContext.MESSAGE_OUTBOUND_PROPERTY)).booleanValue();if (request) { // This is a request message.logMessage(msg);} else { // This is the response messagelogMessage(msg);}return true;}Overridepublic boolean handleFault(final SOAPMessageContext context) {logMessage(context.getMessage());}private void logMessage(final SOAPMessage msg) {try {// Write the message to the output streamfinal ByteArrayOutputStream baos new ByteArrayOutputStream();msg.writeTo(baos);LOGGER.info(baos.toString());baos.close();} catch (final Exception e) {LOGGER.error(Caught exception: e.getMessage(), e);}}Overridepublic void close(final MessageContext context) {// Not required for logging}Overridepublic SetQName getHeaders() {// Not required for loggingreturn null;}} 最后我们必须在Spring中将所有东西连接在一起。 使用xml配置您要做的就是添加一个新的bean定义 配置Spring以使用SOAP消息记录器 bean idhandlerResolver classit.jdev.example.ws.DefaultHandlerResolverproperty namehandlerListlistbean classit.jdev.example.ws.LoggingHandler //list/property/bean 这就是全部。 您的应用程序现在应该记录所有JAX-WS SOAP消息。 翻译自: https://www.javacodegeeks.com/2015/05/logging-jax-ws-soap-messages-in-spring.htmljax-ws 生成soap