javascript
jax-ws 生成soap_在Spring中记录JAX-WS SOAP消息
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 List<Handler> handlerList;@Overridepublic List<Handler> getHandlerChain(final PortInfo portInfo) {return handlerList;}public void setHandlerList(final List<Handler> handlerList) {this.handlerList = handlerList;}}然后,我們必須實現將進行實際日志記錄的類。 此類將必須實現SOAPHandler<SOAPMessageContext>接口。 一個非常簡單的實現,僅使用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 SOAPHandler<SOAPMessageContext> {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 Set<QName> getHeaders() {// Not required for loggingreturn null;}}最后,我們必須在Spring中將所有東西連接在一起。 使用xml配置,您要做的就是添加一個新的bean定義:
配置Spring以使用SOAP消息記錄器
<bean id="handlerResolver" class="it.jdev.example.ws.DefaultHandlerResolver"><property name="handlerList"><list><bean class="it.jdev.example.ws.LoggingHandler" /></list></property></bean>這就是全部。 您的應用程序現在應該記錄所有JAX-WS SOAP消息。
翻譯自: https://www.javacodegeeks.com/2015/05/logging-jax-ws-soap-messages-in-spring.html
jax-ws 生成soap
總結
以上是生活随笔為你收集整理的jax-ws 生成soap_在Spring中记录JAX-WS SOAP消息的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: javafx显示image_JavaFX
- 下一篇: linuxzip解压命令(linux .
