2014-01-07 92 views
1

我們有一個tomcat部署,我們正在部署一場名爲app.war的戰爭。在/opt/tomcat/webapps目錄中看到:Tomcat部署 - Tomcat如何檢測戰爭中的變化?

/opt/tomcat/webapps/foo.war 
/opt/tomcat/webapps/foo 
/opt/tomcat/webapps/host-manager 
/opt/tomcat/webapps/jmx-console 
... 

你可以看到Tomcat的部署foo.warfoo目錄。

我想如果我們在webapps目錄換上新foo.war,Tomcat的檢查,看看是否被更改,刪除舊foo目錄,並unwar foo.warfoo

我們有一個失敗的自動部署腳本,部署腳本關閉Tomcat,將foo.war複製到/opt/tomcat/webapps並重新啓動Tomcat。但是,Tomcat從未將/opt/tomcat/webapps/foo目錄替換爲新的foo.war的內容。手動刪除/opt/tomcat/webapps/foo允許Tomcat創建一個新的foo目錄,其中包含所有新文件。

部署腳本假定要刪除/opt/tomcatwebapps/foo,但由於腳本中沒有發生錯誤。我們現在修復了這個錯誤。但是,該腳本之前在部署過程中使用過,並且我們從未遇到過這個問題,所以我假設Tomcat能夠檢測到這些更改並部署新的foo.war

那麼,Tomcat是否檢測到war文件發生了變化。如果是這樣,它是如何做到的?部署腳本觸及war文件來更新時間戳以幫助檢測,因此它不能成爲時間戳問題。

+0

如果您將foo.war複製到webapps,tomcat將重新部署您的應用程序。檢查catalina.out的日誌。您無需在每次部署時重新啓動tomcat。 – tshenolo

+0

你是說Tomcat會自動重新部署foo,但前提是我們不先關閉Tomcat?有趣。在我們的一些應用程序中,部署是_exploded war_,因爲我們在部署時必須修改戰爭中的文件。也許我們應該改變我們的想法,並進行所有實況部署。 –

+0

在部署之前不要關閉Tomcat。在eclipse或netbeans中修改你的源代碼,創建war文件然後部署,如果你使用的是ant或maven,你可以使用它們進行部署,甚至更好。 – tshenolo

回答

2

如果您將foo.war複製到webapps中,tomcat將重新部署您的應用程序。檢查catalina.out的日誌。

在部署之前不要關閉Tomcat。在eclipse或netbeans中修改你的源代碼,創建war文件然後部署,如果你使用的是ant或maven,你可以使用它們進行部署,甚至更好。

相關問題