Tomcat 作為最流輕量級 Servlet 容器,提供了多種 Web 應用部署途徑。理解各方式原理與優劣,能幫助開發者在開發、測試、生產環境做出最佳選擇。
在 $CATALINA_HOME/conf/server.xml 的 <Host> 節點內添加:
<Context
path="/Hello"
docBase="D:\Users\WebProject\WebContent"
debug="0"
privileged="true"
reloadable="true"
/>
https://localhost:8080/Hello)。webapps 的路徑。true 啟用熱部署(類文件變更自動重載),生產環境嚴禁開啟,會導致類加載器洩漏與效能下降。缺點:修改 server.xml 需重啟 Tomcat;集中管理單點故障風險高;Tomcat 官方文檔明確建議避免在 server.xml 定義 Context。
$CATALINA_HOME/webapps/。myapp.war → /myapp)。ROOT.war 部署為根應用(訪問 /)。優點:零配置、標準化、適合生產環境自動化部署腳本。
缺點:專案路徑與文件名強綁定,修改訪問路徑需改名或配置 server.xml。
在 $CATALINA_HOME/conf/Catalina/localhost/ 下建立任意名稱的 XML(如 myapp.xml):
<?xml version="1.0" encoding="UTF-8"?>
<Context
docBase="D:\Users\WebProject\WebContent"
>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
web.xml 變更觸發重載。admin.xml → /admin),與專案目錄名解耦,安全性更高。原理:Tomcat 啟動時掃描 conf/Catalina/localhost/ 下所有 XML,每個視為一個 Context 部署描述符。
Run on Server 即可一鍵啟動、除錯、熱插拔。| 環境 | 推薦方式 | 理由 |
|---|---|---|
| 本地開發 | IDE 內嵌 + 方式三 | 熱部署、斷點調試、路徑解耦 |
| 測試/預發布 | 方式二 (WAR) + CI/CD | 標準化、版本追溯、自動化流水線 |
| 生產環境 | 方式二 (WAR) + 容器化 | 不可變基礎設施、滾動升級、資源隔離 |
生產環境請務必關閉reloadable、autoDeploy,並考慮使用 Docker/K8s 管理 Tomcat 實例,實現藍綠部署與零停機發布。