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

Java Discussion :

Suivi du processus


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 43
    Par défaut Suivi du processus
    Bonsoir,

    Je suis entrain de mettre à jour un gros projet et il y a un problème que je n'arrive pas à résoudre proprement.

    Certaines exécutions de mon application sont assez longues (plusieurs heures), j'ai mis en place une interface web pour pouvoir suivre chaque exécutions qui à lieu sur le serveur (linux). Je peux tracer la progression via une base de données mongo.

    Je voudrais maintenant ajouter la possibilité de stopper une exécution depuis l'interface web (c'est à dire envoyer un "SIGTERM" au processus). Mais je ne trouve pas de solution pour faire ca proprement. Il existe quelques astuces/hacks qui permettent de récupérer le PID du processus courant mais ce n'est pas terrible.

    La seule idée que j'ai eu est de forcer le processus à se nommer d'une certaine façon (avec un hash par exemple), mais je ne suis pas sur que ce soit une bonne idée, ni même si c'est réalisable.

    Avec vous des idées ?

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Le processus parvient à envoyer des données vers une page Web. Pourquoi ne pas refaire le chemin inverse, de la page web vers le processus ?

    Tu ne dis pas grand chose sur le fonctionnement, voici ce que j'en ai compris : le processus est en lien avec la base de données et ajoute/modifie/supprime des informations. Le site Web lit les informations depuis la base de données.
    Il "suffit" de faire le chemin inverse : le site Web active un flag dans une table de la base de données. Le processus lit de temps en temps ce flag et réagit en fonction de sa valeur.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 43
    Par défaut
    le processus est en lien avec la base de données et ajoute/modifie/supprime des informations. Le site Web lit les informations depuis la base de données
    Tu as bien compris

    le site Web active un flag dans une table de la base de données. Le processus lit de temps en temps ce flag et réagit en fonction de sa valeur
    C'est effectivement une idée à laquelle je n'avais pas pensé.
    Ça peut fonctionner dans la plus part des cas, mais dans la situation où l'application plante ou entre dans une situation anormale j'aimerai quelque chose de plus radicale. Avec cette solution je suis dépendant de la bonne connexion à la BDD. Dans l'idéale j'aimerais envoyer un signale au processus.

  4. #4
    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
    Je suppose que tu veux tuer depuis une application maitre qui est celle qui a généré les processus? Dans ce cas, tu as les méthode destroy() et destroyForcibly() sur la classe Process qui t'es retourné par le exec.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     ProcessBuilder pb =
       new ProcessBuilder("application", "qui", "va planter");
     File log = new File("log.txt");
     pb.redirectErrorStream(true);
     pb.redirectOutput(Redirect.appendTo(log));
     Process p = pb.start();
    .....
     
    p.destroyForcibly()

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 43
    Par défaut
    Je veux effectivement tuer le processus maitre, mais je ne suis pas sur de comprendre ce que tu suggères. Il faut que que je sois capable de lancer l’arrêt depuis l’extérieur de l'application.

  6. #6
    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
    C'est à l'application java qui lance le process problématique de se charger de le tuer, via l'instance de Process. Si tes processus sont lancé autrement, alors il faudra recourir à des systèmes spécifiques à l'os.

Discussions similaires

  1. [XSLT 1.0] [Docbook] Rechercher une section suivie d'un processus d'instruction
    Par romain.z dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 04/01/2012, 11h45
  2. Logiciel de définition de processus et suivi de fabrication
    Par AurélienB dans le forum Forum général ERP
    Réponses: 1
    Dernier message: 26/10/2011, 11h20
  3. Suivi consommation mémoire d'un processus
    Par lamorkytu dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 04/12/2009, 22h28
  4. 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