http://www.iflym.com/index.php/code/201307310001.htmlphp
在使用cxf實現webservice時,常常碰到的問題就是若是在服務端,修改了一個接口的簽名實現,如增長一個字段,或者刪除一個字段。在這種狀況下,在默認的配置中,就會報如下的錯誤信息:html
1
|
org.apache.cxf.interceptor.Fault: Unmarshalling Error: unexpected element . Expected elements are
|
這種錯誤即客戶端使用的傳輸對象與服務端接收的參數的字段不匹配。但若是,每次修改服務端的實現,都須要更新客戶端時,就會出現一些問題,如在某些狀況下,客戶端的更新是不可能的事(如不在本身掌握以內,或者服務不能隨便更新,或者其它計劃時)。java
若是避免這種問題,其實也很簡單,就是禁用cxf中的字段信息驗證,若是禁用掉此驗證,就再也不會對相應的字段信息進行驗證,同時沒有的字段也會自動的忽略。整個解決只須要增長如下的一行配置便可,在cxf.xml(spring集成文件)中增長如下配置項:web
1
2
3
|
<
cxf:properties
>
<
entry
key
=
"set-jaxb-validation-event-handler"
value
=
"false"
/>
</
cxf:properties
>
|
這樣,即會禁用掉全部cxf的數據驗證,在大多數狀況下,這能夠知足咱們的要求(除非你有其它和cxf集成的數據驗證要求)。spring