2012-01-12 14 views
17

Tengo un proyecto de servicios y un proyecto web. Necesito tener eh-cache en ambos proyectos.¿Es posible usar múltiples ehcache.xml (en diferentes proyectos, misma guerra)?

La idea es que si el proyecto de servicio se actualiza, sus cambios relacionados con la memoria caché (como las claves y las reglas de invalidación) también estarán disponibles, mientras que no se realizarán cambios en el proyecto web. Al ser tan independiente, el proyecto de servicio también se puede usar con otros proyectos sin que ellos siquiera conozcan eh-cache.

En este punto, mi proyecto web también utiliza eh-caché para sus propios fines. No tengo mucha experiencia con eh-cache y me temo que los dos proyectos podrían entrar en conflicto cuando se desplieguen juntos. Tampoco encontré información relevante en el sitio eh-cache.

¿Me puede proporcionar alguna información de cómo configurar mejor los dos proyectos, de modo que pueda alcanzar los requisitos anteriores?


Editar:

estoy usando la primavera, por lo tanto, yo preferiría usarlo para mis gerentes de caché.

Estoy utilizando el siguiente en el context.xml para cada frasco con ehcache, por ejemplo, para frasco 1 Tengo:

<ehcache:annotation-driven cache-manager="ehCacheManager1" /> 

<bean id="ehCacheManager1" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> 
    <property name="configLocation" value="classpath:ehcache-1.xml" /> 
</bean> 

y para el tarro 2 Tengo

<ehcache:annotation-driven cache-manager="ehCacheManager2" /> 

<bean id="ehCacheManager2" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> 
    <property name="configLocation" value="classpath:ehcache-2.xml" /> 
</bean> 

Así , ambas memorias caché estarán funcionando? Me temo que el ehcache:annotation-driven quedará anulado por el último contexto de lectura y solo una caché estará operativa. ¿Estoy equivocado o me estoy perdiendo algo?

+0

¿Alguna vez este trabajo? La respuesta a [Uso de la anotación de caché de Spring en varios módulos] (http://stackoverflow.com/q/8658789/16487) (y mi propia prueba) parece indicar que no es así. –

+0

@ C.Ross, en realidad tenía fusionar los XMLs Ehcache en uno y utilizar el archivo fusionado. Cambiamos el proveedor de almacenamiento en caché a Hazelcast lo suficientemente pronto para que ya no haya necesidad de trabajar con ehcache. Lo siento si no es útil –

+1

Simplemente confundido. Generalmente asumo que la respuesta aceptada * funciona *, que no aparece aquí. –

Respuesta

3

La propiedad configurationResourceName se utiliza para especificar la ubicación del archivo de configuración de ehcache. El recurso se busca en la raíz de la ruta de clases. Se usa para admitir múltiples CacheManagers en la misma máquina virtual.

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

Bien, pero quiero tener más de un archivo de configuración. ¿Funcionará esto para mi caso? Quiero decir, una configuración para los servicios, y otra para el proyecto web. –

+1

Al crear CasheManager, puede pasar el nombre del archivo de configuración al constructor CacheManager manager = new CacheManager ("src/config/ehcache.xml"); –

+0

Aclaré mi pregunta porque estaba teniendo algunas dificultades.Estaría agradecido si responde –

1

si utiliza diferentes caché para diferentes WAR y desea evitar colisiones, ir a echcache.xml de cada GUERRA y definir diferentes valores multicastGroupPort bajo el elemento cacheManagerPeerProviderFactory. también desactiva la distribución.

¡Buena suerte!

+0

Aclaré mi pregunta porque estaba teniendo algunas dificultades. Estaría agradecido si respondes –

2

Trate de denominación diferente en cacheManagers 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"> 
Cuestiones relacionadas