2010-11-07 4 views

Répondre

0

Vous pouvez exécuter TASKLIST.EXE en java et afficher le résultat. la deuxième option que j'ai trouvée intresting est d'exécuter la commande Service stop de java.

Espérons que ça aide.

1

Il n'y a pas de moyen direct d'accéder au PID dont je suis au courant, cependant, quelqu'un a écrit un super blog sur la façon de le faire indirectement. Voici un lien vers ses 5 options différentes.

http://blog.igorminar.com/2007/03/how-java-application-can-discover-its.html

L'option plus belle est celle-ci ...

Utilisation de la gestion de Java et API de surveillance (java.lang.management):

ManagementFactory.getRuntimeMXBean().getName(); 

renvoie quelque chose comme: 28906 @ localhost où 28906 est t Il PID du processus JVM, qui est en fait le PID de mon application.

Ce hack est dépendant de la JVM et I l'a testé uniquement avec la JVM de Sun.

De Javadocs pour la méthode getName() de RuntimeMXBean: Renvoie le nom représentant la machine exécutant virtuelle Java . La chaîne de nom renvoyée peut être n'importe quelle chaîne arbitraire et une implémentation de machine virtuelle Java peut choisir d'intégrer des informations utiles propres à la plate-forme dans la chaîne de nom renvoyée. Chaque machine virtuelle en cours d'exécution pourrait avoir un nom différent.

2

Je ne sais pas si cela aide le cas de Windows, mais le script catalina.sh que vous pouvez utiliser sur Linux/UNIX peut être dit de stocker le PID du processus dans un fichier. Vous avez juste besoin de définir la variable d'environnement CATALINA_PID sur le chemin d'accès de votre fichier PID. Lorsque vous avez fait cela, exécuter catalina.sh stop -force va tenter un arrêt propre, et si cela échoue, il sera kill le processus Tomcat.