`

spring2.0+ehcache2.1.0配置

阅读更多
记录使用ehcache时遇到的两个问题


一、原使用的是spring2.0+ehcache1.2.4.jar,在jdk1.6+tomcat6下运行正常,升级为jdk1.7+tomcat7后,第一次访问报错500,再刷新正常访问。

关键错误信息:

net.sf.ehcache.CacheException: cacheNameCache:Could not remove disk store entry for webres. Error was cacheName Cache: The Disk store is not active.


解决办法:ehcache升级为ehcache-2.10.1.jar,ehcache-core-2.6.11.jar,ehcache-spring-annotations-1.2.0.jar(最新版本的ehcache本系统框架不能支持),运行正常。

二、同一台服务器,运行多个项目。出现新问题。服务无法正常启动,启动时报错。

关键错误信息:

net.sf.ehcache.CacheException: java.io.FileNotFoundException: C:\tomcat-7\temp\.ehcache-diskstore.lock (拒绝访问。)

百度后找到一些解决办法,但因本系统spring、和ehcache版本低并不适用。但原理明白了。多个项目同时使用了ehcache-diskstore文件。第一个项目使用后,该文件被锁,其他项目不能正常读写。所以需要为每个项目ehcache文件设置各自的存储位置。

具体配置方法:

1、增加配置文件:ehcache.xml。主要是修改了磁盘存储路径,其他使用了默认设置。
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:noNamespaceSchemaLocation="../config/ehcache.xsd" 
	updateCheck="false">
    <diskStore path="java.io.tmpdir/proName"/>

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


2、修改spring的相关配置文件。增加了configLocation的配置
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
		<property name="configLocation" value="classpath:ehcache.xml"/> 
        <property name="shared" value="true"/>  
	</bean>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics