2017-10-06 115 views
0

我在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的控制台:

enter image description here

但是,当在应用程序中使用时,找到缓存容器,但缓存不是。相反,当cacheManager#getCache被设置为不同的设置时,它被延迟创建。

enter image description here

模式设置被复制,但什么是发现是本地的。其他设置如交易也不同。我错过了什么?

+0

嗯,你有没有试着用最新的JBoss/Wildfly应用服务器,那会是Wildfly 10 –

+0

我很想,但我的组织现在禁止。 –

+0

如果我是你,我会试试至少用Wildfly 10或11,看看它是否按预期工作。如果确实如此,那么您的组织有升级的理由。如果没有,可能还有其他东西丢失。 –

回答

1

我和你有类似的问题。我在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;