Limitar las ejecuciones a una de un programa java

Tengo un programa java y necesito que solamente se pueda ejecutar una sola instancia a la vez, el programa se ha de ejecutar en un terminal server con diferentes usuarios y sesiones por lo que no me funciona lo de ocupar un puerto mediante el envío de sockets.

2 respuestas

Respuesta
1
En un terminal server con varias sesiones y usuarios tampoco te serviría el jvmstat.
La solución más rápida que le veo es utilizar un fichero que sirva como una especie de "cookie" en una ruta en la que tuvieran acceso todos los usuarios que inicien sesión en la máquina y en ella escribiría la fecha y hora de inicio de la aplicación (para que sirva como fecha de caducidad de la sesión).
Cuando se inicia la aplicación se intentaría leer ese fichero, si no existe o la fecha escrita en ella es antigua se procedería a seguir con la ejecución. En caso contrario System. exit(0). Cuando finalice la ejecución de la aplicación, borrar ese fichero.
Tendrías el peligro de que una finalización incorrecta de la apliciación dejase ese fichero sin borrar, por eso tendrías que ajustar con cuidado cuando quieres que la aplicación caduque.
.
Si la aplicación es una aplicación independiente de eclipse (SWF/JSF), la cosa cambiaría. Aquí ya podrías usar las variables del workspace (que por cierto, también se guardan en ficheros y tienen una técnica similar a la de los ficheros)
Respuesta
-1
Debes tener un dato en la base de datos que indique si alguien se encuentra conectado, de ser así. No dejas que nadie más se conecte

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas