我有一个服务项目和一个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
会被上次读取的上下文覆盖,只有一个缓存可以运行。我错了,还是错过了什么?
答案 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值。也禁用发行。
祝你好运!