首页   >   代码编程

ehcache警告“diskStorePath is already used by an existing CacheManager”

配置了ehcache来实现mybatis的二级缓存之后,每次启动的时候,总是会有一个diskStorePath已被占用的警告,虽然会自动更换一个目录,也不会影响使用,但是看着着实不顺眼。

2019-05-05 12:51:22 [ WARN] - net.sf.ehcache.DiskStorePathManager - diskStorePath '/usr/local/ehcache' is already used by an existing CacheManager either in the same VM or in a different process.
The diskStore path for this CacheManager will be set to /usr/local/ehcache/ehcache_auto_created1969932983720693182diskstore.
To avoid this warning consider using the CacheManager factory methods to create a singleton CacheManager or specifying a separate ehcache configuration (ehcache.xml) for each CacheManager instance.

警告信息很清晰,已经有一个进程已经占用了/usr/local/ehcache这个目录,可是尽管我的服务器上有多个项目,但是我可以确定只有一个项目使用了ehcache,甚至我将其他的项目都停了,也还是不行。

我在启动tomcat之前,将缓存目录清空了也依旧还是有这个警告,开始以为是有什么框架自动集成了ehcache,但是转念一想,就算是集成了ehcache做缓存,总不至于说是缓存目录也正好是我配置的/usr/local/ehcache。

排除上面这个想法之后,百度了一下,看到有人提到说需要在spring中为EhcacheManager配置一个shared参数为true

<bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
    <property name="shared" value="true"/>
    <property name="configLocation" value="classpath:ehcache.xml"/>
</bean>
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
    <property name="cacheManager" ref="ehcache"/>
</bean>

但是经过测试后发现我的问题并没有解决,仔细看了一下别人文章中提到的错误信息,好像是有些不一样,而且看人家的文章中表达的意思,貌似真的是有多个项目使用了同一个缓存目录。

继续查阅资料,发现网上大都是上面的解决方法,而且都是抄来抄去的,耐心多翻了几页百度之后,终于让我找到了原因所在:tomcat重复加载了两次项目

这就可以理解了,为什么我只有一个项目启动时也会有这个警告,因为在第一次加载的时候已经占用了缓存目录,后面第二次再加载时,还是相同的缓存目录,此时就会给出警告了。。。

QQ群: 686430774  /  718410762

站长Q: 1347384268

如果文章有帮到你,可以考虑请博主喝杯咖啡!

分享到:

欢迎分享本文,转载请注明出处!

作者:不忘初心

发布时间:2019-05-07

永久地址:https://www.jiweichengzhu.com/article/b2aeed16d9944599a6bc4da7a810f220

评论