dubbox 遇到的kryo序列化问题,搞了2天未果

我先把错误贴出来吧
这是控制台报错日志
我的序列化是这样配置的
图片说明
user用户管理依赖这个通用接口包,
web项目也依赖这个通用接口包,然后都会调用这个序列化的实现,web上可以请求到user里面,但是返回的时候就报序列化错误了。搞了2天了。哪位好心人帮忙看一下吧

  1. 对应的实体类应该是有实现了 Serializable 接口
  2. 对应的实体类应该是加了 "private static final long serialVersionUID = 2506741148223987118L;" 这类标记
  3. 消费者或者生产者其中一方更新了新的实体,比如在这个实体类上加了新的 field

三者结合起来,导致了这个错误,其实归根到底就是 kryo 会缓存所有序列化/反序列化的数据,并且生成对应的 class ID,一旦遇到相同但不同版本的类就会出现类似的异常,解决方法只能是保证消费者跟生产者都用相同版本的实体。

或者改成用 Hessian / JSON 吧,起码这个序列化方式不会对类的版本这么敏感,增加或者减少实体类的 field 不会导致任何一方出现序列化/反序列化异常。