首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Tomcat WebApp 發布機制深度解析:server.xml vs webapps 目錄、熱部署原理

     編輯:Java 綜合教學

發布本質

讓 Tomcat 知道應用位置 → 建立 Context → 加入 Host → 初始化(解析 web.xml)→ 啟動(Filter/Listener/Servlet)。

兩種發布途徑

1. server.xml 靜態配置(Eclipse/IDE 部署)

<Host appBase="webapps" ...>
    <Context docBase="/var/tomcat-test/webapps/TestTomcat"
             path="/TestTomcat" reloadable="true"/>
</Host>
  • 啟動階段解析 server.xml,直接構建 StandardContext 掛載至 Host 子容器。
  • 由 Host.startInternal() 統一啟動所有子 Context。

2. webapps 目錄掃描(生產標準部署)

  • HostConfig 監聽 Host 的 STARTING 事件。
  • 依序執行:deployDescriptors()(XML)→ deployWars()(WAR)→ deployDirectories()(解壓目錄)。
  • 每個應用構建 StandardContext,設定 docBase、path,加入 Host 觸發啟動。

啟動順序:server.xml 配置 > XML 描述符 > WAR > 目錄。

熱部署(Reload)原理

  • ContainerBase.startInternal() 啟動守護執行緒 backgroundProcessor。
  • 定期檢查 Context 下 WEB-INF/web.xml、classes/、lib/ 時間戳。
  • 發現變更 → Context.reload() → 停止舊 Context → 重新初始化/啟動。
  • 可在 Context 設定 reloadable="true" 啟用(生產建議關閉,效能考量)。

總結

理解發布即理解 Context 生命週期;IDE 開發走 server.xml,生產部署丟 WAR 進 webapps,熱部署靠背景執行緒輪詢時間戳,知其然更要知其所以然。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved