例如,我有一个稳定的服务器正在运行。它通过序列化json格式的Status
实例,在Zookeeper实例上注册了服务器状态。
一段时间后,我在Status
类中添加了一个实例字段,并启动了另一个testserver
,在同一个zookeeper实例上重新显示了其服务器状态。
现在,我需要编写一些检查程序来监视两个服务器。我应该怎么做才能正确地反序列化两个版本并希望处理Status
类的将来版本?
我试图删除所有字段并改为使用地图。但这并不很方便。 像这样:
public class Status
{
private int serverId;
//...
}
// changes to
public class Status
{
public static final String SERVERID = "serverId";
private Map<String, Object> properties = new HashMap<>();
//...
}
有什么建议吗?是否有最佳实践来应对这种情况?
答案 0 :(得分:1)
如果您使用Jackson来对类进行序列化和反序列化,则可以将configurations设置为忽略未知或缺少的字段,以允许您的Status Bean得以发展:
这将使监视器可以使用不同版本的服务器状态JSON实例。