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生效了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。