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