2010-02-22 53 views
2

我通過調用啓動多個外部過程確保的Runtime.exec推出了應用程序的終止時,Tomcat是殺害

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

我監視與一些java.concurent應用程序的正確啓動和執行。未來。 我可以判斷應用程序是否啓動,錯誤,停止。我可以阻止它。

但是,當我殺死主應用程序(啓動其他應用程序的應用程序)時,兒童應用程序的多個進程保持運行,我失去對它們的控制。

我正在尋找一種方法,以確保當母應用程序停止/殺死/出錯時,所有子進程也會被終止。

我已經這樣做:

主要的應用程序運行在Tomcat中,所以我聽上下文的破壞,並殺死所有的子進程。但這還不夠:當tomcat停止或被殺死時,它不起作用。

回答

1

你可以做的是 - 讓你的應用程序以特定的時間間隔打開一個到tomcat的連接(在localhost:port上),如果它不在那裏 - System.exit(0)。例如:

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

好主意。但我不明白爲什麼這是OS具體。 – 2010-02-22 10:08:18

+0

我的建議不是操作系統特定的。但在某些操作系統上查殺tomcat _might_會殺死它的子進程 – Bozho 2010-02-22 10:11:36

+0

好的。對於我所看到的,這個過程在win vista和ubuntu 8.04上保持着活力。謝謝你的消化。我認爲這會做到這一點。 (我現在會測試它) – 2010-02-22 10:30:24

相關問題