IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Application unique ?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 81
    Par défaut Application unique ?
    Bonjour,

    Comment n'autoriser qu'une seule session/un seul lancement de mon apllication java ?

    a7aa7a

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Comment avoir une seule instance de mon application qui tourne ?


    Sinon, lorsque l'application est déployé via Java Web Start, il est possible d'utiliser un service conçu spécialement pour cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // Utilisation du service :
    SingleInstanceService singleInstanceService = 
    	(SingleInstanceService)ServiceManager.lookup("javax.jnlp.SingleInstanceService");
     
    // Ajout d'un listener qui sera appelé pour chaque nouvelle instance :
    singleInstanceService.addSingleInstanceListener( new SingleInstanceListener() {
    	public void newActivation(String[] params) {
    		// 'params' contient les paramètres passé à la nouvelle instance
    	}
    });
    Liens :

    a++

  3. #3
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 321
    Par défaut
    Le probleme que tu te pose possde une solution connue sous le nom de Singleton (voir le design pattern du meme nom). En plus de la solution présentée, tu peux donc appliquer ce principe : en gros un constructeur privé ou protected pour les sous classes et une méthode statique qui te renvoie une unique instance de ton application

  4. #4
    Membre chevronné Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Par défaut
    Son problème n'est pas d'avoir une seule instance d'une classe dans une appli, mais d'avoir une seule appli lancée.

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par leyee
    Le probleme que tu te pose possde une solution connue sous le nom de Singleton (voir le design pattern du meme nom).
    Ce n'est pas tout à fait cela : le Singleton permet d'avoir une seul instance d'une classe par application.

    Ici il souhaite avoir une seule application sur le système

    a++

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 81
    Par défaut
    adiGuba m'a fournie une bonne solution.
    Mais ceci m'intéresse.:

    Citation Envoyé par leyee
    En plus de la solution présentée, tu peux donc appliquer ce principe : en gros un constructeur privé ou protected pour les sous classes et une méthode statique qui te renvoie une unique instance de ton application
    Peut tu m'expliquer cela plus simplement ? (je ne suis qu'un débutant )

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 230

  8. #8
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 321
    Par défaut
    Le pattern (solution à un probleme récurrent en POO) Singleton est tres simple : il te permet de controler le nombre d'instances d'une classe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    class Singleton
    {
       //Unique instance de la classe
       private static Singleton uniqueInstance;
     
       //Le constructeur est privé, il ne peut etre utilisé pour instancier une classe
       private Singleton()
       {...}
     
       //Methode publique qui permet d'obtenir l'unique instance de la classe Singleton
       public static getInstance()
       {
          if (uniqueInstance == null)
             uniqueInstance = new Singleton();
          return uniqueInstance;
       }
     
    }
    Par extension, tu peut creer des classes dont le nombre d'instances possede un nombre limité d'instances (par forcement une seule)

  9. #9
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Deux solutions au problème (initial):

    - le verouillage d'un fichier: quand tu lances ton application, celle-ci verouille un fichier spécifique du disque dur. Si tu tentes de lancer une seconde fois ton application, elle refusera en détectant que le fichier est verouillé. Bien évidemment, il faut penser à le déverrouiller quand on quitte l'application.

    - la solution plus "pro", à mon avis, est de réserver un socket libre quand tu lances ton application. Si une deuxième application se lance, elle vérifie ce socket, et si il est déjà réservé par la première instance de ton application, elle refuse de te lancer. Toujours pareil: on libère le socket en fin de programme.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Instance d'application unique (mais ..)
    Par fab9292 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 23/12/2013, 17h40
  2. Bug d'une application uniquement sous Samsung S4
    Par slvn dans le forum Android
    Réponses: 1
    Dernier message: 25/11/2013, 08h07
  3. Réponses: 1
    Dernier message: 15/07/2013, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo