共享 infinispan 2LC 缓存

shared infinispan 2LC cache

我有两个应用程序使用相同的数据库实体。这两个应用程序都部署在 jboss eap 6.2 独立集群上。 数据库表仅从一个应用程序更新,但从两个应用程序读取。两个应用程序都使用本机休眠 APIs 来 read/write 来自数据库的数据。

在嵌入式模式下启用 infinispan 作为 2LC 后,如何确保在一个应用程序中更新的缓存实体从第二个应用程序缓存中失效?任何 JMX/JMS 接口来指示缓存失效?

如果我选择远程缓存模式并启动 infinispan 作为热棒服务器,那么缓存服务器可以与两个应用程序共享。但是我是否需要更新代码以使用热棒客户端 API 从缓存中查询实体?如果从应用程序更新实体,它也会 update/invalidate 自动缓存。

这是不支持的。 Hibernate 没有远程二级缓存 Infinispan 实现。嵌入式实现使用与仅限嵌入式功能的深度集成,因此不可互换。

如果使用嵌入式,每个应用程序都有自己的缓存,并且不能共享这些缓存,因为每个应用程序都是一个单独的类加载器。因此,类加载器 X 中的实体 A 不能与类加载器 Y 中的实体 A 一起读取。

如果您真的想要一个共享缓存,没有什么可以阻止您通过将数据添加到远程 Infinispan 服务器来自己做。