到JBoss EAP 7.0 standalone.xml设置Infinispan的缓存设置不反映在应用
问题描述:
我在JBoss中7中添加缓存通过CLI:到JBoss EAP 7.0 standalone.xml设置Infinispan的缓存设置不反映在应用
/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
被设置为不同的设置时,它被延迟创建。
模式设置被复制,但什么是发现是本地的。其他设置如交易也不同。我错过了什么?
答
我和你有类似的问题。我在EAP 7中配置了一个本地缓存,并配置了生命周期。它被配置为相对较短。早些时候,相同的配置工作得很好,但我们意识到,缓存的东西永远留在缓存中。
问题是我们如何得到缓存的实例。我们注入了缓存管理器:
@Resource(lookup = "java:jboss/infinispan/download-manager")
private CacheContainer cacheContainer;
然后我们使用缓存容器来访问缓存。调试后,即使EAP 7的使用寿命仅为30秒,寿命为-1。
cacheContainer.getCache("someCache")
未获取缓存实例,而是创建了一个具有默认值的新缓存。我认为它只解释了你的“本地缓存”设置。
的方式我是怎么到缓存与正确的设置是:
@Resource(lookup = "java:jboss/infinispan/cache/download-manager/someCache")
private Cache<String, Object> negative_cache_direct;
嗯,你有没有试着用最新的JBoss/Wildfly应用服务器,那会是Wildfly 10 –
我很想,但我的组织现在禁止。 –
如果我是你,我会试试至少用Wildfly 10或11,看看它是否按预期工作。如果确实如此,那么您的组织有升级的理由。如果没有,可能还有其他东西丢失。 –