Я пытаюсь использовать кеш JBoss 7 Infinispan в качестве формы связи (что-то еще позже) двух развернутых на войне приложений Spring. У меня проблема с доступом к менеджерам управляемого кэша JBoss.
Когда я использую
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 Class Cast Exception
, хорошо известной вам, которую вы решили. Но я не могу понять, почему вы определяете экземпляр кэша какMap<Object, Object> cache;
редкий, чем CacheContainer ? - person Anton Dozortsev   schedule 20.12.2015