Подтвердить что ты не робот

Можно ли использовать несколько ehcache.xml(в разных проектах, в той же войне)?

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

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

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

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


Edit:

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

Я использую следующее в context.xml для каждой банки с 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 будет переопределен последним контекстом чтения, и будет работать только один кеш. Я ошибаюсь или что-то не хватает?

4b9b3361

Ответ 1

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

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

Ответ 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">

Ответ 3

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

Удачи!