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);

    @Override
    public 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);

    @Override
    public 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>

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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Spring Boot整合Axis1.4实现WebService服务端,可以按照以下步骤进行: 1. 在pom.xml文件中添加Axis1.4依赖: ``` <dependency> <groupId>org.apache.axis</groupId> <artifactId>axis</artifactId> <version>1.4</version> </dependency> ``` 2. 创建一个WebService接口,并在接口上添加@WebService注解: ``` @WebService public interface UserService { String sayHello(String name); } ``` 3. 创建一个WebService接口的实现类,并在实现类上添加@WebService(endpointInterface = "com.example.demo.UserService")注解: ``` @WebService(endpointInterface = "com.example.demo.UserService") public class UserServiceImpl implements UserService { @Override public String sayHello(String name) { return "Hello, " + name + "!"; } } ``` 4. 在Spring Boot的配置文件application.properties中添加Axis1.4的配置: ``` # Axis1.4配置 axis.servletPath=/services/* ``` 5. 创建一个AxisServlet的注册类,并在类上添加@Configuration和@EnableWebMvc注解: ``` @Configuration @EnableWebMvc public class AxisServletRegistration { @Bean public ServletRegistrationBean<AxisServlet> axisServlet() { ServletRegistrationBean<AxisServlet> registration = new ServletRegistrationBean<>(new AxisServlet(), "/services/*"); registration.addInitParameter("axis.servicesPath", "/WEB-INF/services"); registration.addInitParameter("axis.wsddPath", "/WEB-INF/server-config.wsdd"); return registration; } } ``` 6. 启动Spring Boot应用程序,访问http://localhost:8080/services/UserService?wsdl,可以看到WebService服务端已经成功启动。 以上就是Spring Boot整合Axis1.4实现WebService服务端的全部步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值