(首先,对不起我的英语......我不能说得很好)
您好, 我正在使用版本4.0.9中的spring框架开发一个多模块Web应用程序。我有三个不同的jar模块,包含三个不同的实体模型,彼此连接到自己的数据库。这三个模型在版本4.3.5和Spring中都使用了Hibernate。
我想在每个jar模型模块上配置Ehcache作为hibernate的二级缓存,同样我需要在主要webapp项目中为缓存提供程序配置Ehcache。
在模型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环境没有开始,我也不知道如何正确配置模块。
如果有人可以帮助我,我会非常高兴。
非常感谢大家。