2009-01-27 106 views
14

如何在使用Manager取消部署應用程序時使Tomcat刪除Web應用程序工件?Tomcat取消部署不會刪除Web應用程序工件

我正在使用Tomcat 6.0.18。該應用程序使用tomcat-maven-plugin 1.0-SNAPSHOT進行部署,但行爲與Maven插件或Web界面相同。

Tomcat文檔提供了有關如何取消部署應該如何在 Manager How To上表現的警告。

戰爭文件可以刪除;但是,解壓縮的應用程序目錄仍然阻止重新部署。

回答

2

可能是因爲存在後臺線程(您最有可能自己開始)或長時間運行的請求阻止應用程序完全停止,您的應用程序無法完全取消部署。

您檢查了日誌文件嗎?他們是否說明應用程序是否可以成功取消部署?或者相反?嘗試取消部署後(在Unix上殺掉-3個processid,在Windows中控制檯上按Ctrl-Break),並且看看是否還有某些不應該運行的東西,是否可以獲得線程轉儲?

另請注意,我所看到的大多數應用程序無法完全取消部署他們所用的內存。我經常遇到OutOfMemoryErrors(PermGen),特別是在重新部署webapps之後(如果你google的話,你會發現很多關於PermGen的參考),因此我認爲重新部署適合開發機器,但不適用於生產版本。在生產中讓你感到困惑之前,最好先了解一下。

26

如果您通過應用程序中的URL訪問JAR庫中的資源,它可能也是文件鎖定問題(特別是在Windows上)。

我剛做了一個類似的問題,並通過修改下列行

的Apache Tomcat/conf/context.xml文件

文件來固定它:

<Context antiJARLocking="true" antiResourceLocking="true" > 

(請注意,對於這是否安全生產存在一些爭議,因爲它會爲每次重新部署創建Web應用程序的副本,但是如果您在Windows上並且無法解決問題在源頭上,這可能會提供一個可行的解決方案)。

+1

這個訣竅適合我。我在使用「grails test tomcat undeploy」命令取消部署我的grails應用程序時遇到了問題。但有了這些選項,它只是神奇地開始工作 – 2010-12-16 12:15:02

相關問題