天天看點

dubbo調用時實作類型丢失

dubbo版本 2.8.4

最新希望實作一個分頁的插件,在dubbo調用時,service端本應傳回實作類為com.github.pagehelper.Page的List的對象,實際consumer端傳回對象的實作類型為ArrayList,service端換成LinkedList也是如此.有可能是service端的dubbo接口傳回的實作類在consumer端沒有出現,因而隻保留了接口特性并建立了接口特定的實作類.由此可看出,dubbo接口調用與本地方法調用存在多方面的不同,不能将其完全當成本地方法等同的存在.在使用時應該指明具體實作類.

更新: 不止是傳回類型定義為List會丢失實作類型,傳回類型設定為com.github.pagehelper.Page,Page 是ArrayList的子類,傳回結果丢失了所有的其他例如getTotal()的屬性.使用時應該特别注意.

更新2: AbstractSerializer 有 17 種子類實作, hessian 根據不同的 java 對象類型來實作了不同的序列化工具類,List的預設反序列化的實作類型應該就是ArrayList

如果了解有錯還望大神指出改正,不勝感激

不過dubbo的功能相當強大,除了一般調用之外還有很多功能在平時的開發中沒有用到,詳情參考dubbo-user-book

繼續閱讀