使用ProtoStuff跨JDK1.6和JDK1.7对可丢弃文件进行序列化和反序列化
我们有两个系统,一个运行JDK1.6,另一个运行JDK1.7。为了在两个节点之间进行通信,我们使用ProtoStuff序列化来转换二进制文件并将其传输到另一个节点,在该节点上,二进制文件再次被反序列化 JDK1.7添加了新字段“suppressedExceptions”,因此现在如果我们在一个节点中序列化JDK1.7中的Throwable,并将其传输到另一个节点,则它无法反序列化,反之亦然 由于两个节点使用不同的技术,因此不可能从JDK1.6迁移到JDK1.7,也不可能从JDK1.7迁移到JDK1.6 是否有解决此问题的方法,请提前回复 关于,,使用ProtoStuff跨JDK1.6和JDK1.7对可丢弃文件进行序列化和反序列化,protostuff,Protostuff,我们有两个系统,一个运行JDK1.6,另一个运行JDK1.7。为了在两个节点之间进行通信,我们使用ProtoStuff序列化来转换二进制文件并将其传输到另一个节点,在该节点上,二进制文件再次被反序列化 JDK1.7添加了新字段“suppressedExceptions”,因此现在如果我们在一个节点中序列化JDK1.7中的Throwable,并将其传输到另一个节点,则它无法反序列化,反之亦然 由于两个节点使用不同的技术,因此不可能从JDK1.6迁移到JDK1.7,也不可能从JDK1.7迁移到JDK
如果将新字段添加到基类之一,则PavanProtostuff runtime不支持两个类版本之间的向后兼容性。这是由标记移位引起的-当您向基类添加新字段时,childred类中的所有标记号都移位。所以,总的来说,你的问题没有好的解决方案 但若您将编码转换为json,那个么问题应该会消失。使用原型JSON,字段使用它们的名称而不是标签存储,因此在类层次结构中间添加新字段不再是问题。