Tengo una aplicación JEE6 que se ejecuta en un clúster Glassfish 3.1.2. Un @Singleton Bean contiene algún tipo de caché (readolny). Un usuario puede presionar un botón en la GUI para actualizar el caché con contenido (actualizado) de la base de datos.Cómo notificar a todos (el mismo) beans Singleton en un cluster Glassfish 3.1?
Esto funciona bien en un entorno sin clústeres, pero ahora tenemos que cambiar a un clúster.
Así que estoy enfrentando el problema, que cuando un usuario presiona ese botón de actualización, solo se actualiza el Singleton de caché de su nodo de servidor. Mi pregunta es, ¿cuál sería la forma más fácil de hacer que los otros Singleton (en los otros nodos) también actualicen los datos?
Conozco la pregunta Singleton in Cluster environment, pero mi pregunta es específica para Glassfish (porque espero que haya alguna versión en apoyo), la otra está relacionada con "Websphere". Y mi pregunta es sobre JEE6, la otra es más antigua que JEE6.
Una cosa que es posible que desee publicar o pensar es 'qué tan rápido' necesita la actualización? alias, ¿cuál es su aislamiento de transacción requerido? ¿Necesita que el cambio se refleje en los singleton antes de que manejen cualquier otra solicitud? ¿O pueden procesar algunas llamadas y mientras reciban la actualización en unos pocos segundos? –
@exabrial: unos segundos (1..5) están bien en mi escenario. – Ralph
La mejor respuesta es el pub/sub con JMS, que Sam describe a continuación. Haz que un MDB se inyecte con una referencia al Singleton. El MDB debe suscribirse al tema. Haga que actualice el singleton cuando recibe un mensaje. –