Tomcat:server.xml檔案詳解
一、server.xml檔案介紹
1.server.xml作用
Server.xml配置檔案用於對整個容器進行相關的配置。
2.server.xml檔案的配置元素列表
<Server>:是整個配置檔案的根元素。表示整個Catalina容器。
<Connector>:聯結器,負責接收客戶的請求,以及向客戶端回送響應的訊息。
<Engine>:為特定的Service處理所有的請示。每個Service只能包含一個Engine元素,它負責接收和處理此Service所有的聯結器收到的請求,向連線發回響應,並最終顯示在客戶端。<Engine>至少有一個<Host>元素,必須至少有一個<Host>屬性的名字與defaultHost指定的名字相匹配。
<Host>:表示一個虛擬主機,為特定的虛擬主機處理所有請求
<context>:一個WEB應用程式,處理當前WEB應用程式的所有請求,每一個<Context>必須使用唯一的上下文路徑。
<Logger>:表示日誌,除錯和錯誤資訊。
<Realm>:表示存放使用者名稱,密碼及role 的資料庫。
<Valve>:功能與Logger 差不多,其prefix 和suffix 屬性解釋和Logger 中的一樣。
回到頂部
二、server.xml配置元素詳解
1.<Server>元素
作用:是整個配置檔案的根元素。表示整個Catalina容器。
屬性:
className:實現了org.apache.catalina.Server介面的類名,標準實現類是org.apache.catalina.core.StandardServer類。
Port:Tomcat伺服器監聽用於關閉Tomcat伺服器的命令(必須)
Shutdown:傳送到埠上用於關閉Tomcat伺服器的命令。
示例:<Server port ="8005" shutdown ="SHUTDOWN" />
2.<Connector>元素
作用:聯結器,負責接收客戶的請求,以及向客戶端回送響應的訊息。
HTTP聯結器:
屬性:
allowTrace:是否允許HTTP的TRACE方法,預設為false
emptySessionPath:如果設定為true,使用者的所有路徑都將設定為/,預設為false。
enableLookups:呼叫request、getRemoteHost()執行DNS查詢,以返回遠端主機的主機名,如果設定為false,則直接返回IP地址。
maxPostSize:指定POST方式請求的最大量,沒有指定預設為2097152。
protocol:值必須為HTTP1.1,如果使用AJP處理器,該值必須為AJP/1.3
proxyName:如這個聯結器正在一個代理配置中被使用,指定這個屬性,在request.getServerName()時返回
redirectPort:如聯結器不支援SSL請求,如收到SSL請求,Catalina容器將會自動重定向指定的埠號,讓其進行處理。
scheme:設定協議的名字,在request.getScheme()時返回,SSL聯結器設為”https”,預設為”http”
secure:在SSL聯結器可將其設定為true,預設為false
URIEncoding:用於解碼URL的字元編碼,沒有指定預設值為ISO-8859-1
useBodyEncodingForURI:主要用於Tomcat4.1.x中,指示是否使用在contentType中指定的編碼來取代URIEncoding,用於解碼URI查詢引數,預設為false
xpoweredBy:為true時,Tomcat使用規範建議的報頭表明支援Servlet的規範版本,預設為false
acceptCount:當所有的可能處理的執行緒都正在使用時,在佇列中排隊請求的最大數目。當佇列已滿,任何接收到的請求都會被拒絕,預設值為10
bufferSize:設由聯結器建立輸入流緩衝區的大小,以位元組為單位。預設情況下,快取區大的大小為2048位元組
compressableMimeType:MIME的列表,預設以逗號分隔。預設值是text/html,text/xml,text/plain
compression:指定是否對響應的資料進行壓縮。off:表示禁止壓縮、on:表示允許壓縮(文字將被壓縮)、force:表示所有情況下都進行壓縮,預設值為off
connectionTimeout:設定連線的超時值,以毫秒為單位。預設值為60000=60秒
disableUploadTimeOut:允許Servlet容器,正在執行使用一個較長的連線超時值,以使Servlet有較長的時間來完成它的執行,預設值為false
maxHttpHeaderSize:HTTP請求和響應頭的最大量,以位元組為單位,預設值為4096位元組
maxKeepAliveRequest:伺服器關閉之前,客戶端傳送的流水線最大數目。預設值為100
maxSpareThreads:允許存在空閒執行緒的最大數目,預設值為50
minSpareThreads:設當聯結器第一次啟協建立執行緒的數目,確保至少有這麼多的空閒執行緒可用。預設值為4
port:服務端套接字監聽的TCP埠號,預設值為8080(必須)
socketBuffer:設Socket輸出緩衝區的大小(以位元組為單位),-1表示禁止緩衝,預設值為9000位元組
toNoDelay:為true時,可以提高效能。預設值為true
threadPriority:設JVM中請求處理執行緒優先順序。預設值為NORMAL-PRIORITY
示例:
<Connector port="8080"
maxHttpHeaderSize="8192"
maxThreads="150"
minSpareThreads="25"
maxSpareThreads="75"
enableLookups="false"
redirectPort="8443"
acceptCount="100"
connectionTimeout="20000"
disableUploadTimeout="true"/>
AJP聯結器:用於將Apache與Tomcat整合在一起,當Apache接收到動態內容請求時,通過在配置中指定的埠號將請求傳送給在此埠號上監聽的AJP聯結器元件。
屬性:
backlog:當所有可能的請求處理執行緒都在使用時,佇列中排隊的請求最大數目。預設為10,當佇列已滿,任何請求都將被拒絕
maxSpareThread:允許存在空閒執行緒的最大數目,預設值為50
maxThread:最大執行緒數,預設值為200
minSpareThreads:設當聯結器第一次啟動時建立執行緒的數目,確保至少有這麼多的空閒執行緒可用,預設值為4
port:服務端套接字的TCP埠號,預設值為8089(必須)
topNoDelay:為true時,可以提高效能,預設值為true
soTimeout:超時值
示例:
<Connector port="8089"
enableLookups="false"
redirectPort="8443"
protocol="AJP/1.3"/>
3.<Engine>元素
作用:為特定的Service處理所有的請示。每個Service只能包含一個Engine元素,它負責接收和處理此Service所有的聯結器收到的請求,向連線發回響應,並最終顯示在客戶端。<Engine>至少有一個<Host>元素,必須至少有一個<Host>屬性的名字與defaultHost指定的名字相匹配。
屬性:
className:實現org.apache.catalina.Engine介面,預設實現類為org.apache.catalina.core.StandardEngine類
defaultHost:預設主機名,值必須與<Service>的name值相匹配
name:指定Engine的邏輯名字(必須)
jvmRoute:在負載勻衡中使用的識別符號,必須唯一
示例:
<Engine name="Cataline" defaultHost="localhst"/>
4.<Host>元素
作用:表示一個虛擬主機,為特定的虛擬主機處理所有請求
屬性:
appBase:設定應用程式的基目錄,絕對路徑或相對於%CATALINA_HOME%的路徑名
autoDeploy:指示Tomcat執行時,如有新的WEB程式加開appBase指定的目錄下,是否為自動佈署,預設值為true
className:實現了org.apache.catalina.Host介面的類,標準實現類為org.apache.catalina.core.StandardHost類
deployOnStartup:Tomcat啟動時,是否自動部署appBase屬性指定目錄下所有的WEB應用程式,預設值為true
name:虛擬主機的網路名(必須)
標準Host實現類org.apahce.catalina.core.StandardHost支援的附加屬性:
deployXML:為false將不會解析WEB應用程式內部的context.xml,預設值為true
unPackWARs:虛擬主機指定臨時讀寫使用的目錄的路徑名,不設,Tomcat會在%CATALINA_HOME%/work目錄下提供一個合適的目錄。
示例:
<Host name="localhst"
appBase="webapps"
unpackWARs="true"
autoDeploy="true"
xmlValidation="false"
xmlNamespaceAware="false">
配置虛擬主機:
<Hostname="xxx" appBase="c:/test">
<Contentpath="xxx" docBase="e:/abe"/>
</Hostname>
5.<context>元素
作用:一個WEB應用程式,處理當前WEB應用程式的所有請求,每一個<Context>必須使用唯一的上下文路徑。
屬性:
className:實現了org.apache.catalina.Context介面的類,標準實現類org.apache.catalina.core.StandardContext類
cookies:是否將Cookie應用於Session,預設值為true
crossContext:是否允許跨域訪問,為true時,在程式內呼叫ServletContext.getContext()方法將返回一個虛擬主機上其它web程式的請求排程器。預設值為false,調 徑用getContext()返回為null
docBase:絕對路徑或相對於Host的appBase 屬性的相對路徑
privileged:為true,允許Web應用程式使用容器的Servlet
path:指定上下文路徑。一個虛擬主機中,上下文路徑必須唯一
reloadable:為true,Tomcat執行時,如果WEB-INF/classes和WEB-INF/lib目錄中有改變,Tomcat會自動重新載入該WEB應用程式。雖方便,但開銷也大,預設值為false,我們在呼叫可以開啟,釋出後再關閉。
cacheMaxSize:靜態資源快取最大值,以KB為單位,預設值為10240KB
cachingAllowed:是否允許靜態資源快取,預設為true
caseSensitive:預設為true,資原始檔名大小寫敏感,如果為false大小寫不敏感
unpackWAR:預設為true
workDir:為WEB應用程式內部的Servlet指定臨時讀寫的目錄路徑名。如沒有設定,則Tomcat會在%CATALINA_HOME%/work目錄下提供一個合適的目錄
示例:
<Content path="/abc" docBase="d:/xyz" reloadable="true"/>
-------------------------------------------------------------------------------------------------------------------------------
---------------------