当tomcat被杀死时,确保Runtime.exec启动的应用程序终止

时间:2010-02-22 09:40:20

标签: java tomcat runtime external-process

我通过调用

启动了几个外部流程
Runtime.getRuntime.exec("java myApp");

我用一些java.concurent.Future监视应用程序的正确启动和执行。 我可以判断应用程序是否已启动,错误地停止了。我可以阻止它。

但是,当我杀死主应用程序(启动其他应用程序的那个)时,子应用程序的几个进程继续运行并且我失去对它们的控制。

我正在寻找一种方法来确保当母应用程序被停止/被杀/错误时,所有子进程都会被杀死。

我已经做过的事情:

主应用程序在tomcat中运行,所以我监听上下文的破坏,并杀死所有子进程。但这还不够:当tomcat停止或被杀时,它无效。

1 个答案:

答案 0 :(得分:1)

您可以做的是 - 让您的应用程序在某些时间间隔内打开与tomcat(在localhost:端口上)的连接,如果不存在,则System.exit(0)。例如:

try {
    new URL("http://localhost:8080").openConnection().getContent();
} catch (IOException ex) {
    // do app finalizations
    System.exit(0);
}