群集的兵马俑缓存未跨模块更新

时间:2012-11-16 15:23:31

标签: java hibernate ehcache terracotta

问题包含很多组件,我会尽量不要错过任何组件:

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

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

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

    问题是: - 我是否正确地假设在进行“保存”操作后,二级缓存会“最终”在整个群集范围内更新信息(根据Terracotta文档,在几毫秒内)? - 可能的原因是什么不发生?

1 个答案:

答案 0 :(得分:0)

似乎<defaultCache>未使用<terracotta />声明为群集。所有其他人都是,所以我没有首先注意到这种疏忽。