我正在嘗試使用JBoss 7 Infinispan緩存作爲兩個部署war的基於Spring的應用程序的通信形式(更晚些時候)。我在訪問JBoss託管緩存管理器時遇到問題。Spring,Infinispan和JBoss 7集成
當我使用
DefaultCacheManager cacheManager = new DefaultCacheManager();
cache = cacheManager.getCache();
每個的兩個應用
,我得到兩個獨立的緩存。有什麼方法可以訪問由JBoss服務器創建的緩存而根本不使用@ManagedBean註釋和Java EE標準?
完成了。感謝Kazaag,我使用了JNDI。
JndiTemplate jndiTemplate = new JndiTemplate();
jndiTemplate.lookup("java:jboss/infinispan/container/cluster");
我有一個衆所周知的DefaultEmbeddedCacheManager類轉換異常的問題。我用了反射。
Map<Object, Object> cache;
JndiTemplate jndiTemplate = new JndiTemplate();
Object cacheManager;
try {
cacheManager = (Object) jndiTemplate.lookup("java:jboss/infinispan/container/cluster");
Method method = cacheManager.getClass().getMethod("getCache");
cache = (Map) method.invoke(cacheManager);
} catch (Exception e) {
e.printStackTrace();
return;
}
此外,我不得不標記容器開始熱切地開始。
<cache-container name="cluster" aliases="ha-partition" default-cache="default">
<transport lock-timeout="60000"/>
<replicated-cache name="default" mode="SYNC" start="EAGER" batching="true">
<locking isolation="REPEATABLE_READ"/>
</replicated-cache>
</cache-container>
儘管存在不同的類加載器,但仍會複製緩存。
我有問題之內不工作了'DefaultEmbeddedCacheManager類轉換Exception'衆所周知的,你和你原來決心。但我無法弄清楚爲什麼將緩存實例定義爲'Map