在服务端的WebService在被调用时,往往需要记录访问者IP、对IP进行限制或者其进行其他一些记录日志的操作,这时候需要我们对已经写好的接口增加拦截器。
编写拦截器
cxf有2种拦截器,InInterceptor、OutInterceptor,顾名思义,InInterceptor可以处理soap请求消息,OutInterceptor可以处理soap响应消息。所有的拦截器都继承自AbstractPhaseInterceptor<?>,此抽象拦截器实现了Interceptor接口。
我们写的拦截器如下:
拦截器分为不同的Phase,各个Phase又有自己的拦截器链,参考http://cxf.apache.org/docs/interceptors.html。
代码中NetUtil.getRemoteIp这个函数是我们项目中用来获取IP地址的,代码如下:
修改配置文件
在完成接口,还没有配置拦截器前,对应的XML文件如下:
这时候我们只需要在配置文件中WebService相关便签中增加拦截器:
最后XML文件为:
此时在接口被访问时(例如访问http://localhost:8080/项目名称/ws/uums?wsdl
),就会输出客户端的IP地址。