JBoss EAP 7.0 standalone.xml 中设置的 Infinispan 缓存设置未反映在应用程序中
Infinispan cache settings set in JBoss EAP 7.0 standalone.xml not reflected in application
我在 JBoss 7:
中通过 CLI 添加了一个缓存
/subsystem=infinispan/cache-container=sample:add
/subsystem=infinispan/cache-container=sample/replicated-cache=account:add(mode=ASYNC)
/subsystem=infinispan/cache-container=sample/replicated-cache=account/component=transaction:write-attribute(name=mode,value=BATCH)
/subsystem=infinispan/cache-container=sample/replicated-cache=account/component=locking:write-attribute(name=isolation, value=REPEATABLE_READ)
它反映在 standalone.xml 的 Infinispan 子系统中:
<cache-container name="sample">
<replicated-cache name="account" mode="ASYNC">
<locking isolation="REPEATABLE_READ"/>
<transaction mode="BATCH"/>
</replicated-cache>
</cache-container>
看到它反映在 JBoss 控制台中:
但是在应用程序内部使用时,找到了缓存容器,但没有找到缓存。相反,它是在使用不同设置集调用 cacheManager#getCache
时延迟创建的。
模式集已复制,但找到的是本地的。交易等其他设置也不同。我错过了什么吗?
我遇到了和你很相似的问题。我有一个 local-cache 在 EAP 7 中配置了生命周期。它被配置为相对较短。相同的配置早些时候运行良好,但我们意识到,缓存的内容永远保留在缓存中。
问题是我们如何到达缓存实例。我们注入了缓存管理器:
@Resource(lookup = "java:jboss/infinispan/download-manager")
private CacheContainer cacheContainer;
然后我们使用缓存容器来访问缓存。调试后,生命周期为 -1,尽管 EAP 7 中的生命周期仅为 30 秒。
cacheContainer.getCache("someCache")
没有获取缓存实例,而是创建了一个具有默认值的新缓存。我认为它解释了您的 "local cache" only 设置。
我使用正确设置进入缓存的方式是:
@Resource(lookup = "java:jboss/infinispan/cache/download-manager/someCache")
private Cache<String, Object> negative_cache_direct;
缓存似乎只在依赖的 EJB 模块上急切地初始化。由 CDI 支持的库不会触发缓存初始化。
我在 JBoss 7:
中通过 CLI 添加了一个缓存/subsystem=infinispan/cache-container=sample:add
/subsystem=infinispan/cache-container=sample/replicated-cache=account:add(mode=ASYNC)
/subsystem=infinispan/cache-container=sample/replicated-cache=account/component=transaction:write-attribute(name=mode,value=BATCH)
/subsystem=infinispan/cache-container=sample/replicated-cache=account/component=locking:write-attribute(name=isolation, value=REPEATABLE_READ)
它反映在 standalone.xml 的 Infinispan 子系统中:
<cache-container name="sample">
<replicated-cache name="account" mode="ASYNC">
<locking isolation="REPEATABLE_READ"/>
<transaction mode="BATCH"/>
</replicated-cache>
</cache-container>
看到它反映在 JBoss 控制台中:
但是在应用程序内部使用时,找到了缓存容器,但没有找到缓存。相反,它是在使用不同设置集调用 cacheManager#getCache
时延迟创建的。
模式集已复制,但找到的是本地的。交易等其他设置也不同。我错过了什么吗?
我遇到了和你很相似的问题。我有一个 local-cache 在 EAP 7 中配置了生命周期。它被配置为相对较短。相同的配置早些时候运行良好,但我们意识到,缓存的内容永远保留在缓存中。
问题是我们如何到达缓存实例。我们注入了缓存管理器:
@Resource(lookup = "java:jboss/infinispan/download-manager")
private CacheContainer cacheContainer;
然后我们使用缓存容器来访问缓存。调试后,生命周期为 -1,尽管 EAP 7 中的生命周期仅为 30 秒。
cacheContainer.getCache("someCache")
没有获取缓存实例,而是创建了一个具有默认值的新缓存。我认为它解释了您的 "local cache" only 设置。
我使用正确设置进入缓存的方式是:
@Resource(lookup = "java:jboss/infinispan/cache/download-manager/someCache")
private Cache<String, Object> negative_cache_direct;
缓存似乎只在依赖的 EJB 模块上急切地初始化。由 CDI 支持的库不会触发缓存初始化。