2017-10-06 114 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;