代码之家  ›  专栏  ›  技术社区  ›  Antoine Claval

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

  •  2
  • Antoine Claval  · 技术社区  · 15 年前

    我通过呼叫启动了几个外部进程

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

    我用java.concurrent.future监控应用程序的正确启动和执行。 我可以判断应用程序是否错误地启动,是否停止。我可以阻止它。

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

    我正在寻找一种方法来确保当母亲应用程序停止/终止/出错时,所有子进程也都会终止。

    我已经做的:

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

    1 回复  |  直到 15 年前
        1
  •  1
  •   Bozho    15 年前

    您可以做的是-让您的应用程序以一定的时间间隔打开到Tomcat(在localhost:port上)的连接,如果没有连接的话。- System.exit(0) . 例如:

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