整合cxf和spring,并添加拦截器

一 服务端

1 创建一个服务端的web工程,导入jar包

2 编写webservice的接口和实现类。

   



2 编写服务器端的入拦截器,该类继承AbstractPhaseInterceptor

package com.spring.wl.auth;


import java.util.List;


import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.headers.Header;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
//PhaseInterceptor 可以指定拦截器在哪个阶段起作用
public class AuthInterceptor extends AbstractPhaseInterceptor<SoapMessage> {
 

public AuthInterceptor() {
super(Phase.PRE_INVOKE);//调用之前拦截soap消息
System.out.println("服务器端拦截器初始化");
}

@Override
public void handleMessage(SoapMessage msg) throws Fault {
  System.out.println("服务端拦截器="+msg);
   List<Header>headers=msg.getHeaders();
if(  headers==null||headers.size()<=0){
throw  new Fault(new IllegalArgumentException("没有header 不能调用"));
}

Header firstHeader=headers.get(0);
Element ele=(Element)firstHeader.getObject();
NodeList  userIds= ele.getElementsByTagName("userId");
NodeList  passwards= ele.getElementsByTagName("password");
 
System.out.println("用户名个数="+userIds.getLength());
System.out.println("密码个数="+passwards.getLength());
if(userIds.getLength()!=1 || passwards.getLength()!=1 ){
throw  new Fault(new IllegalArgumentException("格式不对"));
}
String userId= userIds.item(0)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值