在cxf中使用配置避免增加字段導致客戶端必須更新的問題

在使用cxf實現webservice時,經常碰到的問題就是如果在服務端,修改了一個接口的簽名實現,如增加一個字段,或者刪除一個字段。在這種情況下,在默認的配置中,就會報以下的錯誤信息:

org.apache.cxf.interceptor.Fault: Unmarshalling Error: unexpected element . Expected elements are
這種錯誤即客戶端使用的傳輸對象與服務端接收的參數的字段不匹配。但如果,每次修改服務端的實現,都需要更新客戶端時,就會出現一些問題,如在某些情況下,客戶端的更新是不可能的事(如不在自己掌握之內,或者服務不能隨便更新,或者其它計劃時)。

如果避免這種問題,其實也很簡單,就是禁用cxf中的字段信息驗證,如果禁用掉此驗證,就不再會對相應的字段信息進行驗證,同時沒有的字段也會自動的忽略。整個解決只需要增加以下的一行配置即可,在cxf.xml(spring集成文件)中增加以下配置項:

<cxf:properties>
   <entry key="set-jaxb-validation-event-handler" value="false"/>
</cxf:properties>
這樣,即會禁用掉所有cxf的數據驗證,在大多數情況下,這可以滿足我們的要求(除非你有其它和cxf集成的數據驗證要求)。

轉載請標明出處:i flym
本文地址:http://www.iflym.com/index.php/code/201307310001.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章