具有ehcache
配置:
<ehcache>
<terracottaConfig url="192.168.1.4:9510"/>
<defaultCache
maxElementsInMemory="50"
eternal="false"
timeToIdleSeconds="20"
timeToLiveSeconds="20"
overflowToDisk="false"
diskPersistent="false"
memoryStoreEvictionPolicy="LRU"
/>
<cache name="foo"
maxElementsInMemory="50000"
eternal="true">
<terracotta />
</cache>
</ehcache>
它不起作用,应用程序只是没有连接到terracotta
服务器,但是在启动时会抛出这样的异常:
net.sf.ehcache.ObjectExistsException: Cache foo already exists.
当我启用ehcache
调试日志时,我没有看到我的ehcache.xml
被加载到某个地方(通过另一个ehcache.xml
,它位于加载某个jar文件的类路径中)。可能有什么问题?
我的grails
版本为2.1.1
,ehcache.xml
位于grails-app/conf
目录。
更新1
还有一个解释。名为foo
的缓存在ehcache.xml
中使用,在代码中用作referece(实际上在Apache Camel路由中使用('cache:// foo')。当我在代码中重命名foo
时bar
(例如,路径现在看起来像('cache:// bar')它会抛出Cache bar already exists
的异常。所以,异常不是来自ehcache.xml
配置文件,而是来自代码引用按名称缓存。任何建议都将受到高度赞赏。
更新2
似乎引发了异常,因为在引用cache://foo
的camel路由中有2个位置。当达到第二个引用时,它会抛出该异常。所以主要的问题是,为什么应用程序在启动时看不到ehcache.xml
?它应该热身并准备cache://foo
以备将来使用。
更新3
它显然在grails 1.3.7
之前有效。现在它不适用于grails 2.1.1
答案 0 :(得分:0)
当我使用-noreloading选项运行grails时,它运行良好。必须是一些类路径问题。