繁体   English   中英

兼容的更改和serialversionUID

[英]Compatible changes and serialversionUID

我需要有关兼容更改和serialVersionUID的建议( http://docs.oracle.com/javase/6/docs/platform/serialization/spec/version.html#6678 )。

我在一个具有“客户端”项目的系统上工作,该项目使用RPC与“服务器”项目进行通信(“服务器”使用DTO类从数据库中导出数据,“客户端”使用相同的DTO类来显示数据)。

当在DTO类中添加字段时,团队决定不更改serialversionUID,因此,在部署新版本的“服务器”时,不需要立即部署“客户端”,因为该DTO类的旧版本是与新的兼容。

但是(由于我们两个项目都有几十个系统实例),如果使用新版本的DTO类部署了新版本的“客户端”,并且由于某种原因“服务器”仍然保留在旧版本中,则新字段DTO类的NULL将解析为null,并且将null呈现给客户,这可能是不正确的。

有什么最佳实践可以解决此问题? 我们可以在DTO类中进行任何更改来更改UID,但是即使在不使用更改的情况下,我们也总是必须同时部署两个项目,并且我们试图避免这种情况。

更改UID不是解决方案,这是问题的一部分。 不要那样做

添加新字段时,还可以将逻辑添加到同一类的readObject()方法中,以为它提供一个明智的默认值(如果为null)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM