CXF拦截器的实现

来源:互联网 发布:final cut pro x mac 编辑:程序博客网 时间:2024/06/05 02:57

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


这里所要记录的是如何进行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.........................................客户端运行结果



原创粉丝点击