2009-05-18 73 views
2

我正在運行一個tomcat服務器,並試圖更新該服務器上的代碼。爲此,我需要在Windows環境中可靠地關閉服務器。據我所知,tomcat shutdown.bat腳本可能會遇到線程失控的問題,即使我無意中創建了一個保持.bat腳本不工作的線程,我也需要這樣做。我一直在嘗試的方法是運行帶有服務名稱的NET STOP命令 - 但是在某些情況下(即多個服務),我在一臺機器上運行了多個tomcats。有沒有辦法獲得與運行我的代碼的tomcat相關的服務的名稱?對於我應該研究的問題還有其他什麼好的解決方案嗎?從Java程序中殺死一個Windows會話

我有很多客戶,所以更喜歡不涉及安裝附加軟件或硬編碼服務名稱的解決方案。

回答

0

剛剛發現服務在Windows註冊表中列出了諸如「HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \」和服務名稱之類的鍵。圖像路徑包含可執行文件的完整路徑名稱。如果我通過註冊表掃描,我可以將tomcat home url與可執行文件的路徑匹配,並從密鑰中獲取服務名稱。然後我可以在這個網站上運行一個網站。

0

使用cygwin和netstat來查找偵聽該端口的進程,然後通過PID殺死它將是我的方法。

0

Tomcat hotdeploys。是否有任何特殊的原因,您不能放入新的WAR文件?

+2

這對於開發和非常週期性的更新非常有用 - 但是隻要我一直在,Tomcat的熱部署東西中存在permgen泄漏。儘管如此,我很樂意被證明是錯誤的。 – Jared 2009-05-18 21:37:13

1

如果你在運行tomcat的Vm內部的服務名後面,你可能想要查看一下ManagementBean的東西,sun上的以下文章會介紹一些細節;

Sun forums

不管你做什麼將是相當哈克,因爲它的所有操作系統依賴!我肯定會建議堅持使用Tomcat控件&部署服務,您甚至不需要殺死Tomcat進程,您應該能夠使用tomcat熱部署工具重新部署您的web應用程序 - 無論是從控制面板還是從提供的ant庫與tomcat。

+1

當我們熱部署時,我們遇到了一些耗盡了permgen空間的問題。更新數據庫驅動程序也存在一些已知問題,我們偶爾會這樣做(雖然很少)。 ManagementBean的東西確實看起來很駭人,但我會研究它,看看我能想出什麼。謝謝。 – user108983 2009-05-18 20:36:36