1. 程式人生 > >tomcat配置檔案server.xml含義說明

tomcat配置檔案server.xml含義說明

tomcat的配置檔案一般都在conf資料夾裡,主要有server.xml,context.xml,tomcat_user.xml,web.xml四個常用配置檔案,server.xml主要是伺服器設定的,例如埠設定,路徑設定。
下面對server.xml中tomcat的預設配置進行說明,瞭解含義之後,就可以根據自己的實際情況進行修改。
各元件關係圖:
<Server port="8005" shutdown="SHUTDOWN">
<Server>

Server即Catalina servlet元件,它是server.xml的最外層元素。

port="8005"——指定8005埠負監聽tomcat的請求。若設定為-1,則禁止通過埠關閉Tomcat,同時shutdown.bat也不能使用。

shutdown="SHUTDOWN"——收到字串"SHUTDOWN"表示關閉,修改shutdown的值,對shutdown.bat無影響。

 <!-- Security listener. Documentation at /docs/config/listeners.html
  <Listener className="org.apache.catalina.security.SecurityListener" />
  -->
  <!--APR library loader. Documentation at /docs/apr.html -->
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
  <Listener className="org.apache.catalina.core.JasperListener" />
  <!-- Prevent memory leaks due to use of particular java/javax APIs-->
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

Listener即監聽器,負責監聽特定的事件,當特定事件觸發時,Listener會捕捉到該事件,並做出相應處理。Listener通常用在Tomcat的啟動和關閉過程。Listener可嵌在Server、Engine、Host、Context內。

className=""——指定實現org.apache.catalina.LifecycleListener介面的類。

 <GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
    <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>

GlobalNamingResources用於配置JNDII(Java Naming and Directory Interface,Java命名和目錄介面)。

<Service name="Catalina">
</Service>

Service包裝ExecutorConnectorEngine,以組成一個完整的服務。

className——指定實現org.apache.catalina. Service介面的類,預設值為org.apache.catalina.core.StandardService。

name———Service的名字。

Server可以包含多個Service元件。

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
Connector是Tomcat接收請求的入口,每個Connector有自己專屬的監聽埠。

port:"8080"——Connector監聽客戶服務的埠:8080。

protoco="HTTP/1.1"——Connector使用的協議(HTTP/1.1或AJP/1.3)。

connectionTimeout="20000"——每個請求的最長連線時間20000ms。

redirectPort="8443"——伺服器正在處理Http請求時,為收到的SSL(Secure Sockets Layer 安全套接層)處理重定位埠:8443。

<Engine name="Catalina" defaultHost="localhost">
</Engine>
Service內必須包含一個Engine元件,Service包含一個或多個Connector元件,Service內的Connector共享一個Engine。
Engine負責處理Service內的所有請求。它接收來自Connector的請求,並決定傳給哪個Host來處理,Host處理完請求後,將結果返回給EngineEngine將結果返回給Connector。

name:"Catalina"——Engine的名字。

defaultHost="localhost"——指定預設處理請求的虛擬主機名:localhost。要求和Host name定義一致。
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
       resourceName="UserDatabase"/>

Realm可以理解為包含使用者、密碼、角色的”資料庫”。Tomcat定義了多種Realm實現:JDBC Database Realm、DataSource Database Realm、JNDI Directory Realm、UserDatabase Realm
className:""——指定Realm 使用的類名,此類必須實現org.apache.catalina.Realm 介面
 <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
</Host>

Host負責管理一個或多個Web專案.
name="localhost"——指定預設虛擬主機名:localhost。appBase="webapps"——預設Web原始碼存放目錄,可以是war檔案或目錄。(絕對路徑、相對路徑均可)unpackWARS="true"——是否自動將war檔案解壓,true-自動解壓,false-直接從WAR檔案執行Web專案。autoDeploy="true"——是否開啟自動部署。設為true,Tomcat檢測到appBase有新新增的Web專案時,會自動將其部署。其他屬性:

startStopThreads-執行緒池內的執行緒數量。Tomcat啟動時,Host提供一個執行緒池,用於部署Web專案。

startStopThreads為0,並行執行緒數=系統CPU核數。

startStopThreads為負數,並行執行緒數=系統CPU核數+startStopThreads,如果(系統CPU核數+startStopThreads)小於1,並行執行緒數設為1。

startStopThreads為正數,並行執行緒數= startStopThreads。

startStopThreads預設值為1。

startStopThreads為預設值時,Host只提供一個執行緒,用於部署Host下的所有Web專案。如果Host下的Web專案較多,由於只有一個執行緒負責部署這些專案,因此這些專案將依次部署,最終導致Tomcat的啟動時間較長。此時,修改startStopThreads值,增加Host部署Web專案的並行執行緒數,可降低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的攔截器,而我們常用filter為專案內的攔截器。Valve可以用於Tomcat的日誌、許可權等。Valve可嵌在Engine、Host、Context內。

className=""——指定Valve 使用的類名,如用org.apache.catalina.valves.AccessLogValve 類可以記錄應用程式的訪問資訊。

directory="logs"——指定log 檔案存放的位置。

prefix=""——指定log 檔案的字首。

suffix=""——指定log 檔案的字尾。

pattern=""——有兩個值,common 方式記錄遠端主機名或ip 地址,使用者名稱,日期,第一行請求的字串,HTTP 響應程式碼,傳送的位元組數。combined 方式比common 方式記錄的值更多。