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 :

Connaitre l'instance de la JVM


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut Connaitre l'instance de la JVM
    Hello,

    Y a-t-il un moyen d'afficher l'instance de la JVM? Sous n'importe quelle forme, c'est juste pour vérifier que ce n'est pas la même partout...

    Merci d'avance.

    A+, Patrick

  2. #2
    Membre éprouvé
    Avatar de moritan
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2005
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2005
    Messages : 687
    Par défaut
    ,non ???

    tu veux savoir ça ou?Dans ton programme java? ou savoir comment connaître quelle JVM est déclaré par défaut sur le système ?

  3. #3
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut
    En fait, j'utilise JMX en dehors de tomcat

    Je voudrais donc, dans mon code, faire un système.out.println(... pour savoir si cela fonctionne bien. J'en ferait un dans mon MBean et un dans mon programme... Si les valeurs sont différentes, c'est que c'est bon...

    Enfin je sais pas si c'est l'instance de la JVM qu'il faut afficher pour cela, je veux juste vérifier le fonctionnement de mon implémentation JMX...

    C'est compréhensible?

    Merci d'avance de comprendre mes phrases incompréhensibles

    A+

  4. #4
    Membre éprouvé
    Avatar de moritan
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2005
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2005
    Messages : 687
    Par défaut
    Je crois que j'avais rien compris, tu voudrais savoir si tu tourne dans le même process ou pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(Runtime.getRuntime().toString());
    devrait te dire si tu es dans le même process ou pas

  5. #5
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut
    Ok, alors j'ai testé et ça me donne deux fois la même chose... Mon JMX est donc faux?

    Mes deux deux fichier JMX (Hello.class et HelloMBean.class ) sont dans un jar séparé, dans tomcat/common/lib

    Voici mon code: dans mon applic:
    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
    35
    36
    37
    38
    39
    System.out.println("Start test...");
            System.out.println("out:: " + Runtime.getRuntime().toString());
     
            MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); 
     
            ObjectName name;
            try {
                name = new ObjectName("jmx:type=Hello");
                Hello mbean = new Hello();
                mbs.registerMBean(mbean, name);             
                mbs.invoke(name, "sayHello", null, null);
                mbs.unregisterMBean(name);
            } catch (MalformedObjectNameException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (NullPointerException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (InstanceAlreadyExistsException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (MBeanRegistrationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (NotCompliantMBeanException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (InstanceNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (MBeanException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ReflectionException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }    
     
            System.out.println("End test...");
    Mon MBean:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    package jmx;
    public interface HelloMBean { 
     
        public void sayHello(); 
        public int add(int x, int y); 
     
        public String getName(); 
     
        public int getCacheSize(); 
        public void setCacheSize(int size); 
    }
    et...
    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
    package jmx;
     
    public class Hello implements HelloMBean { 
        public void sayHello() { 
            System.out.println("MBean 1");
            System.out.println("in:: "+Runtime.getRuntime().toString());
            System.out.println("MBean 2");
        } 
     
        public int add(int x, int y) { 
            return x + y; 
        } 
     
        public String getName() { 
            return this.name; 
        }
     
        public int getCacheSize() { 
            return this.cacheSize; 
        } 
     
        public synchronized void setCacheSize(int size) { 
            this.cacheSize = size;
            System.out.println("Cache size now " + this.cacheSize); 
        } 
     
        private final String name = "Reginald"; 
        private int cacheSize = DEFAULT_CACHE_SIZE; 
        private static final int DEFAULT_CACHE_SIZE = 200; 
    }
    Résultat:
    Start test...
    out:: java.lang.Runtime@8a2006
    MBean 1
    in:: java.lang.Runtime@8a2006
    MBean 2
    End test...
    Les 2 process ne devraient-ils pas être différents? Mon but étant de sortir cette classe de tomcat...

    Merci, A+

  6. #6
    Membre expérimenté
    Inscrit en
    Mai 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 335
    Par défaut
    Bonsoir,
    ça n'a pas l'air si simple, mais tu peux récupérer le processID de la jvm en modifiant le démarrage:
    http://forum.java.sun.com/thread.jsp...sageID=2140023

    Le Runtime.toString() ne sert à rien, il renvoie simplement le hashcode sytème i.e. à peu près l'adresse mémoire dans la jvm. Or si elles ont démarré dans les même conditions, c'est la même adresse.

    Tu peux te créer ton propre id de JVM en te créant une classe ad-hoc (qui enregistre simplement le timeStamp au démarrage de la jvm)

    j'ai bien essayé de chercher des ids qui puissent varier d'une JVM à l'autre, il y a bien des ids de Thread (la variable eetop d'un Thread système par exemple) mais c'est pas fiable comme méthode de tout façon.

Discussions similaires

  1. Connaitre l'instance d'une classe
    Par allserv dans le forum C++
    Réponses: 8
    Dernier message: 07/11/2009, 23h10
  2. connaitre l'instance de deploiement de la jsp
    Par Canard592 dans le forum Weblogic
    Réponses: 2
    Dernier message: 05/12/2007, 16h56
  3. [JOptionPane] connaitre l'instance "grand"-parente
    Par koolway dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 21/04/2006, 10h37
  4. connaitre l'instance d'une classe
    Par Jahjouh dans le forum C++
    Réponses: 8
    Dernier message: 25/11/2005, 22h44
  5. Réponses: 12
    Dernier message: 06/10/2005, 10h05

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