jar包引用版本不一致引發的問題


  前幾天升級了一個模塊的小補丁后,現網出了個問題,調用一個底層接口,獲取到的返回對象一直是空的。詭異的是該模塊本次升級的補丁內容並不涉及這個接口相關的東西,或者也可以說,補丁就是改了極其簡單的一行代碼而已。但為啥會引發另一個接口的問題呢?

  先看日志,日志里一直打印該接口返回對象為空,第一判斷是底層接口出了問題,去看底層,發現人家服務好好的。繞過該模塊,直接用工具調用底層接口,沒問題。非常詭異,按照經驗,推測是jar包出問題了。第二步,看jar包的歷史變動。拿本模塊的API的jar包跟底層的jar包一比較,果然接口對象字段不一致,本模塊的返回對象里多了一個字段。那為啥會多這個字段呢?原來是底層的開發版本新增的,但它們的發布版本沒有增加。而本模塊打包時pom文件引用的是底層的開發版本,底層的現網用的是發布版本。

  至此問題已定位清楚,解決方案也自然出來:修改本模塊pom文件引用底層API的發布版本jar包,重新打包部署即可。另一點需要指出的是,本模塊對底層的調用使用的是rpc,獲取到底層的響應后需要通過底層的api進行反序列化,如果對方接口有變動將導致調用方反序列化失敗。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM