gpt4 book ai didi

java - ehcache 是否尊重 serialVersionUID?

转载 作者:搜寻专家 更新时间:2023-11-01 03:28:28 25 4
gpt4 key购买 nike

我们在具有 RMI 复制的集群中运行 ehcache 1.5,并一台一台地更新服务器(想想顶部的负载平衡器/代理和零停机更新)。

我们一般不关心serialVersionUID。问题是,如果复制缓存中有一个实体的两个版本,可能会发生非常糟糕的事情(直至中断)。也就是说,如果其中一台运行旧代码的服务器将一个元素复制到其类已更改的新服务器。

我们通常通过在不同端口上为更新的服务器启动新集群来解决这个问题,但它非常丑陋和脆弱。

因此,问题是:集群、复制的 ehcache 是否正确遵守 serialVersionUID?也就是说,如果本地类的版本不同,它不会尝试复制实体吗?

感谢您的直观猜测,但我正在寻找尽可能硬的数据,首选官方文档。

最佳答案

Ehcache 不支持您建议的 serialVersionUID。我在独立运行 Ehcache 和通过 Terracotta 分发的 Ehcache 时亲身经历过您上面描述的场景,如果版本 UID 不匹配,客户端将抛出异常。

理想情况下(我假设这就是您正在寻找的)与 serialVersionUID 不匹配的对象只会错过缓存,但不幸的是,这不受支持。

如果您正在寻找一个稍微更优雅的解决方案来解决这个问题,请尝试在更改缓存实体时更改缓存区域名称,也许将其与 serialVersionUID 链接。您需要更新您的 ehcache 配置文件以添加新的缓存区域,但它会强制资源仅从包含它们支持的版本的缓存中请求实体。这在您无法同时使用新版本更新所有资源并且不想使缓存过期的分布式环境中有很大帮助。

关于java - ehcache 是否尊重 serialVersionUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7099133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com