我們有一個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.war
到foo
目錄。
我想如果我們在webapps
目錄換上新foo.war
,Tomcat的檢查,看看是否被更改,刪除舊foo
目錄,並unwar foo.war
到foo
。
我們有一個失敗的自動部署腳本,部署腳本關閉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文件來更新時間戳以幫助檢測,因此它不能成爲時間戳問題。
如果您將foo.war複製到webapps,tomcat將重新部署您的應用程序。檢查catalina.out的日誌。您無需在每次部署時重新啓動tomcat。 – tshenolo
你是說Tomcat會自動重新部署foo,但前提是我們不先關閉Tomcat?有趣。在我們的一些應用程序中,部署是_exploded war_,因爲我們在部署時必須修改戰爭中的文件。也許我們應該改變我們的想法,並進行所有實況部署。 –
在部署之前不要關閉Tomcat。在eclipse或netbeans中修改你的源代碼,創建war文件然後部署,如果你使用的是ant或maven,你可以使用它們進行部署,甚至更好。 – tshenolo