【发布时间】:2015-09-30 08:05:21
【问题描述】:
我需要关于兼容更改和 serialVersionUID (http://docs.oracle.com/javase/6/docs/platform/serialization/spec/version.html#6678) 的建议。
我在一个带有“客户端”项目的系统上工作,该项目使用 RPC 与“服务器”项目通信(“服务器”使用 DTO 类从数据库导出数据,“客户端”使用相同的 DTO 类呈现该数据)。
当在 DTO 类中添加字段时,团队决定不更改 serialversionUID,因此当部署新版本的“服务器”时,不需要立即部署“客户端”,因为旧版本DTO 类与新的类兼容。
但是(因为我们在两个项目中都有几十个系统实例),如果使用新版本的 DTO 类部署了新版本的“客户端”,而“服务器”由于某种原因仍保留在旧版本中,那么DTO 类的新字段将解析为 null,并以 null 的形式呈现给客户,这可能是不正确的。
是否有解决此问题的最佳实践?我们可以在 DTO 类中进行任何类型的更改时更改 UID,但是我们总是必须同时部署两个项目,即使没有使用更改,我们正在努力避免这种情况......
【问题讨论】:
标签: java serialization serialversionuid