我們的項目使用Cruise Control來構建和熱部署Web應用程序到遠程服務器(通過FTP)以.war文件的形式運行Tomcat。不幸的是,「熱」部署似乎沒有正常工作,導致我們重新啓動Tomcat以響應每個部署。我們真的很喜歡這種自動神奇的做法,就像構建本身一樣。是否有捷徑可尋?有沒有簡單的方法讓Apache Tomcat在部署後自動重啓?
附註:兩臺機器都運行Windows(XP或服務器,我認爲)。
附註2:性能並不重要。這是一個整合框。
我們的項目使用Cruise Control來構建和熱部署Web應用程序到遠程服務器(通過FTP)以.war文件的形式運行Tomcat。不幸的是,「熱」部署似乎沒有正常工作,導致我們重新啓動Tomcat以響應每個部署。我們真的很喜歡這種自動神奇的做法,就像構建本身一樣。是否有捷徑可尋?有沒有簡單的方法讓Apache Tomcat在部署後自動重啓?
附註:兩臺機器都運行Windows(XP或服務器,我認爲)。
附註2:性能並不重要。這是一個整合框。
如果你有定期的構建,你可以很容易地把東西在cron的這樣
crontab -e
然後停止Tomcat在說凌晨1:30
30 1 * * * ./path_to_tamcat/bin/catalina.sh stop
然後再次啓動2分鐘後來
32 1 * * * ./path_to_tamcat/bin/catalina.sh start
授予這不是最適合不規則部署,但你可以輕鬆地h大規模部署與計劃重新啓動。
這聽起來有點像我正在使用小Tomcat的部署管理器的東西。我基本上沒有這方面的經驗,只是你知道。這就是說,我在哪裏工作,我們使用兩個設置。
在server.xml文件中,上下文具有屬性reloadable =「true」。
我們所要做的就是將WAR文件放在正確的位置,並且Tomcat解包並重新加載它,沒問題。
現在,當我看着它,在official configuration reference說:
「此功能的應用程序開發過程中非常有用,但它需要顯著運行時開銷,因此不建議對部署的生產應用。」
就像我說過的,我們從來沒有遇到過問題。我們的系統處理大量請求,我們似乎沒有問題。儘管我們從來沒有對這兩種配置進行基準測試。
您可能想試試看。至少你會知道,如果它足夠快樂,重新加載的東西完成這種方式。您也可以檢查性能,看看它是否對您有問題。
我應該注意的是,每隔一段時間,事情就不會正確,我們必須重新啓動Tomcat,但這種情況相對較少。
如果這樣做,你需要做的就是讓腳本在正確的位置複製WAR並監視以確保工作正常。在部署足夠多的Tomcat後,將耗盡permgen空間,因此您必須注意,您可能需要手動重啓Tomcat。
其他隨機猜測:
如果您查看bin目錄中的tomcat啓動和關閉.bat(或.sh)腳本,您將看到它們實際運行一個java進程來啓動tomcat或在關閉的情況下,到tomcats關閉端口 - 請參閱conf目錄中的server.xml。 您可以配置您的構建ant任務,以與腳本相同的方式調用tomcat jar。
你使用的是什麼版本的tomcat? 究竟發生了什麼使其看起來好像「熱」部署不起作用?
是tomcat註冊爲windows服務嗎?
如果是這樣,只需使用netstart和netstop編寫一個.bat腳本,並將被調用作爲部署過程的最後一步。
重新加載= 「真」
不會啓用的戰爭文件重新部署(這將自動工作),它能夠在WEB-INF/classes和WEB-INF/lib目錄文件的變化進行監測,這可能不是你想要的。
很多時候的戰爭文件重新deployement在Tomcat中凍結,我能跟蹤回類加載器泄漏,看的見Classloader leaks: the dreaded "java.lang.OutOfMemoryError: PermGen space" exception
你沒有給太多細節的時候,爲什麼你的熱點展開時「工作不正常」,但如果它實際上已經引起了/WEB-INF/lib
資源被鎖定(這是不是一種罕見的原因,你看這往往使用JavaMail API的mail.jar
),則只需設置Context
的antiResourceLocking
屬性到true
。下面是一個webapp的/META-INF/context.xml
看起來如何的例子:
<Context antiResourceLocking="true">
<!-- Your stuff here. -->
</Context>
啊,我應該提到遠程機器(和構建機器)是windows的盒子。 – 2008-09-19 20:30:28
然後您可以通過任務管理器輕鬆設置調度程序到相同的東西,並抓住catalina.bat文件,我相信 – ethyreal 2008-09-19 20:35:11
感謝您的建議。不幸的是,這是一個不規則的部署,因爲它是爲了響應通過SVN的用戶簽入而啓動的。 – 2008-09-20 00:48:57