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

相关文章

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

我在移动打工的日志

客户:给我搞一下录音 我:不会。不在服务范围。 客户:是不想吧 我:笑嘻嘻(气笑) 客户:小姑娘明明会,却欺负老人 我:笑嘻嘻 客户:那我交话费 我:手机号 客户:给我搞录音 我:不会。不懂。没搞过。 客户:那我交话费 我:手机号。这是电信的啊!!我这是中国移动!! 客户:我不管,我要充话费,充话费是你们的 我:可是这是移动!!中国移动!! 客户:我这是手机号 我:那又如何,这是移动!你是电信!!

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

Java Websocket实例【服务端与客户端实现全双工通讯】

Java Websocket实例【服务端与客户端实现全双工通讯】 现很多网站为了实现即时通讯,所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发 出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request 的模式带来很明显的缺点 – 浏 览器需要不断的向服务器发出请求,然而HTTP

JAVA用最简单的方法来构建一个高可用的服务端,提升系统可用性

一、什么是提升系统的高可用性 JAVA服务端,顾名思义就是23体验网为用户提供服务的。停工时间,就是不能向用户提供服务的时间。高可用,就是系统具有高度可用性,尽量减少停工时间。如何用最简单的方法来搭建一个高效率可用的服务端JAVA呢? 停工的原因一般有: 服务器故障。例如服务器宕机,服务器网络出现问题,机房或者机架出现问题等;访问量急剧上升,导致服务器压力过大导致访问量急剧上升的原因;时间和

简单的角色响应鼠标而移动

actor类 //处理移动距离,核心是找到角色坐标在世界坐标的向量的投影(x,y,z),然后在世界坐标中合成,此CC是在地面行走,所以Y轴投影始终置为0; using UnityEngine; using System.Collections; public class actor : MonoBehaviour { public float speed=0.1f; CharacterCo

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

模拟实现vector中的常见接口

insert void insert(iterator pos, const T& x){if (_finish == _endofstorage){int n = pos - _start;size_t newcapacity = capacity() == 0 ? 2 : capacity() * 2;reserve(newcapacity);pos = _start + n;//防止迭代

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录 在深度学习项目中,目标检测是一项重要的任务。本文将详细介绍如何使用Detectron2进行目标检测模型的复现训练,涵盖训练数据准备、训练命令、训练日志分析、训练指标以及训练输出目录的各个文件及其作用。特别地,我们将演示在训练过程中出现中断后,如何使用 resume 功能继续训练,并将我们复现的模型与Model Zoo中的