2

我通过调用启动几个外部进程

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

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

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

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

我已经做了什么:

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

4

1 回答 1

1

您可以做的是 - 让您的应用程序以特定间隔打开与 tomcat(在 localhost:port 上)的连接,如果它不存在 - System.exit(0)。例如:

try {
    new URL("http://localhost:8080").openConnection().getContent();
} catch (IOException ex) {
    // do app finalizations
    System.exit(0);
}
于 2010-02-22T09:57:14.450 回答