我想在两个或更多tomcats(7.0)中部署我的应用程序(Grails 1.3.5)。我设法做到没有问题,但现在我想使用RMI配置我的缓存(ehcache)。
到目前为止我所做的是创建两个ehcache.xml并将它们保存在每个tomcat的lib文件夹中。在ehcache文件中,我声明了3个缓存:
defaultCache
org.hibernate.cache.StandardQueryCache
org.hibernate.cache.UpdateTimestampsCache
每个缓存都有一个RMI复制器。这很好但我的问题是我是否还必须在ehcache.xml
文件中声明我的每个Grails域类。如果我这样做,我会有两次相同的声明:一个在ehcache.xml
,第二个在类本身(我已经在类中设置了cache=true
);
class Book {
static mapping = {
...
cache true
}
}
答案 0 :(得分:1)
是的,您需要在这两个地方进行设置。 ehcache.xml
值配置缓存设置,但除非您为每个域类(以及可选的映射集合)启用缓存,否则它们将被忽略。
通常,您不会在defaultCache
块中使用相同的设置,因为每个域类通常需要不同的设置,例如
<cache name='com.yourapp.SomeDomainClass'
maxElementsInMemory='1000'
eternal='true'
maxElementsOnDisk='0'>
<cacheEventListenerFactory
class='net.sf.ehcache.distribution.RMICacheReplicatorFactory'
properties='replicateAsynchronously=false
replicatePutsViaCopy=false,
replicateUpdatesViaCopy=false,
replicatePuts=true,
replicateUpdates=true,
replicateRemovals=true'
/>
</cache>