上一篇 Java WebService学习笔记 - Axis(一)
前一篇博文中简单介绍了Axis的使用方法,这篇将介绍一些Axis的一些高级特性
Axis中Handler的使用
Handler的作用和Struts中Filter类似,主要用于访问之前或之后做一些特别的处理。主要包括权限验证,授权,访问量统计等等。
下面一个简单的例子介绍一下具体的使用方法
访问量统计
关于访问量统计,最简单的方法是在类内部添加一个静态同步的字段,每次访问对其进行加1.但是在WebService的中可能你只有一个class文件,此时不能也不允许在类中进行修改;而且在类中添加方法的话侵入性比较高。
Handler处理类:CountHandler.java
package com.handler;
import org.apache.axis.AxisFault;
import org.apache.axis.MessageContext;
import org.apache.axis.handlers.BasicHandler;
public class CountHandler extends BasicHandler
{
private static final long serialVersionUID = 6788857289474496020L;
private long visitCount = 0L;
@Override
public void invoke(MessageContext msgCtx) throws AxisFault
{
visitCount++;
String className = (String)msgCtx.getProperty("className");
System.out.println("class:"+className+" current visit count :"+visitCount);
}
}
将CountHandler.java编译后放到服务器webapps/axis/WEB_INF/classes/com/handler/下。
在上一篇笔记中的<service>中添加Handler处理
<service name="Answer" provider="java:RPC">
<span style="color:#ff0000;"><requestFlow>
<handler type="java:com.handler.CountHandler"/>
</requestFlow></span>
<parameter name="clas