Можно ли использовать несколько ehcache.xml (в разных проектах одна и та же война)? - PullRequest
17 голосов
/ 12 января 2012

У меня есть проект услуг и веб-проект.Мне нужно иметь eh-cache в обоих проектах.

Идея состоит в том, что, если сервисный проект будет обновлен, его изменения, связанные с кэшем (например, ключи и правила аннулирования), также будут доступны, пока не будут внесены измененияк веб-проекту.Будучи настолько независимым, сервисный проект также можно использовать с другими проектами, даже не зная о eh-cache.

На этом этапе мой веб-проект также использует eh-cache для своих собственных целей.У меня нет большого опыта работы с eh-cache, и я боюсь, что эти два проекта могут столкнуться при совместном развертывании.Я также не нашел соответствующей информации на сайте eh-cache.

Можете ли вы дать мне некоторую информацию о том, как наилучшим образом настроить два проекта, чтобы я мог выполнить вышеуказанные требования?


Edit:

Я использую Spring, поэтому я предпочитаю использовать его для своих менеджеров кэша.

Я использую следующее в context.xml для каждого jar с ehcache, напримердля 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 ]

3 голосов
/ 12 января 2012

Свойство configurationResourceName используется для указания местоположения файла конфигурации ehcache. Поиск ресурса выполняется в корне пути к классам. Он используется для поддержки нескольких CacheManager в одной виртуальной машине.

net.sf.ehcache.configurationResourceName=/name_of_ehcache.xml
2 голосов
/ 19 сентября 2014

Попробуйте по-разному назвать оба cacheManager в 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 голос
/ 12 января 2012

если вы используете разные кэши для разных WAR и хотите предотвратить коллизии, перейдите в echcache.xml каждого WAR и определите разные значения multicastGroupPort в элементе cacheManagerPeerProviderFactory.также отключить рассылку.

Удачи!

...