繁体   English   中英

ehcache 是否尊重 serialVersionUID?

[英]Does ehcache respect serialVersionUID?

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

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

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

所以,问题是:集群复制的ehcache是否正确尊重serialVersionUID 也就是说,如果本地 class 的版本不同,它是否不会尝试复制实体?

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

Ehcache 不支持您建议的serialVersionUID。 我在运行 Ehcache 独立运行和通过 Terracotta 分布式运行时亲身体验了您在上面描述的场景,如果版本 UID 不匹配,则会在客户端上引发异常。

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

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

暂无
暂无

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

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