今天主要來講解下如何在Spring整合CXF環境下,添加攔截器;
這里我們給下官方的參考文檔:http://cxf.apache.org/docs/jax-ws-configuration.html
結合官方文檔,我們在前面的實例基礎上,加代碼:
首先我們把前面的自定義攔截器 MyInterceptor 貼進來。
然后我們打開spring配置文件,applicationContext.xml
根據官方文檔:我們通過jaxws:inInterceptors jaxws:outInterceptors 這兩個標簽來添加in攔截器和out攔截器
我們修改下jaxws:endpoint 節點:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<!-- 定義服務提供者 -->
<
jaxws:endpoint
implementor
=
"#helloWorld"
address
=
"/HelloWorld"
>
<!-- 添加in攔截器 -->
<
jaxws:inInterceptors
>
<
bean
class
=
"org.apache.cxf.interceptor.LoggingInInterceptor"
/>
<
bean
class
=
"com.java1234.interceptor.MyInterceptor"
/>
</
jaxws:inInterceptors
>
<!-- 添加out攔截器 -->
<
jaxws:outInterceptors
>
<
bean
class
=
"org.apache.cxf.interceptor.LoggingInInterceptor"
/>
</
jaxws:outInterceptors
>
</
jaxws:endpoint
>
|
這里 我們添加了兩個in攔截器,一個是cxf自帶的LogginInInterceptor攔截器,還有一個是我們自己定義的MyInterceptor攔截器,
主要用作權限判斷;
out攔截器,我們還是用了一個cxf自帶的LogginInInterceptor攔截器;
這樣我們就完事了;我們可以看到。用spring我們可以很輕松的完整攔截器的配置;
接下來測試下話,我們還是用前面開發的WS_Client來測試,因為請求的websercie地址變了。
所以我們用wsdl2java工具重新生成下新的客戶端代碼;(具體操作大家看前面的帖子,這里就不再重復敘述)
我們測試的話,大家可以先把客戶端的攔截器注釋掉,我們會發現會報錯,說找不到header消息;
假如密碼弄錯,會報用戶名或者密碼不對;
我們用正確的密碼,webservice接口會返回正確的結果。
OK。今天就到這里。