共享的infinispan 2LC缓存

时间:2018-08-09 07:47:43

标签: hibernate infinispan jboss-eap-6 hibernate-cache hot-rod

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

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

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

1 个答案:

答案 0 :(得分:1)

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

如果使用嵌入式,则每个应用程序都会获得自己的缓存,并且由于每个应用程序都是单独的类加载器,因此无法共享这些缓存。因此,类加载器X的实体A无法与类加载器Y的实体A一起读取。

如果您确实想要共享缓存,则可以通过将数据添加到远程Infinispan Server来阻止您自己进行操作。