0

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

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

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

4

1 回答 1

1

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

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

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

于 2018-08-09T09:07:59.743 回答