spring2.0+ehcache2.1.0配置
程序员文章站
2022-06-09 10:49:05
...
记录使用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>
上一篇: 网易游戏雷火2020春招web前端工程师笔试卷0425
下一篇: 帝都上班族的真实写照