Handler非常像Servlet技术中的Filter。我们知道,在Servlet中,当一个HTTP到达服务端时,往往要经过多个Filter对请求进行过滤,然后才到达提供服务的Servlet,这些Filter的功能往往是对请求进
Handler非常像Servlet技术中的Filter。我们知道,在Servlet中,当一个HTTP到达服务端时,往往要经过多个Filter对请求进行过滤,然后才到达提供服务的Servlet,这些Filter的功能往往是对请求进行统一编码,对用户进行认证,把用户的访问写入系统日志等。相应的,Web服务中的Handler通常也提供以下的功能:
- 对客户端进行认证、授权;
- 把用户的访问写入系统日志;
- 对请求的SOAP消息进行加密,解密;
- 为Web Services对象做缓存。
新建一个handler
package com.zhutulang.handler; import java.util.Set; import javax.xml.namespace.QName; import javax.xml.ws.handler.MessageContext; import javax.xml.ws.handler.soap.SOAPHandler; importjavax.xml.ws.handler.soap.SOAPMessageContext; public class HeaderHandler implementsSOAPHandler<SOAPMessageContext> { @Override publicboolean handleMessage(SOAPMessageContext context) { System.out.println("handler"); returnfalse; } @Override publicboolean handleFault(SOAPMessageContext context) { System.out.println("handleFault"); returnfalse; } @Override publicvoid close(MessageContext context) { //TODO Auto-generated method stub } @Override publicSet<QName> getHeaders() { //TODO Auto-generated method stub returnnull; } }
在classpath下新建一个xml文件 handler-chain.xml
<?xml version="1.0"encoding="UTF-8" standalone="yes"?> <javaee:handler-chains xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <javaee:handler-chain> <javaee:handler> <javaee:handler-class>com.zhutulang.handler.HeaderHandler</javaee:handler-class> </javaee:handler> </javaee:handler-chain> </javaee:handler-chains>
其中,handler-class 是hanler全路径名。
然后在接口实现类上配置:@HandlerChain(file="handler-chain.xml")
重启服务后,运行test4方法。看到控制台打印出handler ,说明我们配置的handler生效了。
相关的代码下载:http://download.csdn.net/detail/zhutulang/9487929