【问题标题】:Is it possible to use multiple ehcache.xml (in different projects, same war)?是否可以使用多个 ehcache.xml (在不同的项目中,相同的战争)?
【发布时间】:2012-02-08 17:41:12
【问题描述】:

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

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

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

你能告诉我一些如何最好地配置这两个项目的信息,以便我可以达到上述要求吗?


编辑:

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

我在 context.xml 中为每个带有 ehcache 的 jar 使用以下内容,例如 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 会被上次读取的上下文覆盖,并且只有一个缓存可以运行。是我错了,还是遗漏了什么?

【问题讨论】:

  • 你有没有得到这个工作? Using Spring cache annotation in multiple modules(和我自己的测试)上的答案似乎表明它没有。
  • @C.Ross,实际上我必须将 ehcache xml 合并为一个并使用合并的文件。我们很快将缓存提供程序更改为 hazelcast,因此不再需要使用 ehcache。如果没有帮助,请见谅
  • 只是困惑。我通常假设接受的答案有效,但它在这里没有。

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


【解决方案1】:

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

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

【讨论】:

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

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

祝你好运!

【讨论】:

  • 我澄清了我的问题,因为我遇到了一些困难。如果您能回复我将不胜感激
【解决方案3】:

尝试在 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">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 2013-07-20
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多