Bonjour,
Nous developpons une famille d'applications deployée sur plusieurs postes d'un meme reseau.
Une de ces applications ne doit pas être lancée plus d'une fois simultanément.
L'algo actuel garantissant cette unicité est :
Qd l'application demarre, elle regarde si elle trouve en base de données (unique pour tous les postes) des traces de vie récentes de l'application.
* si oui, elle refuse de se lancer (message utilisateur)
* si non, se lance normallement et ecrit des traces de vie regulierement en BD
Cet algo n'est pas robuste puisque si 2 instances de l'application demarrent exactement en meme temps, elle vont pouvoir toutes les 2 s'executer normalement.
J'avais pensé passer par une application "moniteur" s'executant sur la partie serveur a qui on pourrait demander l'autorisation de se lancer. Mais nos serveurs etant dupliqués (un serveur de secours), le developpement de ce "moniteur" n'est pas triviale...
Avez-vous d'autres idées pour garantir l'instance unique de mon programme ?
Par exemple, est-il possible de reserver une ressource reseau commune a plusieurs poste ? (en s'inspirant de l'ouverture d'une socket en local qui peut permettre de garantir une seule instance d'une application sur un meme poste)
Si vous connaissez un meilleur endroit pour poster cette question, n'hesitez pas non plus
Merci d'avance
Partager