簡體   English   中英

如何在不重新啟動整個服務的情況下更新 Tomcat webapp?

[英]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 應用程序的多個版本。 用於將請求匹配到上下文版本的規則如下:

  • 如果請求中沒有 session 信息,請使用最新版本。
  • 如果請求中存在 session 信息,請檢查每個版本的 session 管理器以查找匹配的 session,如果找到,則使用該版本。
  • 如果請求中存在 session 信息,但找不到匹配的 session,請使用最新版本。

有多種簡單的方法。

  1. 只需觸摸任何 web 應用程序的 web.xml。

     touch /usr/share/tomcat/webapps/<WEBAPP-NAME>/WEB-INF/web.xml

您還可以更新 WEB-INF/lib 中的特定 jar 文件,然后觸摸 web.xml,而不是構建整個戰爭文件並再次部署它。

  1. 刪除webapps/YOUR_WEB_APP目錄,Tomcat會在5秒內開始部署war(假設你的war文件還在webapps文件夾下)。

  2. 一般用新版本覆蓋war文件會被tomcat自動重新部署。 如果沒有,您可以如上所述觸摸 web.xml。

  3. 已展開的“目錄”復制到您的 webapps 文件夾

在 apache tomcat 的 conf 目錄中,您可以找到 context.xml 文件。 在那個編輯標簽中作為 < Context reloadable="true" >。 這應該可以解決問題,您無需重新啟動服務器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM