Instance unique d'un programme (sans socket ni fichier)

Soyez le premier à donner votre avis sur cette source.

Vue 6 302 fois - Téléchargée 283 fois

Description

Salut à tous,

voici l'idée : une classe nommée <InstanceUnique> essaie de renommer le jar <Application.jar> en app_tmp.jar,

si elle réussit
alors elle restaure l'ancien nom
lance l'application
sinon
l'application est déjà lancée : afficher un message

Source / Exemple :


/*

  • Classe: InstanceUnique
  • Auteur: Chatbour
  • /
import java.io.*; import java.awt.Desktop; import javax.swing.JOptionPane; public class InstanceUnique { // nom du fichier jar private String nomJar = "application.jar"; // nom temporaire private String nomTmp = "app_tmp.jar"; public InstanceUnique() { try { File leJar = new File(nomJar); if(leJar.renameTo(new File(nomTmp)) == true) { // On est le premier à instancier l'application new File(nomTmp).renameTo(new File(nomJar)); Desktop.getDesktop().open(leJar); } else { // Sinon afficher un message JOptionPane.showMessageDialog(null, "L'application est déjà lancée !"); } } catch(IOException e) { System.exit(-1); } } public static void main(String[] args) { new InstanceUnique(); } }

Conclusion :


j'attends vos avis les experts, je pense que cette méthode est moins risquée que la méthode de fichier temporaire et plus simple que la méthode des sockets.. Non ?

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

vecchio56
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7 -
Application.jar n'est-il pas un fichier?
Chatbour
Messages postés
86
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
12 juillet 2009
-
Oui bien sûr, mais ici ce n'est pas le même principe de la solution utilisant un fichier temporaire ou l'application crée un fichier en se lançant, et le supprime en quittant..
vecchio56
Messages postés
6539
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7 -
Tu ne peux donc pas dire que c'est une solution sans fichier. J'ai regardé l'autre solution dont tu parles, et je pense qu'elle est plus sûre, car avec ta méthode on peut renommer le fichier à la main et ainsi lancer deux instances.
Par contre si le processus verrouille le fichier, on ne peut pas le renommer sans tuer le processus.
mahlaoui
Messages postés
30
Date d'inscription
lundi 10 décembre 2007
Statut
Membre
Dernière intervention
13 octobre 2008
-
Many Thanks
mehdi7604
Messages postés
120
Date d'inscription
jeudi 11 mai 2006
Statut
Membre
Dernière intervention
6 mars 2015
-
Quand on parle d'instance unique on parle du Design Pattern Singleton non ? donc la protection sera au niveau de la classe qu'on veut lancer elle meme ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.