Versions of Ehcache before version 2.5 allowed any number of CacheManagers with the same name (same configuration resource) to exist in a JVM.
Ehcache 2.5 and higher does not allow multiple CacheManagers with the same name to exist in the same JVM. CacheManager() constructors creating non-Singleton CacheManagers can violate this rule
发布评论
评论(10)
现在
net.sf.ehcache改为
net.sf.ehcache.internal了吗?我看到search.maven.org里面
net.sf.ehcache更新到2.6.9而
net.sf.ehcache.internal是从2.7.0开始更新的。 但是两个的用法好像不太一样。
我靠,终于解决了,原来是ehcache版本的问题,ehcache-core2.5.0之前的版本不会出问题,2.5.0及之后会报这个异常,我选了个ehcache-core2.4.8的好使。
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>2.4.8</version>
</dependency>
看官方的文档说明:
Versions of Ehcache before version 2.5 allowed any number of CacheManagers with the same name (same configuration resource) to exist in a JVM.
Ehcache 2.5 and higher does not allow multiple CacheManagers with the same name to exist in the same JVM. CacheManager() constructors creating non-Singleton CacheManagers can violate this rule
嚓,我也碰到这个问题了,也是shiro和hibernate3.x的缓存都用了,后来把shiro的缓存改成
<bean id="memoryCacheManager" class="org.apache.shiro.cache.MemoryConstrainedCacheManager" />
让shiro用MemoryConstrainedCacheManager内存缓存就ok了,总之变了个缓存,但还没解决冲突问题,求正解。
实际上,错误的信息就提示你了CacheManager这个实例,在jvm中只能存在一个,spring cache及hibernate及shiro的都的缓存中,都用这个实例就行了
我是同时用了spring cache 和hibernate二级缓存,也报Another unnamed CacheManager already exists in the same VM 的错。请问你知道怎么解决吗?
是不是你配置了hibernate ehcache有二级缓存?
将这个ehcache.xml 换成另外的名字:ehcache-shiro.xml 再看看哪报错。
这个写法和我写的一样啊,没什么区别。。我按照你写的改了,也是出现这个错误。。
shiroCacheManager = org.apache.shiro.cache.ehcache.EhCacheManager
你配置 cacheManager 的时候如果没有显示指定 cacheManagerConfigFile,那么shiro将使用“classpath:org/apache/shiro/cache/ehcache/ehcache.xml”;
而 hibernate 将会加载你上面配置的那个ehcache.xml。
要解决同时有两个未命名的cacheManager
重新指定shiro cacheManager.cacheManagerConfigFile 的值为你自己配置的ehcache.xml
或者
在你自己配置的ehcache.xml 的 <ehcache/> 配置节指定一个name属性即<ehcache name=“xxx”/>