2009-04-15 8 views
4

Avec une application console, un serveur acceptant plusieurs connexions de clients, est-il possible d'avoir un écouteur ou un événement sur une application de fermeture? Je veux, dans ce cas, dire à tous les clients connectés de se déconnecter doucement avant que l'application ne se ferme vraiment.Comment gérer un événement d'application de fermeture en Java?

Une solution? Je vous remercie!

Répondre

7

Vous voulez utiliser un crochet d'arrêt:

Runtime.getRuntime().addShutdownHook(theHookThread); 

Ainsi, le fil sera exécuté lorsque la machine virtuelle Java arrête, voir here pour plus de détails.

+0

Avec une recherche rapide, j'ai trouvé cet article (http://www.onjava.com/pub/a/onjava/2003/03/26/shutdownhook.html?page=1), et c'est exactement ce que j'ai cherchait. Merci à toi! – elbaid

0

Si en fermant l'application, vous voulez dire que le système d'exploitation a tué le processus du serveur?

Dans cette situation, le serveur ne peut pas savoir qu'il est en train d'être tué. Cela supprimera les connexions existantes. Si en fermant l'application, vous fournissez une méthode permettant à l'administrateur système de fermer manuellement le serveur (probablement en tapant "exit" sur la console du serveur). Ensuite, l'événement de fermeture serait un événement personnalisé, et vous devrez coder les écouteurs et notifier à tout le monde que le serveur s'arrête. Dans ce scénario, c'est possible. Essayez d'ajouter plus de détails sur la façon dont votre serveur est construit ou comment cela fonctionne.

Questions connexes