日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

在Spring中记录JAX-WS SOAP消息

發布時間:2023/12/3 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在Spring中记录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

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的在Spring中记录JAX-WS SOAP消息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。