我们有两个系统一个用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。
是否有任何解决方案可以解决此问题,请提前感谢您的回复。
关心, 帕
答案 0 :(得分:0)
如果将新字段添加到其中一个基类,则Protostuff-runtime不支持两个类版本之间的向后兼容性。这是由tag
移位引起的 - 当您向base classe添加新字段时,childred类中的所有tag
数字都会被移位。所以,一般来说,你的问题没有好的解决方案。
但是如果你将编码切换到json,那么问题就会消失。使用protostuff-json
,字段使用其名称(而不是标记)存储,因此在类层次结构中间添加新字段不应该成为问题。