Tomcat conf 目錄下的四大核心配置文件各司其職,掌握它們是高效運維與故障排查的前提。
| 文件 | 核心職責 | 修改生效方式 |
|---|---|---|
| server.xml | 服務器級核心配置:連接器、引擎、主機、全局 Context 默認值 | 需重啟 Tomcat |
| context.xml | Context 容器默認配置:數據源、會話管理、載入器等,**支持熱重載** | 定時掃描,自動重載 |
| web.xml | Servlet 規范標準部署描述符:全局 Servlet/Filter/Listener 定義、MIME 映射、歡迎頁面 | 需重啟或重新部署應用 |
| tomcat-users.xml | 用戶認證授權數據源:角色、用戶、密碼,供 Realm 使用 | 需重啟(除非配合特定 Realm 實現熱加載) |
採用嵌套組件架構:Server → Service → Connector + Engine → Host → Context。
https://localhost:8080/macy/index.jsp 為例)Service 下的 Engine (默認 Catalina)Engine 按域名匹配 Host (默認 localhost)Host 按路徑匹配 Context (path=/macy)Context 在映射表中查找 *.jsp 對應的 JspServletJspServlet.service() 處理請求關鍵洞見:server.xml 不可動態重載,修改必須重啟。因此 Tomcat 5.5+ 將 Context 配置遷移至 context.xml。
每個 <Context> 代表一個 Web 應用。核心屬性:
path:虛擬目錄(上下文路徑),如 /SmartStoredocBase:應用實際路徑或 WAR 包路徑(絕對/相對)reloadable:true 時監視 WEB-INF/classes、lib 變更,熱重載應用(開發環境建議開啟)workDir:JSP 編譯產出的 Servlet 源碼/類文件存放目錄<Context path="/kaka" docBase="kaka" reloadable="true" privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>WEB-INF/kaka.xml</WatchedResource>
<Resource name="jdbc/testSiteds"
auth="Container"
type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="root"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/testSite" />
</Context>
WatchedResource:監控指定文件變更,觸發應用重載。Resource:定義 JNDI 數據源,供應用通過 java:comp/env/jdbc/testSiteds 查找使用。
$CATALINA_BASE/conf/context.xml,對所有應用生效$CATALINA_BASE/conf/Catalina/${hostName}/context.xml,針對特定虛擬主機$CATALINA_BASE/conf/Catalina/${hostName}/${webAppName}.xml,針對單一應用(優先級最高)<role rolename="manager-gui"/> <user username="admin" password="1234" roles="manager-gui"/>
啟用 MemoryRealm (默認) 即可實現管理控制台訪問控制。生產環境建議對接 DataSourceRealm、JNDIRealm 或 JDBCRealm。
Tomcat 讀取順序:conf/web.xml (全局) → WEB-INF/web.xml (應用級覆蓋)。通常無需修改全局文件,應用級配置 Servlet、Filter、Listener、錯誤頁面、會話超時等。
理解分層職責與生效機制,是 Tomcat 精細化運維的關鍵。