开发过程中dubbo 实体序列化问题

来源:互联网 发布:搭车去柏林 知乎 编辑:程序博客网 时间:2024/06/10 17:16


首先想到的是java为什么要序列化?网上看到的一篇文章如下。

http://blog.csdn.net/wangloveall/article/details/7992448/


开发过程中的问题


  某个模块需求改变的时候,需要对之前已经序列化的实体添加字段,并且通过dubbo服务调用返回实体的所有属性(包括新添加的属性字段)。但是在dubbo服务端调用dubbo客户端时,发现对于实体新增加的字段,怎么也没有该属性。这就是问题的所在。


解决过程

  于是开始远程断点调试,发现dubbo客户端是有这个属性的,但是服务端在调用的时候丢失了这个属性。经过多次调试,想到了java序列化和反序列化问题,对于dubbo的分布式实体,dubbo自己做的实体的序列化和反序列化,是不是这块有问题呢?查找网上的资料,有的这样解释dubbo的序列化和反序列化,http://blog.csdn.net/wanyanxgf/article/details/6944733。


据说解决方案如下


  据同事说,之前也遇到过这样的问题,解决方案有两种:1 、修改实体的序列化号。2、升级该实体所在jar的版本号。但实际上,我试了试,把用到该dubbo服务的项目重新build后重启了一下就可以了,奇怪了。但是任何用到该实体的dubbo client 没有重新build,那用到该实体那个新增加的属性就会有问题。


  但是为了保险起见,也为了兼容之前的版本可见,还是把当前分支的jar的版本号升级一下吧。


综上:

  下次直接把版本号升级,就再也不用远程调试好长时间了。

  (ps:后来又出现了这样的问题,才发现: 两套不同的测试环境使用同一套redis缓存,更新了一套代码,而另一套没有更新,当添加缓存后,也会出现新增加的属性没有添加上的问题.)




1 0
原创粉丝点击