Каковы последствия использования SingletonEhCacheRegionFactory и EhCacheRegionFactory для Кэш второго уровня Hibernate в веб-приложении?

При объединении двух подсистем, мы были вынуждены использовать несколько экземпляров 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 (не одноэлементный), каковы будут последствия для поведения кеша (особенно в контексте веб-приложения)?

11
задан Bo Persson 18 March 2012 в 08:24
поделиться