2010-11-07 63 views

回答

0

您可以在java中執行TASKLIST.EXE並將結果添加到結果中。我發現第二個選項是從java運行服務停止命令。

希望它有幫助。

1

沒有直接的方式來訪問我知道的PID,但是,有人寫了一篇關於如何間接完成這個工作的博客。這是他的5個不同選項的鏈接。

http://blog.igorminar.com/2007/03/how-java-application-can-discover-its.html

的最好的選擇就是這樣的產品......

使用Java的管理和監控 API(java.lang.management):

ManagementFactory.getRuntimeMXBean().getName(); 

返回類似於: 28906 @ localhost其中28906是t他是JVM進程的PID ,實際上是我的應用程序的 PID。

這種攻擊是依賴於JVM的,我只在Sun的JVM上對其進行了測試。

從Javadoc文檔的getName() RuntimeMXBean的方法:返回表示正在運行的Java虛擬機 名 。返回的名稱字符串 可以是任意任意字符串,並且Java 虛擬機實現可以 選擇在返回的 名稱字符串中嵌入平臺特定的 有用信息。每臺正在運行的虛擬機器可以有不同的名稱。

2

我不確定這是否有助於Windows的情況,但可以在Linux/UNIX上使用的catalina.sh腳本將進程的PID存儲在文件中。您只需將CATALINA_PID環境變量設置爲您的PID文件的路徑名即可。當你這樣做時,運行catalina.sh stop -force將嘗試徹底關閉,如果失敗,則將爲kill Tomcat進程。