Tomcat設定檔server.xml,tomcatserver.xml
Tomcat目錄中的server.xml設定檔
server.xml稱為主設定檔或全域設定檔
它完成以下兩個目標:
1,提供Tomcat組件的初始化配置
2,說明Tomcat的結構和含義,使得Tomcat通過執行個體化組件完成啟動及構建自身
代碼解析如下:
<Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JasperListener" /> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <GlobalNamingResources> <!-- 全域命名資源,來定義一些外部存取資源,其作用是為所有引擎應用程式所引用的外部資源的定義 --!> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> <!-- 定義的一個名叫“UserDatabase”的認證資源,將conf/tomcat-users.xml載入至記憶體中,在需要認證的時候到記憶體中進行認證 --> <Service name="Catalina"> <!-- # 定義Service組件,同來關聯Connector和Engine,一個Engine可以對應多個Connector,每個Service中只能一個Engine --!> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <!-- 修改HTTP/1.1的Connector監聽連接埠為8080.用戶端通過瀏覽器訪問的請求,只能通過HTTP傳遞給tomcat。 --> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost"> <!-- 修改當前Engine,預設主控件是localhost --> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <-- Realm組件,定義對當前容器內的應用程式訪問的認證,通過外部資源UserDatabase進行認證 --> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- 定義一個主機,網域名稱為:localhost,應用程式的目錄是webapps,設定自動部署,自動解壓 --> <Context path="" docBase=""/usr/local/tomcat/webfile" " reloadable="true" /> <!--定義該應用程式,訪問路徑"“,並且當該應用程式下web.xml或者類等有相關變化時,自動重載當前配置,即不用重啟tomcat使部署的新應用程式生效--> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> <!-- 定義一個Valve組件,用來記錄tomcat的訪問日誌,日誌存放目錄為:logs如果定義為相對路徑則是相當於$CATALINA_HOME,並非相對於appBase,
這個要注意。定義記錄檔首碼為localhost_access_log並以.txt結尾,pattern定義日誌內容格式,具體欄位表示可以查看tomcat官方文檔--> </Host> </Engine> </Service> </Server>
標籤功能如下:
server標籤:根項目,它代表整個容器,是Tomcat執行個體的頂層元素.由org.apache.catalina.Server介面來定義.它包含一個<Service>元素.並且它不能做為任何元素的子項目.(其直接子項目有3個)
Listener標籤:監聽器,用來管理Tomcat生命週期和全域資源
GlobalNamingResources標籤:配置系統的JNDI
Service標籤:該元素由org.apache.catalina.Service介面定義,它包含一個<Engine>元素,以及一個或多個<Connector>,這些Connector元素共用用同一個Engine元素(其直接子項目2個)
Connector標籤:連接器,代表外部客戶之間的介面,將在一個指定的介面上偵聽客戶請求,將請求給Engine進行處理Connector之間的port不能重複,否則會報JVM BIND 連接埠號碼衝突的問題
Enger標籤:引擎,每個Service元素只能有一個Engine元素.元素處理在同一個<Service>中所有<Connector>元素接收到的客戶請求.由org.apahce.catalina.Engine介面定義.處理server中所有的客戶請求(其直接子項目3個)
Realm標籤:定義對當前容器內的應用程式訪問的認證,通過外部資源UserDatabase進行認證
Logger標籤:
Host標籤:它由Host介面定義.一個Engine元素可以包含多個<Host>元素.每個<Host>的元素定義了一個虛擬機器主機.它包含了一個或多個Web應用.虛擬機器主機處理一個特定的主機請求(其直接子項目2個)
Logger標籤:日誌和錯誤資訊
Context標籤:web應用組,它由Context介面定義.是使用最頻繁的元素.每個<Context元素代表了運行在虛擬機器主機上的單個 Web應用.一個<Host>可以包含多個<Context>元素.每個web應用有唯一的一個相對應的Context代表web應用自身.servlet容器為第一個web應用建立一個ServletContext對象.當一個web應用被初始化時,它將用自己的classLoader對象載入”web.xml“中定義的每個Servlet類。在<Context>元素中可以包含如下元素<Logger>, <Realm>, <Resource>, <ResourceParams>