axis1.4 soap接口服务端拦截打印请求响应日志

2024-04-20 07:08

本文主要是介绍axis1.4 soap接口服务端拦截打印请求响应日志,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 增加handler:

package com.gh.ca.pub.newhandler.io;import cn.hutool.core.util.RandomUtil;
import com.gh.ca.pub.util.Tools;
import org.apache.axis.AxisFault;
import org.apache.axis.MessageContext;
import org.apache.axis.handlers.BasicHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class ReqHandler extends BasicHandler {private static final Logger log = LoggerFactory.getLogger(ReqHandler.class);@Overridepublic void invoke(MessageContext ctx) throws AxisFault {String logid = RandomUtil.randomString(6);String clientip = Tools.getClientIP();long bTime = System.currentTimeMillis();String msg = ctx.getRequestMessage().getSOAPPartAsString();ctx.setProperty("logid", logid);ctx.setProperty("bTime", bTime);log.info("REQ: logid:{},clientIP:{},msg:{}", logid, clientip, msg);}
}

 

package com.gh.ca.pub.newhandler.io;import org.apache.axis.AxisFault;
import org.apache.axis.MessageContext;
import org.apache.axis.handlers.BasicHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class ResHandler extends BasicHandler {private static final Logger log = LoggerFactory.getLogger(ResHandler.class);@Overridepublic void invoke(MessageContext ctx) throws AxisFault {String msg = ctx.getResponseMessage().getSOAPPartAsString();long eTime = System.currentTimeMillis();String logid = (String) ctx.getProperty("logid");long bTime = (long) ctx.getProperty("bTime");log.info("RSP: logid:{},msg:{} time:{}", logid, msg, (eTime - bTime));}
}

server-config.wsdd增加配置:

注意: JWSHandler必须注释掉,不然配置的ReqHandler, ResHandler无法生效,不会打印日志

<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"><globalConfiguration><parameter name="sendMultiRefs" value="true"/><parameter name="disablePrettyXML" value="true"/><parameter name="adminPassword" value="admin"/><parameter name="attachments.Directory" value=""/><parameter name="dotNetSoapEncFix" value="true"/><parameter name="enableNamespacePrefixOptimization" value="false"/><parameter name="sendXMLDeclaration" value="true"/><parameter name="sendXsiTypes" value="true"/><parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/><!--<requestFlow><handler type="java:org.apache.axis.handlers.JWSHandler"><parameter name="scope" value="session"/></handler><handler type="java:org.apache.axis.handlers.JWSHandler"><parameter name="scope" value="request"/><parameter name="extension" value=".jwr"/></handler></requestFlow>--><requestFlow><handler type="ReqHandler" /></requestFlow><responseFlow><handler type="ResHandler" /></responseFlow></globalConfiguration><handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/><handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/><handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/><handler name="ReqHandler" type="java:com.gh.ca.pub.newhandler.io.ReqHandler" /><handler name="ResHandler" type="java:com.gh.ca.pub.newhandler.io.ResHandler" /><service name="ChangePasswd" provider="java:RPC" style="rpc"> ....<service/>

 

问题:

响应中打印的soap报文中文不能显示:

<errorDescription xsi:type="xsd:string">&#x5904;&#x7406;&#x6210;&#x529F;</errorDescription>

这个如何转换为正常的中文打印???

 

 

这篇关于axis1.4 soap接口服务端拦截打印请求响应日志的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/919592

相关文章

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

解读GC日志中的各项指标用法

《解读GC日志中的各项指标用法》:本文主要介绍GC日志中的各项指标用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、基础 GC 日志格式(以 G1 为例)1. Minor GC 日志2. Full GC 日志二、关键指标解析1. GC 类型与触发原因2. 堆

SpringBoot+Redis防止接口重复提交问题

《SpringBoot+Redis防止接口重复提交问题》:本文主要介绍SpringBoot+Redis防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录前言实现思路代码示例测试总结前言在项目的使用使用过程中,经常会出现某些操作在短时间内频繁提交。例

MySQL 打开binlog日志的方法及注意事项

《MySQL打开binlog日志的方法及注意事项》本文给大家介绍MySQL打开binlog日志的方法及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、默认状态二、如何检查 binlog 状态三、如何开启 binlog3.1 临时开启(重启后失效)

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

Golang 日志处理和正则处理的操作方法

《Golang日志处理和正则处理的操作方法》:本文主要介绍Golang日志处理和正则处理的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录1、logx日志处理1.1、logx简介1.2、日志初始化与配置1.3、常用方法1.4、配合defer