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

avec Java Discussion :

quelque chose qui m'echappe avec le singleton.


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2006
    Messages : 257
    Par défaut quelque chose qui m'echappe avec le singleton.
    Voilà je cherche a implémenter un singleton pour une application j'ai donc regarder ces tutoriaux:

    1. http://christophej.developpez.com/tu...n/multithread/
    2. http://smeric.developpez.com/java/uml/singleton/

    j'ai donc ma class Singleton
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    public class Singleton {
      private static Singleton instance;
      private Singleton(String[] myChaine) throws IOException {
             vlcManager vlc = null;
     
            if(myChaine[0].matches("start")){
                try{
                    init fileinit = new init();
                    runner redWire = new runner();
                    creatPlaylist play = new creatPlaylist();
                }
                catch(IOException e){
                    System.out.print("Le disque dur n'est pas accessible.");
                }
               vlc = new vlcManager("start");
            }
            else if(myChaine[0].matches("stop")){
     
                try{
                    vlc = new vlcManager("stop");
                }
                catch(Exception e){
                }
           }
      }
     
      public static Singleton getInstance(String[] chaine) throws IOException {
        if (null == instance) {
          instance = new Singleton(chaine);
        }
        return instance;
      }
    }
    et mon main

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     public class Main {
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) throws IOException {
           Singleton singleApp = Singleton.getInstance(args);
        }
     
    }
    je lance donc mon appli argument start > tout demarre bien
    je lance l'appli argument start de nouveau et là, en mode pas à pas mon instance de singleton est "null" alors que celle ci est instancié d'où mon incompréhension.

    Que fais je mal?

    merci de votre aide

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    Citation Envoyé par turican2 Voir le message
    je lance donc mon appli argument start > tout demarre bien
    je lance l'appli argument start de nouveau et là, en mode pas à pas mon instance de singleton est "null" alors que celle ci est instancié d'où mon incompréhension.

    Que fais je mal?
    Bonjour,

    Si l'application est lancée une deuxième fois, elle est lancée dans une autre JVM.
    Donc le singleton n'est pas encore instancié. Le singleton est créé pour chaque machine virtuel.

  3. #3
    Membre éclairé Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2006
    Messages : 257
    Par défaut
    Pour lancer une application je fais

    java -jar monappli.jar start

    comment puis je en ligne de commande faire pour communiquer avec la jvm de l'instance créé par ma précédente ligne de commande?? afin de pouvoir faire un start ou stop?


    merci de ta réponse

  4. #4
    Membre émérite Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Par défaut
    Tu ne peux pas, un lancement = une JVM, et deux JVM ne peuvent pas partager leur espace mémoire.
    Un singleton n'a de sens qu'au sein de la même JVM, afin de s'assurer que la classe Singleton ne soit pas instanciée deux fois pendant une même exécution.
    Ce ne concerne pas une autre exécution. Si tu veux t'assurer que la classe n'est instanciée qu'une seule fois "en même temps", même par deux programme différents, il te faudra utiliser un autre mécanisme.

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Par défaut
    Sauf erreur de ma part c'est impossible, et tant mieux d'ailleurs, sinon pirater une appli serait un jeu d'enfant.

    Après si tu veux faire en sorte d'avoir un singleton partagé par toutes les applis, tu peux utiliser le principe de fichier .lock.

  6. #6
    Membre éclairé Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2006
    Messages : 257
    Par défaut
    une JVM est donc complètement sourde au requettage extérieur?

    je trouve ça dingue qu'une fois instanciée je ne puis ce plus communiquer avec !!!

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Si tu peux communiquer entre deux JVM, via socket par exemple.

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ben si
    comme n'importe quelle application, tu peux lui parler

    - par des sockets réseau si elle en a
    - par des ficheir si elle en surveille
    - par stdin si tu garde le pipe ouvert

  9. #9
    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,



    Si tu nous expliquais ce que tu veux faire (je ne comprend pas l'intérêt du Singleton dans ton exemple).

    a++

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

Discussions similaires

  1. Afficher quelque chose qui suive l'ascenseur
    Par Zebulon777 dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 28/01/2015, 08h17
  2. ToolTip ou quelque chose qui ressemble
    Par tifsa dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 09/12/2014, 16h18
  3. unittest : tester quelque chose qui marche
    Par rambc dans le forum Général Python
    Réponses: 1
    Dernier message: 25/10/2010, 00h07
  4. Réponses: 22
    Dernier message: 27/10/2009, 10h05
  5. Quelque chose ne va pas avec Flash
    Par totoz dans le forum Flash
    Réponses: 2
    Dernier message: 03/03/2009, 18h46

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