0

我们有两个系统,一个运行 JDK 1.6,另一个运行 JDK 1.7。为了在两个节点之间进行通信,我们使用 ProtoStuff 序列化来转换二进制文件并传输到另一个节点,在该节点再次对二进制文件进行反序列化。

JDK 1.7 添加了新字段 'suppressedExceptions',所以现在如果我们在一个节点中序列化 JDK 1.7 中的 Throwable 并转移到另一个节点,它就不能反序列化,反之亦然。

由于两个节点使用不同的技术,因此无法从 JDK 1.6 迁移到 JDK 1.7 和 JDK 1.7 到 JDK 1.6。

有没有解决这个问题的方法,先谢谢你的回复。

问候, 帕万

4

1 回答 1

0

如果将新字段添加到基类之一,Protostuff-runtime 不支持两个类版本之间的向后兼容性。这是由tag移位引起的 - 当您向基类添加新字段时,tag子类中的所有数字都会移位。所以,一般来说,你的问题没有好的解决方案。

但是,如果您将编码切换为 json,那么问题应该会消失。使用protostuff-json,字段使用它们的名称(而不是标签)存储,因此在类层次结构中间添加新字段应该不再是问题。

于 2015-05-30T17:24:46.380 回答