Hola a todos.
Tengo que diseñar un proceso java que se ejecuta en un cluster de weblogic. El asunto es que debo controlar que dicho proceso no se ejecute dos veces al mismo tiempo independiente de la máquina en la que se esté. Ejecutando.
He hablado con compañeros y me han comentado que el cluster no interpreta el patrón singleton y me han dado dos opciones.
1. Controlarlo por bbdd
2. Generando un fichero serializado en un disco NFS.
Ambas opciones son sencillas de implementar pero el problema es que el proceso debe ejecutarse en cuestión de milisegundos y ambas soluciones son relativamente lentas.
Conocéis la forma de implementar un patrón singleton que un cluster de weblogic pueda entender?
Se os ocurre algún otro método más eficiente que los que os he citado?
Gracias y saludos.
Nosotros lo hacemos con hazelcast, que provee locks distribuidos. Los locks implementan la interface lock de java, así que podes usar el método lock (bloqueante) o tryLock (no bloqueante).
En mi opinión es mejor que las alternativas que mencionaste. Tene en cuenta que esos locks no sirven a nivel JVM, si dos threads llaman al método lock no los va a bloquear (no es problema si usas un singleton).
Saludos
Saludos
--
www.JavaSOS.com
---
Has recibido este mensaje porque estás suscrito al grupo "JavaSOS" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a javasos+u...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/javasos.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
Creo que Apache Zookeeper sirve para el problema que tenes.
Saludos.
--
www.JavaSOS.com
---
Has recibido este mensaje porque estás suscrito al grupo "JavaSOS" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a javasos+u...@googlegroups.com.
Visita este grupo en http://groups.google.com/group/javasos.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.