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

Tomcat 核心配置文件深度解析:server.xml、context.xml、web.xml 與 tomcat-users.xml

     編輯:Java 綜合教學

Tomcat 配置文件全景指南:從請求處理到動態重載

Tomcat conf 目錄下的四大核心配置文件各司其職,掌握它們是高效運維與故障排查的前提。

四大配置文件職責速覽

文件核心職責修改生效方式
server.xml服務器級核心配置:連接器、引擎、主機、全局 Context 默認值需重啟 Tomcat
context.xmlContext 容器默認配置:數據源、會話管理、載入器等,**支持熱重載**定時掃描,自動重載
web.xmlServlet 規范標準部署描述符:全局 Servlet/Filter/Listener 定義、MIME 映射、歡迎頁面需重啟或重新部署應用
tomcat-users.xml用戶認證授權數據源:角色、用戶、密碼,供 Realm 使用需重啟(除非配合特定 Realm 實現熱加載)

server.xml:請求處理的「總管」

採用嵌套組件架構:Server → Service → Connector + Engine → Host → Context。

HTTP 請求處理全流程(以 https://localhost:8080/macy/index.jsp 為例)

  1. Connector (port=8080) 接收請求,封裝為 Request/Response 對象
  2. 移交給 Service 下的 Engine (默認 Catalina)
  3. Engine 按域名匹配 Host (默認 localhost)
  4. Host 按路徑匹配 Context (path=/macy)
  5. Context 在映射表中查找 *.jsp 對應的 JspServlet
  6. 調用 JspServlet.service() 處理請求
  7. 響應沿原鏈路返回:Context → Host → Engine → Connector → 客戶端

關鍵洞見:server.xml 不可動態重載,修改必須重啟。因此 Tomcat 5.5+ 將 Context 配置遷移至 context.xml。

context.xml:動態配置的「靈魂」

每個 <Context> 代表一個 Web 應用。核心屬性:

  • path:虛擬目錄(上下文路徑),如 /SmartStore
  • docBase:應用實際路徑或 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 查找使用。

context.xml 的三大作用域

  1. Server 級:$CATALINA_BASE/conf/context.xml,對所有應用生效
  2. Host 級:$CATALINA_BASE/conf/Catalina/${hostName}/context.xml,針對特定虛擬主機
  3. WebApp 級:$CATALINA_BASE/conf/Catalina/${hostName}/${webAppName}.xml,針對單一應用(優先級最高)

tomcat-users.xml:最簡認證配置

<role rolename="manager-gui"/>
<user username="admin" password="1234" roles="manager-gui"/>

啟用 MemoryRealm (默認) 即可實現管理控制台訪問控制。生產環境建議對接 DataSourceRealm、JNDIRealm 或 JDBCRealm。

web.xml:Servlet 規范標準配置

Tomcat 讀取順序:conf/web.xml (全局) → WEB-INF/web.xml (應用級覆蓋)。通常無需修改全局文件,應用級配置 Servlet、Filter、Listener、錯誤頁面、會話超時等。

總結

  • server.xml 定義服務器骨架,靜態、重啟生效
  • context.xml 定義應用運行時行為,動態、熱重載,首選 Context 配置位置
  • tomcat-users.xml 提供最簡認證數據源
  • web.xml 遵循 Servlet 規范,應用級部署描述符

理解分層職責與生效機制,是 Tomcat 精細化運維的關鍵。

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