是否可以使用多个ehcache.xml(在不同的项目中,同样的战争)?

时间:2012-01-12 12:20:16

标签: java configuration-files war ehcache web-deployment

我有一个服务项目和一个Web项目。我需要在两个项目中都有eh-cache。

这个想法是,如果服务项目更新,它的缓存相关更改(如密钥和失效规则)也将可用,而不会对Web项目进行任何更改。如此独立,服务项目也可以与其他项目一起使用,甚至不知道eh-cache。

此时,我的Web项目也将eh-cache用于自己的目的。我对eh-cache不太熟悉,我担心这两个项目在部署时可能会发生冲突。我也没有在eh-cache网站上找到相关信息。

您能否提供一些如何最好地配置这两个项目的信息,以便我能达到上述要求?


编辑:

我正在使用Spring,因此我更愿意将它用于我的缓存管理器。

我在context.xml中为使用ehcache的每个jar使用以下内容,例如for jar 1我有:

<ehcache:annotation-driven cache-manager="ehCacheManager1" />

<bean id="ehCacheManager1" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
    <property name="configLocation" value="classpath:ehcache-1.xml" />
</bean>

和jar 2我有

<ehcache:annotation-driven cache-manager="ehCacheManager2" />

<bean id="ehCacheManager2" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
    <property name="configLocation" value="classpath:ehcache-2.xml" />
</bean>

那么,这两个缓存都会起作用吗?我担心ehcache:annotation-driven会被上次读取的上下文覆盖,只有一个缓存可以运行。我错了,还是错过了什么?

3 个答案:

答案 0 :(得分:3)

configurationResourceName属性用于指定ehcache配置文件的位置。在类路径的根目录中搜索资源。它用于支持同一VM中的多个CacheManager。

net.sf.ehcache.configurationResourceName=/name_of_ehcache.xml

答案 1 :(得分:2)

尝试在ehcache.xml

中以不同方式命名两个cacheManagers
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    name="ehCacheManager1">


<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    name="ehCacheManager2">

答案 2 :(得分:1)

如果对不同的WAR使用不同的缓存并且想要防止冲突,请转到每个WAR的echcache.xml并在cacheManagerPeerProviderFactory元素下定义不同的multicastGroupPort值。也禁用发行。

祝你好运!