[英]How do I update a Tomcat webapp without restarting the entire service?
我是Tomcat
的新手。 我們有一台運行着大約 5 個應用程序的開發機器。 盡管它是開發版,但我們的客戶在測試期間大量使用它。
所以說我們需要對一個 class 文件做一點小改動。 現在,我們必須關閉 Tomcat(影響其他四個應用程序),刪除WAR
文件(和 web 應用程序目錄),重新部署新的WAR
文件並重新啟動Tomcat
當然,這讓一些人感到不安,因為它會破壞所有應用程序的所有登錄會話。
有一個更好的方法嗎? 我的意思是,有沒有辦法只重新加載已更改的CLASS而不是開發機器上的所有內容?
謝謝。
您是否嘗試過使用Tomcat 的 Manager 應用程序? 它允許您在不關閉 Tomcat 的情況下取消部署/部署戰爭文件。
如果不想使用Manager應用,也可以從webapps目錄中刪除war文件,Tomcat會在短時間內取消部署應用。 然后,您可以將戰爭文件復制回目錄,Tomcat 將部署戰爭文件。
如果您在 Windows 上運行 Tomcat,您可能需要配置您的上下文以不鎖定各種文件。
如果您絕對不能有任何停機時間,您可能需要查看Tomcat 7 的並行部署您可以同時部署具有相同上下文路徑的 web 應用程序的多個版本。 用於將請求匹配到上下文版本的規則如下:
有多種簡單的方法。
只需觸摸任何 web 應用程序的 web.xml。
touch /usr/share/tomcat/webapps/<WEBAPP-NAME>/WEB-INF/web.xml
您還可以更新 WEB-INF/lib 中的特定 jar 文件,然后觸摸 web.xml,而不是構建整個戰爭文件並再次部署它。
刪除webapps/YOUR_WEB_APP目錄,Tomcat會在5秒內開始部署war(假設你的war文件還在webapps文件夾下)。
一般用新版本覆蓋war文件會被tomcat自動重新部署。 如果沒有,您可以如上所述觸摸 web.xml。
將已展開的“目錄”復制到您的 webapps 文件夾
在 apache tomcat 的 conf 目錄中,您可以找到 context.xml 文件。 在那個編輯標簽中作為 < Context reloadable="true" >。 這應該可以解決問題,您無需重新啟動服務器
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.