Webservice 之axis1.4 报文拦截

来源:互联网 发布:知豆电动汽车多少钱 编辑:程序博客网 时间:2024/05/17 01:09

Webservice的数据通信,一旦出问题,就需要针对报文的交互进行跟踪调查,很多情况下是数据问题,而如果在交互期间,不对报文进行拦截并记录日志,后期出了问题就很难进行追踪,找出问题所在,本文主要记录一下axis1.4中对进出报文进行拦截并记录入库,以便后期系统维护。

拦截类

对axis1.4的报文拦截主要继承org.apache.axis.handlers.BasicHandler类。

public class AxisLogHandle extends BasicHandler {    @Override    public void invoke(MessageContext message) throws AxisFault {        saveWs(message);    }    @Override      public void onFault(MessageContext message) {          saveWs(message);    }      private void saveWs(MessageContext message) {        try {            //报文体              Log.info(StringEscapeUtils.unescapeHtml(message.getRequestMessage().getSOAPPartAsString()));            //报文名称            Log.info(message.getOperation().getName());            //如果需要其它字段信息,可以对报文进行解析后取相关信息。            //存入数据库        } catch(Exception ex) {            ex.printStackTrace();        }    }}

配置修改

在server-config.wsdd配置拦截

    <globalConfiguration>        <parameter name="adminPassword" value="admin" />        <parameter name="sendMultiRefs" value="true" />        <parameter name="sendXsiTypes" value="true" />        <parameter name="attachments.implementation"            value="org.apache.axis.attachments.AttachmentsImpl" />        <parameter name="sendXMLDeclaration" value="true" />        <parameter name="axis.sendMinimizedElements" value="true" />        <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>        <responseFlow>             <handler type="AxisLogHandle" />          </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="authen"        type="java:org.apache.axis.handlers.SimpleAuthenticationHandler" />    <handler name="AxisLogHandle"         type="java:com.**.web.interceptor.AxisLogHandle" />

拦截器配置完成,可将拦截数据存入数据库,以备后期追踪。

原创粉丝点击