四、handler的作用及特性
Axis中有一个basicHandler的抽象类,这个类可以供我们继承。可以完成很多复杂的功能,如:统计当前服务被调用的次数、验证服务调用信息等待 1、下面我们继承这个类,完成统计服务调用次数的功能; RequestHandler代码如下: ? ? BasicHandler是一个抽象类,继承这个类需要实现invoke签名方法,上面的代码很简单,就是一个累加统 计,MessageContext是当前WebService的一个上下文,可以得到当前服务的公共信息和请求信息。这里的 this.getOption("state");是和wsdd中的parameter对应的。 ? 2、编写wsdd文件,加入RequestHandler配置信息,wsdd配置如下: deployHandler.wsdd: ? ? handler元素配置的就是在上面编写的RequestHandler,type就是classpath;里面的parameter和上面RequestHandler中的this.getOption(“state”)的对应。 service元素中的requestFlow handler是请求的时候调用的handler、responsHandler是响应的时候调用的handler。 ? 3、发布当前WebService,和前面的一样运行命令行: java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -lhttp://localhost:8080/AxisWebService/services/AdminService deployHandler.wsdd 看到下面的就表示执行成功 Processing file undeploy.wsdd <Admin>Done processing</Admin> 然后在浏览器中请求: http://localhost:8080/AxisWebService/servlet/AxisServlet 就可以看到发布的服务,下面编写客户端代码 ? 4、客户端和上面HelloWorldWSDDClient一样,这里就不写了。 调用后可以看到服务器端的控制台输出: state: success,count: 5,requestCount: 5 state: success,count: 6,requestCount: 6 state: success,count: 7,requestCount: 7 state: success,count: 8,requestCount: 8 why? 为什么是4次?首先请求的时候执行一次handler,响应执行一次。然后调用2个方法,那就响应了2次,所以是4次。可以注销一个方法看看是不是少了2次,state是配置文件中的消息。 作者:hoojo (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |