本文主要是介绍【WebService框架-CXF】——CXF拦截器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
背景
当一个服务发布之后,只要有服务地址,我们就可以建立客户端对服务进行调用。如果服务的提供者想要对可以调用服务的客户端进行限制,如:只有某些客户可以调用此服务。这时候就会用到拦截器,来进行权限控制。
明白了拦截器的应用场景,我们看看CXF的拦截器怎么用。
IN&OUT拦截器
从图中我们可以总结出,只要从一端发出消息时要进行拦截,就要使用OUT拦截器。如果要对接收的消息进行拦截就要使用IN拦截器。
在服务端添加IN拦截器和OUT拦截器
public class TestMain {public static void main(String[] arg){HelloWorld hw=new HelloWorldWS(); EndpointImpl eImpl=(EndpointImpl)Endpoint.publish("http://localhost:9009/HelloWorldWS", hw);eImpl.getInInterceptors().add(new LoggingInInterceptor());eImpl.getOutInterceptors().add(new LoggingOutInterceptor());System.out.println("Web Service暴露成功!");}
}
调用客户端,之后在服务端查看打印结果
Inbound Message
通过LoggingInInterceptor()拦截到的信息
六月 18, 2016 9:18:40 下午 org.apache.cxf.interceptor.AbstractLoggingInterceptor log
信息: Inbound Message
----------------------------
ID: 3
Address: http://localhost:9009/HelloWorldWS
Encoding: UTF-8
Http-Method: POST
Content-Type: text/xml; charset=UTF-8
Headers: {Accept=[*/*], Cache-Control=[no-cache], connection=[keep-alive], Content-Length=[185], content-type=[text/xml; charset=UTF-8], Host=[localhost:9009], Pragma=[no-cache], SOAPAction=[""], User-Agent=[Apache CXF 2.4.0]}
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:sayHi xmlns:ns2="http://ws.tgb.com/"><arg0>许晨阳</arg0></ns2:sayHi></soap:Body></soap:Envelope>
Outbound Message
通过Loggi
这篇关于【WebService框架-CXF】——CXF拦截器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!