2011-11-26 10 views
10

Tengo 2 webapps, una aplicación web de administrador, y la aplicación real de la aplicación en sí. Ambos comparten acceso a una tienda mysql y Ehcache se usa para almacenar en caché los detalles del usuario para evitar que la búsqueda del usuario golpee al backend por solicitud de la API REST.compartiendo Ehcache entre dos webapps

El problema que tengo es que la aplicación de administración se puede usar (rara vez agregaré) para actualizar las credenciales de los usuarios, digamos la contraseña o nombre de usuario, o cambiar algún nivel de autorización, etc. Ahora cuando esto sucede, necesito el la caché del usuario se invalidará, o se borrará, de modo que la aplicación web principal pueda llegar a la base de datos después de una búsqueda del usuario para obtener los detalles de los nuevos usuarios en la memoria caché.

Esto sucede actualmente, pero la eliminación de la memoria caché no es visible para la aplicación web principal del cliente.

¿Cómo comparto un ehcache entre dos aplicaciones web (alojadas tanto en embarcadero como en tomcat)? Actualmente estoy usando Jetty, pero planeo cambiar a Tomcat.

Estoy usando las anotaciones Spring 3, Jersey, Hibernate, MySQL y Google Ehcache.

gracias por cualquier ayuda.

Respuesta

3

Ehcache tiene un REST API que puede implementar como una aplicación web. De esta forma, tanto el administrador como la aplicación de aplicaciones podrían compartir un caché.

5

tiene varias opciones aquí:

  • Puede utilizar JGroups para unirse a sus aplicaciones en un solo grupo de notificación , y luego notificar acerca entrada de caché en particular actualización/invalidación. Entonces, al recibir dicha notificación, su aplicación web principal actualizará su entrada local de EhCache.
  • Puede agregar Terracotta caché distribuida como implementación EhCache (en realidad no cambia su código, ya que solo se conecta detrás de la API de EhCache). Luego su EhCache se distribuye, por lo que que los cambios realizados en su aplicación web de administrador son visibles para su aplicación web real . Nota:Terracotta requiere licencia comercial.
  • En lugar de usar EhCache, puede usar MemCached que permite que
    tenga un caché común entre varias aplicaciones. Por lo tanto, los cambios realizados en su aplicación web de administración son visibles para su aplicación web real. Consulte MemCached
    tutorial
Cuestiones relacionadas