При объединении двух подсистем, мы были вынуждены использовать несколько экземпляров SessionFactory , что приводило к проблемам при взаимодействии с нашим кешем второго уровня Hibernate (Terracotta EhCache). В частности:
for(CacheManager cm : CacheManager.ALL_CACHE_MANAGERS){
LOGGER.log(Level.DEBUG, "In cm " + cm.getName());
for(String cn : cm.getCacheNames()){
LOGGER.log(Level.DEBUG, "I have a cache called " + cn);
LOGGER.log(Level.DEBUG, "it's status is " + ms.getCache(cn).getStatus());
}
}
try{
myCollection.size();
}catch(IllegalStateException ise){
LOGGER.log(Level.FATAL, ise); //Triggered
}
Распечатка отладки показывает STATUS_ALIVE
для кеша «Foo», но вызов size ()
вызывает исключение IllegalStateException
:
java.lang.IllegalStateException: The Foo Cache is not alive.
В настоящее время , оба SessionFactories настроены на использование SingletonEhCacheRegionFactory
. Если я переключу SessionFactories на использование EhCacheRegionFactory
(не одноэлементный), каковы будут последствия для поведения кеша (особенно в контексте веб-приложения)?