使用ProtoStuff在JDK 1.6和JDK 1.7上对Throwable进行序列化和反序列化

时间:2015-04-25 09:16:47

标签: protostuff

我们有两个系统一个用JDK 1.6运行,另一个用JDK 1.7运行。为了在两个节点之间进行通信,我们使用ProtoStuff Serialization来转换二进制和转移到其他节点,其中二进制文件再次被反序列化。

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

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

是否有任何解决方案可以解决此问题,请提前感谢您的回复。

关心, 帕

1 个答案:

答案 0 :(得分:0)

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

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