【问题标题】:Infinispan: class changed and deserialization not workingInfinispan:类更改并且反序列化不起作用
【发布时间】:2017-04-25 13:47:30
【问题描述】:

我有一个使用 Infinispan 6.0.1.Final 的 Spring Boot 应用程序。我有两个类 A 和 B。B 扩展了 A。我有一个存储 B 类型对象的缓存。现在,我做了一个小改动,我将 2 个类字段及其 getter/setter 从 B 移动到 A,并且我已经更新两个类中的序列号。当我重新启动我的应用程序并从缓存中提取 B 类型的对象时,我移动的字段显示为 null。

我的问题是:缓存包含 B 类型的对象(B 的旧版本)。我已经更改了 B 类,但从语义的角度来看,该类仍然具有相同的字段和方法,因为我移动的字段现在位于父类中。是否可以像更改类之前一样进行反序列化?

【问题讨论】:

    标签: java spring serialization deserialization infinispan


    【解决方案1】:

    只有当您知道在更改对象的类定义时可以从 Infinispan 中删除所有数据时,您才应该依赖 Java 序列化。

    对于可移植对象表示,请使用 Protobuf 编码对象:

    使用 protobuf,您可以更好地控制在架构更新时您希望数据如何演变。顺便说一句,Infinispan 很好地支持它,因为它是支持远程查询和其他一些高级功能的基本要求。

    【讨论】:

      猜你喜欢
      • 2012-07-11
      • 2020-10-16
      • 2012-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多