在不同的项目中,同一个war包是否可以使用多个ehcache.xml文件?

19
我有一个服务项目和一个Web项目,我需要在两个项目中都使用ehcache缓存。这样,如果服务项目被更新,与缓存相关的更改(如键和失效规则)也将可用,而Web项目不会发生任何更改。由于如此独立,服务项目甚至可以与另一个不知道eh-cache的项目一起使用。
目前,我的Web项目也为自己的目的使用eh-cache。由于对eh-cache经验不多,我担心两个项目在部署在一起时可能会发生冲突。我在eh-cache网站上也没有找到相关信息。
请问您能否提供一些信息来最好地配置这两个项目,以便实现上述要求?
编辑:
我正在使用Spring,因此我希望将其用于我的缓存管理器。
例如,我在每个具有ehcache的jar的context.xml中使用以下内容来进行配置:对于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文件,我有以下内容

<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会被最后读取的上下文覆盖,只有一个缓存会起作用。我错了吗,或者漏掉了什么?


你曾经让它工作过吗?在多个模块中使用Spring缓存注释的答案(以及我的测试)似乎表明它不起作用。 - C. Ross
@C.Ross,实际上我不得不将ehcache xml合并为一个文件并使用合并后的文件。我们很快就将缓存提供程序更改为hazelcast,因此不再需要使用ehcache。如果没有帮到你,我很抱歉。 - Ivaylo Slavov
1
有些困惑。通常我会认为被接受的答案是“可行的”,但在这里它并不起作用。 - C. Ross
3个回答

3

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

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

好的,但我想要有多个配置文件。这对我的情况适用吗?我的意思是 - 一个配置文件用于服务,另一个用于Web项目。 - Ivaylo Slavov
1
当您创建CacheManager时,可以将配置文件名传递给构造函数 CacheManager manager = new CacheManager("src/config/ehcache.xml"); - Vadim Gulyakin
我澄清了我的问题,因为我遇到了一些困难。如果您能回复,我将不胜感激。 - Ivaylo Slavov
我刚刚测试了一下,问题不在于创建两个缓存管理器,这个没问题。问题在于Spring不知道在哪个管理器中查找哪些方法! - C. Ross

2
尝试在ehcache.xml中为两个缓存管理器命名不同的名称。
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    name="ehCacheManager1">


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

1
如果您为不同的WAR使用不同的缓存,并且想要防止冲突,请转到每个WAR的echcache.xml并在cacheManagerPeerProviderFactory元素下定义不同的multicastGroupPort值。同时禁用分发。
祝好运!

我澄清了我的问题,因为我遇到了一些困难。如果你能回复的话,我会非常感激。 - Ivaylo Slavov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接