我使用ehcache为我的二级缓存运行我的Grails应用程序,它可以工作。我安装了ehcache
插件+ cache
插件,然后却没有。我尝试了几乎所有来自互联网的解决方案,但没有找到我持续获得Another unnamed CacheManager already exists in the same VM
的解决方案。
其中一个可能的解决方案是在p:shared=true
中设置EhCacheManagerFactoryBean
,如果我使用旧的插件“grails的springcache插件”,这是有效的,但是使用新的插件,他们使用了这个的修改版本经理和共享的财产不可用。
我尝试定义一个新的ehcache.xml
文件,但仍然无法为此缓存管理器添加新名称。
我尝试更改cache.provider
内的DataSource.groovy
课程,以便彼此使用EhCacheProvider
,例如Singleton
。
毋庸置疑,我测试过在不同的地方使用DSL设置不同的名称,但仍然没有运气。
最后我使用旧插件进行了不推荐使用的spring cache。有人可以帮忙吗?
我正在使用Grails 2.0.3和ehcache-core:2.5.3
。
答案 0 :(得分:7)
在hibernate
的{{1}}部分,确保您的DataSource.groovy
是最新的:
cache.provider.class
我遇到了同样的问题,因为我的hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = true
cache.region.factory_class = 'grails.plugin.cache.ehcache.hibernate.BeanEhcacheRegionFactory' // For Hibernate before 4.0
cache.region.factory_class = 'grails.plugin.cache.ehcache.hibernate.BeanEhcacheRegionFactory4' // For Hibernate before 4.0 and higher
}
已过时:cache.region.factory_class
。
请参阅http://grails-plugins.github.io/grails-cache-ehcache/guide/usage.html
答案 1 :(得分:5)
对于Grails 2.5.x出现此错误的用户,只需将其添加到Config.groovy
:
beans {
cacheManager {
shared = true
}
}
这解决了我的问题。
来源:https://github.com/grails/grails-core/releases/tag/v2.5.0
答案 2 :(得分:0)
尝试使用缓存& cache-ehcache 插件,它对我有用,但有一些限制。但对于2ndlevel Cache,它可以正常工作
答案 3 :(得分:0)
对于到达此处的人来说,获得与OP相同的错误可能会认为该错误可能是由运行时更新域类(热代码交换)造成的,这在Grails的alle版本中效果不佳。
我使用Grails 2.5.4来解决这个问题,但是应用程序重启按钮是唯一可以解决的问题。