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的啓動時間。

Tomcat配置多Host可參考此文:http://grass51.blog.51cto.com/4356355/1123400

<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 方式記錄的值更多。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章