Webservice之axis1.4报⽂拦截
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.RequestMessage().getSOAPPartAsString()));
//报⽂名称
Log.Operation().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" />
service fault
<parameter name="extension"value=".jwr" />
</handler>
</requestFlow>
<responseFlow>
<handler type="AxisLogHandle" />
</responseFlow>
</globalConfiguration>
<handler name="LocalResponder"
type="java:org.ansport.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" />
配置完成,可将拦截数据存⼊数据库,以备后期追踪。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。