前言
这篇说的是 自定义拦截器 通过自定义拦截器我们可以实现一些自定义的需求 还是非常灵活的
Server端代码
我们还是首先通过 getInInterceptors 来设置拦截器
在咱们的服务端代码中加入如下一行 这里的MyInterceptors是咱们自己需要创建的拦截器
jaxWsServerFactoryBean.getInInterceptors().add(new MyInterceptors());
拦截器类的内容 这里做的是一个比较简单认证 在我们的Soap消息中获取头部标签内的内容 因为是XML传输的吗 所以这里使用的XML的解析方式进行对应的解析 接受一个uname和pwd的参数这个参数是我们在客户端传递的 如果不匹配我们就抛出对应的错误 如果完全匹配 那么久通过拦截器的认证
同时我们是需要继承AbstractPhaseInterceptor类泛型为SoapMessage
super(Phase.PRE_INVOKE); 这句话的意思就是在之前调用的意思
public class MyInterceptors extends AbstractPhaseInterceptor<SoapMessage> {
public MyInterceptors() {
super(Phase.PRE_INVOKE);
}
public void handleMessage(SoapMessage message) throws Fault {
List<Header> headers = message.getHeaders(); //根据soap消息获取头部
if(headers == null && headers.size() == 0) {
throw new Fault(new IllegalArgumentException(