0

我想对保留在应用程序级范围内的地图进行聚类。

第一个想法是使用一个@Singleton, @Clusteredbean 和一个包含我的数据的字段。
这似乎不起作用,我的猜测是它从未实现过

这篇文章提出了实现集群单例的方法,但它们看起来很复杂。

除了手动更新数据库表之外,我看到的唯一替代方法是使用复制缓存。

我的问题是:是否建议声明和使用 infinispan 缓存(像这样)来解决这个问题?
如果是,我应该使用什么设置来避免脏读?
在 wildfly-18 时代,这个相对简单的问题还有其他选择吗?

4

2 回答 2

1

正如您提到的集群,您需要使用standalone-full-ha.xml

编辑文件并添加以下配置

<cache-container module="org.infinispan.extension" name="infinispan_container" default-cache="default">
    <transport lock-timeout="60000"/>
    <global-state/>
    <distributed-cache name="default"/>
    <local-cache name="localCache"/>
    <replicated-cache name="replicatedCache"/>
</cache-container>

您的应用程序有不同的缓存可用,如果您希望使用复制缓存,可以将其注入您的应用程序

@Resource(lookup = "java:jboss/datagrid-infinispan/container/infinispan_container/cache/replicatedCache")
Cache cache;
于 2019-12-04T12:32:04.690 回答
0

Diego 的回复假定您使用的是 Infinispan 分发的 WF 模块(请注意 datagrid-infinispan 命名空间)。

要使用在 WF 的 Infinispan 子系统中定义的任意 Infinispan 缓存,请使用以下形式的 jndi 名称:java:jboss/infinispan/cache/your-container-name/your-cache-name.

例如

@Resource(lookup="java:jboss/infinispan/cache/foo/bar")
private Cache<K, V> cache;

WF 将管理缓存的生命周期,确保在必要时启动/停止它。

于 2020-01-28T13:05:36.017 回答