tomcat配置文件server.xml詳解

Tomcat是Apache 軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發而成。由於有了Sun 的參與和支持,最新的Servlet 和JSP 規範總是能在Tomcat 中得到體現。因爲Tomcat 技術先進、性能穩定,而且免費,因而深受Java 愛好者的喜愛並得到了部分軟件開發商的認可,成爲目前比較流行的Web 應用服務器。


博客內容首發地址


server.xml文件所在的位置

~/Tomcat的安裝目錄/conf/server.xml

server.xml文件註釋

<!-- Server中的port監聽關閉tomcat的請求,shutdown指定向端口發送的命令串-->  
<Server port="8005" shutdown="SHUTDOWN" debug="0">  

   <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"  
             debug="0"/>  
   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"  
             debug="0"/>  

   <GlobalNamingResources>  
     <Environment name="simpleValue" type="<a href="http://lib.csdn.net/base/javase" class='replace_word' title="Java SE知識庫" target='_blank' style='color:#df3434; font-weight:bold;'>Java</a>.lang.Integer" value="30"/>  
     <Resource name="UserDatabase" auth="<a href="http://lib.csdn.net/base/docker" class='replace_word' title="Docker知識庫" target='_blank' style='color:#df3434; font-weight:bold;'>Container</a>"  
               type="org.apache.catalina.UserDatabase"  
        description="User database that can be updated and saved">  
     </Resource>  
     <ResourceParams name="UserDatabase">  
       <parameter>  
         <name>factory</name>  
   <!--value與Logger差不多prefix和suffix解釋一樣,className指定value使用的類名如:org.apache.catalina.values.AccessLogValve類可以記錄應用程序的訪問信息,directory指定log 文件存放位置,pattern有兩值,common方式記錄遠程主機名或ip地址,用戶名,日期,第一行請求的字符串,HTTP響應代碼,發送的字節數。 combined方式比common記錄更多-->  
         <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>  
       </parameter>  
       <parameter>  
         <name>pathname</name>  
         <value>conf/tomcat-users.xml</value>  
       </parameter>  
     </ResourceParams>  
   </GlobalNamingResources>  

   <Service name="Catalina">  

     <!-- Connector中的port創建服務器端的端口號,此端口監聽用戶端的請求  
maxThreads最大可以創建請求的線程數  
minSpareThreads服務啓動時創建的處理請求的進程數  
enableLookups如果爲true,則可以通過調用request.getRemoteHost()進行DNS查詢來得到遠程客戶端的實際主機名,若爲false則不進行DNS查詢,而是返回其ip地址  
redirectPort指定服務器正在處理http請求時收到一個SSL傳輸請求後重定向的端口號  
acceptCount指定當處理請求線程都被使用時,可以放入處理隊列的數目,超出將不進行處理  
connectionTimeout指定超時的時間數(毫秒)-->  
 <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/>

     <Connector port="8080"  
                maxThreads="150" minSpareThreads="25" maxSpareThreads="75"  
                enableLookups="false" redirectPort="8443" acceptCount="100"  
                debug="0" connectionTimeout="20000"  
                disableUploadTimeout="true" />  

     <Connector port="8009"  
                enableLookups="false" redirectPort="8443" debug="0"  
                protocol="AJP/1.3" />  
<!--Engine指定缺省的處理請求主機名,需要有一個與host元素的name屬性一致-->  
     <Engine name="Catalina" defaultHost="localhost" debug="0">  
       <!--logger中表示日誌信息className爲指定logger使用的類名此類必須實現 org.apache.catalina.Logger接口prefix指定log文件的前綴,suffix指定後綴,timestamp如果爲true 則log文件名中加入時間-->  
       <Logger className="org.apache.catalina.logger.FileLogger"  
               prefix="catalina_log." suffix=".txt"  
               timestamp="true"/>  
    <!--Realm存放用戶名密碼及role<a href="http://lib.csdn.net/base/mysql" class='replace_word' title="MySQL知識庫" target='_blank' style='color:#df3434; font-weight:bold;'>數據庫</a>,className指定Realm使用的類名必須實現org.apache.catalina.Realm接口-->  
       <Realm className="org.apache.catalina.realm.UserDatabaseRealm"  
                  debug="0" resourceName="UserDatabase"/>  
        <!--host中name是指定的主機名或ip,appBase應用程序目錄,unpackWARs如果爲true則會自動解壓war文件直接運行否則不解壓-->  
   <Host name="192.168.4.247" debug="0" appBase="D:/project/hbgs_dddu/webapps"  
        unpackWARs="true" autoDeploy="true"  
        xmlValidation="false" xmlNamespaceAware="false">  
   <!--logger中表示日誌信息className爲指定logger使用的類名此類必須實現 org.apache.catalina.Logger接口prefix指定log文件的前綴,suffix指定後綴,timestamp如果爲true 則log文件名中加入時間-->  
         <Logger className="org.apache.catalina.logger.FileLogger"  
                  directory="logs"   prefix="localhost_log.zx" suffix=".txt"  
             timestamp="true"/>  
   <!--Context一個web應用程序通常爲war文件,關於war的具體信息見servlet規範,docBase應用程序的路徑或者war 文件的存放路徑,path表示此web程序的url前綴,reloadable如果爲true,Tomcat會自動檢測應用程序的變化,自動裝載新的應用程序,那麼改變代碼將不用再次重新啓動tomcat-->  
   <Context path="" docBase="D:/project/hbgs_dddu/webapps" debug="0" reloadable="true"/>  
   </Host>  
     </Engine>  
   </Service>  
</Server>  

文件中單獨節點的含義以及相關屬性

Server元素:

是整個配置文件的根元素。表示整個Catalina容器。

屬性:

className:實現了org.apache.catalina.Server接口的類名,標準實現類是org.apache.catalina.core.StandardServer類。

Port:監聽用於關閉Tomcat服務器命令的端口號。

Shutdown:發送到端口上用於關閉Tomcat服務器的命令。

如:

<Serverport=”8005” shutdown=”SHUTDOWN”>

Connector元素

連接器,負責接收客戶的請求,以及向客戶端回送響應的消息。

HTTP連接器:

屬性:

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。

acceptCount:當所有的可能處理的線程都正在使用時,在隊列中排隊請求的最大數目。當隊列已滿,任何接收到的請求都會被拒絕,默認值爲10。

bufferSize:設由連接器創建輸入流緩衝區的大小,以字節爲單位。默認情況下,緩存區大的大小爲2048字節。

compressableMimeType:MIME的列表,默認以逗號分隔。默認值是text/html,text/xml,text/plain。

compression:指定是否對響應的數據進行壓縮。off:表示禁止壓縮、on:表示允許壓縮(文本將被壓縮)、force:表示所有情況下都進行壓縮,默認值爲off。

connectionTimeout:設置連接的超時值,以毫秒爲單位。默認值爲60000=60秒。

maxHttpHeaderSize:HTTP請求和響應頭的最大量,以字節爲單位,默認值爲4096字節。

maxKeepAliveRequest:服務器關閉之前,客戶端發送的流水線最大數目,默認值爲100。

maxSpareThreads:允許存在空閒線程的最大數目,默認值爲50。

minSpareThreads:設當連接器第一次啓協創建線程的數目,確保至少有這麼多的空閒線程可用。默認值爲4。

port:服務端套接字監聽的TCP端口號,默認值爲8080(必須)。
socketBuffer:設Socket輸出緩衝區的大小(以字節爲單位),-1表示禁止緩衝,默認值爲9000字節。

如:

<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:超時值。
如:

<!—Define an AJP1.3 Connector on port 8089-->
<Connector port=”8089” enableLookups=”false” redirectPort=”8443” protocol=”AJP/1.3” />

Engin元素

爲特定的Service處理所有的請示。每個Service只能包含一個Engine元素,它負責接收和處理此Service所有的連接器收到的請求,向連接發回響應,並最終顯示在客戶端。至少有一個元素,必須至少有一個屬性的名字與defaultHost指定的名字相匹配。

屬性:

className:實現org.apache.catalina.Engine接口,默認實現類爲org.apache.catalina.core.StandardEngine類。

defaultHost:默認主機名,值必須與的name值相匹配。這裏寫代碼片

name:指定Engine的邏輯名字(必須)。

jvmRoute:在負載勻衡中使用的標識符,必須唯一。

如:

<Engine name=”Cataline” defaultHost=”localhst”>

 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”>

配置虛擬主機:

<Host name=”xxx” appBase=”c:/test”>
    <Contentpath=”” docBase=”e:/abe”/>
</Host>

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,自動解壓war包。

workDir:爲WEB應用程序內部的Servlet指定臨時讀寫的目錄路徑名。如沒有設置,則Tomcat會在%CATALINA_HOME%/work目錄下提供一個合適的目錄。

如:

<Content path=/abcdocBase=”d:/xyzreloadable=”true” />

server.xml文件下載地址

中文註釋的server.xml文件

發佈了46 篇原創文章 · 獲贊 14 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章