使用多个缓存管理器

时间:2017-10-06 08:30:58

标签: spring hibernate ehcache

(首先,对不起我的英语......我不能说得很好)

您好, 我正在使用版本4.0.9中的spring框架开发一个多模块Web应用程序。我有三个不同的jar模块,包含三个不同的实体模型,彼此连接到自己的数据库。这三个模型在版本4.3.5和Spring中都使用了Hibernate。

我想在每个jar模型模块上配置Ehcache作为hibernate的二级缓存,同样我需要在主要webapp项目中为缓存提供程序配置Ehcache。

  • model-1.jar(spring + hibernate + ehcache),hibernate-ehcache依赖版本4.3.5
  • model-2.jar(spring + hibernate + ehcache),hibernate-ehcache依赖版本4.3.5
  • model-3.jar(spring + hibernate + ehcache),hibernate-ehcache依赖版本4.3.5
  • webapp.war(spring-mvc + ehcache),具有spring-context-support 4.0.9版本依赖性

在模型1模块中,像这样:

(型号-1-弹簧context.xml中)

<bean id="oneSessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" lazy-init="true">
 <property name="dataSource" ref="oneDataSource" />
 <property name="hibernateProperties">
 <props>
    <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop>
  <prop key="hibernate.cache.use_second_level_cache">true</prop>
 <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
  <prop key="net.sf.ehcache.configurationResourceName">one-ehcache.xml</prop>
 </props>

 </property>
 <property name="packagesToScan" value="......" />
 </bean>

(单ehcache.xml中)

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd"  name="oneHibernateCache">


    <diskStore path="/tmp/xxxx"/>

    <defaultCache 
            maxElementsInMemory="10000"
            eternal="false"
            timeToIdleSeconds="120"
            timeToLiveSeconds="120"
            overflowToDisk="true"
            maxElementsOnDisk="10000000"
            diskPersistent="false"
            diskExpiryThreadIntervalSeconds="120"
            memoryStoreEvictionPolicy="LRU"
            />
</ehcache>

模型-2和模型-3,具有与模型-1类似的结构。

webapp配置如下:

(班级配置)

@EnableCaching
@Configuration
public class CacheConfig {

    @Bean
    public CacheManager cacheManager() {
        return new EhCacheCacheManager(ehCacheCacheManager().getObject());

    }

    @Bean
    public EhCacheManagerFactoryBean ehCacheCacheManager() {
        EhCacheManagerFactoryBean factory = new EhCacheManagerFactoryBean();
        factory.setConfigLocation(new ClassPathResource("web-ehcache.xml"));
        factory.setShared(true);
        return factory;
    }

}

(web的cache.xml)

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd" name="webSpringCache">


 <diskStore path="/tmp/zzzzz" />

 <defaultCache 
 maxElementsInMemory="1" 
 eternal="true"
            overflowToDisk="false" 
            diskPersistent="false"
            diskExpiryThreadIntervalSeconds="1800" 
            memoryStoreEvictionPolicy="FIFO">
    </defaultCache>

我在缓存管理器,缓存名称和其中的区域方面遇到了一些问题。 Spring环境没有开始,我也不知道如何正确配置模块。

如果有人可以帮助我,我会非常高兴。

非常感谢大家。

0 个答案:

没有答案