Question

I lancer plusieurs processus externe via un appel à

Runtime.getRuntime.exec("java myApp");

Je surveille le bon lancement et l'exécution de l'application avec quelques java.concurent.Future. Je peux dire si l'application est lancée, par erreur, arrêté. Je peux l'arrêter.

Mais, quand je tue l'application principale (celui qui lance les autres) les différents processus des applications les enfants gardent runnning et je perds le contrôle sur eux.

Je cherche un moyen de faire en sorte que lorsque l'application mère est arrêtée / tué / erreur, tous les processus enfants sont tués aussi.

Ce que je l'ai déjà fait:

La principale application fonctionne en tomcat, donc j'écouter de la destruction du contexte, et de tuer tous les sous-processus. Mais il ne suffit pas. Quand tomcat est arrêté ou tué, il ne fonctionne pas

Était-ce utile?

La solution

Qu'est-ce que vous pouvez faire est - faire vos applications ouvrir une connexion au tomcat (sur localhost: port) dans certains intervalles, et si elle est pas là - System.exit(0). Par exemple:

try {
    new URL("http://localhost:8080").openConnection().getContent();
} catch (IOException ex) {
    // do app finalizations
    System.exit(0);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top