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

API standards et tierces Java Discussion :

Processus de la JVM


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2006
    Messages : 27
    Par défaut Processus de la JVM
    Bonjour à tous,

    depuis quelques temps je recherche un moyen fiable d'éviter de lancer plusieurs mon programme Java. Je voudrais éviter les solutions de type ServerSocket et verrouillage de fichier, qui ne sont pas des solutions fiables de mon point de vue (au niveau plantage, disponiblité de ports, performance ...)

    Du coup, je suis me plonger dans les méandres de Java et j'ai trouvé que dans le JDK, il existe une commande "jps" qui permet de lister les processus dans la JVM. Malheureusement, elle n'est qu'expérimental, et du coup n'est pas présente dans la JRE.

    J'ai remarqué une autre chose, c'est que JConsole utilise JConsole.jar et Tools.jar dans le répertoire lib de la JDK. Là, on peut essaiement avoir la liste des processus, et j'avais même fait une portion de code qui est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        public static Boolean isPresent(Class cl) {
            Integer count = 0;
                try {
                    for(Iterator<LocalVirtualMachine> lvm = localVirtualMachine.getAllVirtualMachines().values().iterator();lvm.hasNext(); ){
                        if(lvm.next().displayName().equalsIgnoreCase(cl.getName())){
                        count++;
                        }
                    }
                } catch (Exception e) {
                    count = 0;
                }
            return (count > 1);
        }
    Malheureusement pour moi, encore une fois, ces packages ne sont pas présents dans la JVM, et sont plutôt gros pour être rajouter dans un projet dans le cadre de cette unique fonctionnalité (près de 12 MO). De plus, il me semble que c'est là aussi en expérimental.

    Du coup ma question est : existe-t-il en Java un moyen de connaître les processus tournant sur la JVM ? Si oui comment ? Peut-on se passer de JNI ?

    Je vous remercie d'avance de vos réponses

  2. #2
    Membre Expert
    Avatar de alexismp
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 503
    Par défaut
    javax.jnlp.SingleInstanceService est une solution Java Web Start relativement commune au problème.

Discussions similaires

  1. Processus paralleles
    Par Lyes dans le forum Threads & Processus
    Réponses: 4
    Dernier message: 11/02/2003, 13h04
  2. 1 variable pour 2 processus
    Par kacedda dans le forum POSIX
    Réponses: 2
    Dernier message: 11/02/2003, 06h32
  3. probleme avec les processus
    Par saidi dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 05/02/2003, 00h18
  4. [VB6] [Système] Tuer un processus courant
    Par mdoyer dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 22/10/2002, 14h47
  5. Réponses: 2
    Dernier message: 04/10/2002, 09h13

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