CXF添加拦截器

前面大家学过servlet,struts2 都有拦截器概念,主要作用是做一些权限过滤,编码处理等;

webservice也可以加上拦截器,我们可以给webservice请求加权限判断功能;

webservice分服务端和客户端,服务端和客户端都是可以加拦截器的,无论是服务端还是客户端,都分进,出(In,Out)拦截器;


服务端:

package com.gcx.test;

import javax.xml.ws.Endpoint;

import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

import com.gcx.service.HelloWorld;
import com.gcx.service.impl.HelloWorldImpl;

public class ServerTest {
	public static void main(String[] args) {
		System.out.println("webService start");
		
		HelloWorld implementor=new 	HelloWorldImpl();
		String address="http://192.168.31.42/helloWorld";
		//通过JDK实现暴露webService接口
		//Endpoint.publish(address, implementor);
		JaxWsServerFactoryBean factoryBean=new JaxWsServerFactoryBean();
		factoryBean.setAddress(address);//设置暴露地址
		factoryBean.setServiceClass(HelloWorld.class);//接口类
		factoryBean.setServiceBean(implementor);//接口实现类
		factoryBean.getInInterceptors().add(new LoggingInInterceptor()); // 添加in拦截器 日志拦截器
		factoryBean.getOutInterceptors().add(new LoggingOutInterceptor()); // 添加out拦截器 日志拦截器
		factoryBean.create();//创建webService接口
		System.out.println("webService end");
	}
}

客户端:

package com.gcx.service;

import java.util.List;

import org.apache.cxf.frontend.ClientProxy;
import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;

public class Client {
	public static void main(String[] args) {
		HelloWorldService service=new HelloWorldService();
		HelloWorld helloWorld=service.getHelloWorldPort();
		org.apache.cxf.endpoint.Client client = ClientProxy.getClient(helloWorld);
		client.getInInterceptors().add(new LoggingInInterceptor());
		client.getOutInterceptors().add(new LoggingOutInterceptor());
		MyRoleArray roles = helloWorld.getRoles();
		List<MyRole> item = roles.item;
		for(int i=0;i<item.size();i++){
			MyRole myRole = item.get(i);
			System.out.print(myRole.key+":");
			for(Role my:myRole.value){
				System.out.print(my.getId()+","+my.getRoleName());
			}
			System.out.println("==");
		}
	}
}


这里的打印出来的就是日志信息:Inbound 进信息  Outbound 是出信息,进的时候,大家会看到有个Headers SOAP消息。后面我们可以在里面加我们的数据;

在Outbound Message里,Payload消息里我们可以找到webservice返回的数据 SOAP消息





服务端日志:



客户端日志:



这里的话,我们用到了ClientProxy,客户端代理


OK到这里的话,添加拦截器已经完了!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值