1

这个问题有很多组成部分,我会尽量不要错过任何一个:

  • EhCache 与 Terracotta 一起用于集群
  • EhCache 用于弹簧缓存和休眠二级缓存
  • 为了只有一个缓存管理器,缓存管理器被声明为“共享”
  • 我们有很多 web 模块,它们被部署为不同的 webapps
  • 在内部环境中,模块部署在同一台服务器上并且不使用 Teracotta,在生产和登台环境中,它们部署在不同的服务器上
  • terracotta 集群使用默认的“最终”一致性模式
  • ehcache 2.5.2,休眠 3.6,兵马俑 3.0.6

鉴于这些先决条件,会发生以下情况:

  1. 一个 Web 模块(Web 应用程序,部署在一台服务器上)对休眠实体进行了更改。这应该在集群范围内更新缓存条目。
  2. 当从另一个 Web 模块(另一个服务器)请求对象时,即使在一分钟后,如果实体由该标识符加载,则会返回一个陈旧的对象(即,没有第一个 Web 应用程序所做的修改)

问题是: - 我是否正确假设在进行“保存”操作后,二级缓存“最终”(在毫秒内,根据 Terracotta 文档)获取更新集群范围内的信息?- 没有发生这种情况的可能原因是什么?

4

1 回答 1

0

似乎<defaultCache>没有使用<terracotta />. 所有其他人都是,所以我一开始并没有注意到这个疏忽。

于 2012-11-24T13:40:34.403 回答