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 :

fermer proprement une appli


Sujet :

avec Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 342
    Points : 123
    Points
    123
    Par défaut fermer proprement une appli
    Bonjour,


    J'ai créé une application, qui lance un thread et qui tourne en permanence et manipule des base de donnée. Mon appli n'a pas d'interface graphique.
    J'ai pas la moindre idée comment je peux fermer mon application vu qu'il n'y a pas UI, d'autant que j'ai des traitement à faire lors de sa fermeture.

    J'ai essayer de killer mon appli, et d'implémenter la fonction finalize(), mais celle ci n'est pas appeler lors d'un kill.
    J'ai essayer d'attendre une saisie du clavier de l'utilisateur dans la console pour fermer l'appli, mais mon thread envoyant plein de trace dans la console.
    Mon InputStreamReader est très vite noyé dans les traces.
    Comment puis je faire ?
    merci davance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Regarde du coté des signaux, notamment SIGTERM ou SIGINT (j'avoue ne plus me souvenir de la différence, ça fait 2 ans que je n'ai pas du tout touché a ce genre de choses). Tu devrais pouvoir intercepter au niveau de ton application un certain signal, et effectuer une terminaison propre a cette occasion.

    Pour résumer, il te "suffira" de créer un lanceur/stoppeur qui enverra le signal necessaire a ton application pour l'arrêter, celle-ci interceptera alors ce signal, comprendra qu'elle doit s'arrêter et fera alors ce qu'elle devra faire. Bon courage

    PierreAd


    PS: il s'agit d'un procédé utilise sous Unix a la base, mais je pense que le même principe existe sous Windows et doit être utilisable aussi... Ceci étant je n'en suis pas du tout certain, si d'autres membres peuvent confirmer ou infirmer...

    PPS : si le coup des signaux n'est pas possible, peut-être peux-tu mettre en place le même principe au moyen de sockets ? Ton thread écoute sur un socket qui lui servirait a recevoir des commandes : il attend alors la réception d'un message de terminaison qui lui serait envoyé par un lanceur/stoppeur...
    Dernière modification par Invité ; 07/10/2009 à 07h26.

  3. #3
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Je ne sais pas ce que ça vaux en mode console, mais tu devrais essayer la méthode Runtime.addShutdownHook(Thread t).

    A mon avis, ça devrait réagir à la fermeture de la console.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 342
    Points : 123
    Points
    123
    Par défaut
    Okay, j'ai fais le code ci-dessous et celà a fonctionner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            Runtime.getRuntime().addShutdownHook( new Thread() {
                public void run() {
                    System.out.println("Running Shutdown Hook");
                    myprog.terminate();
                  }
            });
    Donc merci !

    Par contre sous eclipse, terminer le processus n'appelé pas le hook.
    J'ai du générer un jar puis tester pour voir que celà fonctionner vraiment.
    Si tu serais comment contourner le probleme, je suis preneur.
    En tout cas merci encore !

  5. #5
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par laclac Voir le message
    Okay, j'ai fais le code ci-dessous et celà a fonctionner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            Runtime.getRuntime().addShutdownHook( new Thread() {
                public void run() {
                    System.out.println("Running Shutdown Hook");
                    myprog.terminate();
                  }
            });
    Donc merci !

    Par contre sous eclipse, terminer le processus n'appelé pas le hook.
    J'ai du générer un jar puis tester pour voir que celà fonctionner vraiment.
    Si tu serais comment contourner le probleme, je suis preneur.
    En tout cas merci encore !
    Effectivement, le kill pur et simple du process ne lance pas le hook, c'est seulement des fermetures naturelles (fermeture console, shutdown pc normal, ...) qui le déclenchent. A ma connaissance, il n'y a rien en Java pour que ton programme soit notifié du kill du process.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/09/2010, 17h30
  2. [AC-2003] Fermer proprement une connexion ODBC
    Par isajobelle dans le forum Access
    Réponses: 1
    Dernier message: 03/05/2010, 09h19
  3. Comment fermer proprement une fenetre?
    Par dams95190 dans le forum VBA Access
    Réponses: 13
    Dernier message: 12/10/2007, 13h45
  4. [HttpSession] Fermer proprement une session
    Par ohyes_ dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 20/07/2006, 15h33
  5. [wxPython][wxFrame]Comment fermer proprement une frame ?
    Par Screameur dans le forum wxPython
    Réponses: 4
    Dernier message: 12/05/2005, 19h49

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