CXF拦截器的实现

这篇文章是接着上篇文章进行完善的


这里所要记录的是如何进行CXF拦截器的部署


1................................................编写类

MessageInterceptor.java  这里存放的我们进行的拦截操作

package Interceptor;

import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
/*
 * 自定义拦截器
 */
public class MessageInterceptor extends AbstractPhaseInterceptor<Message>{

	public MessageInterceptor(String phase) {
		super(phase);
	}

	public void handleMessage(Message message) throws Fault {
		System.out.println("****************************进入拦截器*********************************************");
		System.out.println(message);
		if(message.getDestination()!=null){
			System.out.println(message.getId()+"#"+message.getDestination().getMessageObserver());			
		}
		if(message.getExchange()!=null){
			System.out.println(message.getExchange().getInMessage()+"#"+message.getExchange().getInFaultMessage());
			System.out.println(message.getExchange().getOutMessage()+"#"+message.getExchange().getOutFaultMessage());
		}
		System.out.println("**************************离开拦截器**************************************");
	}

}

2........................................修改一下我们的发布程序类,这样我们服务端的拦截器就开发完成了

package Server;

import org.apache.cxf.endpoint.Server;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
import org.apache.cxf.phase.Phase;

import Interceptor.MessageInterceptor;
import Type.HelloWorldImpl;

public class ServiceTest {
	public static void main(String[] args) throws InterruptedException {
		JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
		factory.setServiceClass(HelloWorldImpl.class);
		factory.setAddress("http://localhost:8080/HelloWorld");

		factory.setServiceBean(new HelloWorldImpl());

		factory.getInInterceptors().add(new MessageInterceptor(Phase.RECEIVE));
		factory.getOutInterceptors().add(new MessageInterceptor(Phase.SEND));
		Server server = factory.create();
		server.start();
		System.out.println("Server start.....................");
		Thread.sleep(1000 * 60);
		System.exit(0);
		System.out.println("Server exit ");
	}

}

3..............................................客户端可以不变,也可以进行开发客户端拦截器,只需加两句话就OK了,如下代码

package Client;

import org.apache.cxf.endpoint.Client;

import org.apache.cxf.interceptor.LoggingInInterceptor;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;

public class ClientTest {
	public static void main(String[] args) throws Exception {

		JaxWsDynamicClientFactory  ser = JaxWsDynamicClientFactory.newInstance();
		Client client =ser.createClient("http://localhost:8080/HelloWorld?wsdl");
		
		client.getInInterceptors().add(new LoggingInInterceptor());
		client.getOutInterceptors().add(new LoggingOutInterceptor());
		
		Object[] o = client.invoke("sayHi", "sa");
		System.out.println(o[0]);
	}

}

4...............................................服务端运行结果


5.........................................客户端运行结果



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值