摘要:每個可以創建一個線程池,但是可以在以及其他組件之間共享,只要那些組件配置之后支持。線程池最大活躍線程數量,默認。如果配置了組件防止泄露的監聽器,它會通知停止環境。如果未指定此屬性,會使用一個私有的內部來提供線程池。
概覽
Tomcat7作為Servlet/JSP容器,它的全部行為的配置指令,包含在/conf/server.xml文件中,這個文件是一個無預定義結構的XML文件,所有的屬性大小寫敏感。
所有的系統屬性變量都配置在catalina.properties文件中。
所有的配置元素分為以下主要幾類:
Server是整個配置文件的根元素。
Service代表了一組Connectors,這些Connectors關聯到同一個引擎Engine。
Connectors代表了外部客戶端請求(并接收響應)到一個特定的Service的接口。
Containers代表了處理請求和并產生響應的組件。
Engine引擎為Service處理所有請求;而Host為特定的虛擬主機處理所有請求;Context為特定的web應用處理所有請求。
Nested Components,內置組件,代表可以內置到Container的元素。一些元素可以內置到任何Container中,而一些只能內置到Context中。
ServerServer代表整個Catalina servlet容器,所以在server.xml文件中,只能有一個Server元素。
屬性說明className:這個類必須是org.apache.catalina.Server的實現類,如果沒有指定類名,則使用標準實現。
address:這是等待關閉命令的TCP/IP地址,如果沒有指定,默認使用localhost。
port:這個端口是用于接收關閉服務的端口,可以設置為-1來禁用。
shutdown:這個命令字符串必須通過TCP/IP端口接收,才能關閉Tomcat。
Service - 一個或多個Service元素。
GlobalNamingResources - 配置Server的JNDI全局資源。
ServiceService元素是一個或多個Connector組件的結合體,這些Connector共享一個多帶帶的用于處理請求的Engine組件。一個或多個Service可能內置在一個Server元素中。
屬性說明className:這個類必須是org.apache.catalina.Service的實現類。
name:Service的展示名稱,如果使用標準的Catalina組件,這個名稱會包含在日志信息中。同一個Server下的每個Service的名稱必須唯一。
Executor 線程池Executor代表一個可以在Tomcat各組件中共享的線程池。每個Connector可以創建一個線程池,但是可以在Connector以及其他組件之間共享,只要那些組件配置之后支持Executor。
Executor必須實現org.apache.catalina.Executor類。
Executor是Service的內置元素。為了供Connector挑選,在server.xml文件中,Executor元素需要出現在Connector前面。
className:必須是org.apache.catalina.Executor的實現類,默認值為org.apache.catalina.core.StandardThreadExecutor。
name:名稱,要求唯一。
threadPriority:Executor線程優先級,默認為常量Thread.NORM_PRIORITY(5)。
daemon:線程是否應該為守護線程,默認為true。
namePrefix:Executor創建的線程名稱的前綴,每個線程名稱為namePrefix+線程編號。
maxThreads:線程池最大活躍線程數量,默認200。
minSpareThreads:一直保持存活的最低線程數量,默認25。
maxIdleTime:線程超時時間,單位毫秒。線程閑置時間超過這個數值會被關閉,除非活躍線程數量低于或等于minSpareThreads。默認值為60000ms(即1分鐘)。
maxQueueSize:等待執行的任務隊列的最大值,默認為整型最大值Integer.MAX_VALUE。
prestartminSpareThreads:是否預啟動空閑線程(minSpareThreads)。在Executor啟動時,是否啟動minSpareThreads。默認為false。
threadRenewalDelay:如果配置了組件ThreadLocalLeakPreventionListener(防止ThreadLocal泄露的監聽器),它會通知Executor停止Context環境。如果Context停了,池里的線程會重新創建。為了避免所有的線程同時重新創建,這個選項設置了任意兩個線程創建之間的延遲時間。單位毫秒ms,默認1000ms。如果為負值,線程不會被重新創建。
Connectors Http ConnectorHttp Connector是支持HTTP/1.1協議的Connector組件。它使Catalina變成一個單機Web服務器,并且使他可以執行Servlet和JSP。這個組件的一個特殊實例監聽著服務器的一個特定的TCP端口。
每個傳入的請求都會申請一個線程。如果多個請求同時進入,并且超過了當前可用線程數量,就會創建更多的線程,直到達到配置的最大線程數量。如果還有更多的同時請求,這些請求會被堆積在Connector創建的server socket中,直到最大值(acceptCount屬性)。任何更多的請求會收到"connection refused"錯誤,直到有可用的資源。
allowTrace:是否允許TRACE HTTP方法,默認false。
asyncTimeout:異步請求超時時間,單位毫秒,默認10000ms(10秒)。
enableLookups:如果想使用request.getRemoteHost()方法通過DNS查找遠程請求客戶端的真實的主機名,則設置為true。設置為false會跳過DNS查找,直接返回IP地址。DNS查找默認禁用。
maxHeaderCount:一個請求允許最大的請求頭數量。如果超出限制請求會被拒絕。如果為負值,無限制。默認值100。
maxParameterCount:GET和POST請求的參數(和值)的最大數量,超出的參數會被忽略。如果是0或者小于0,表示無限制。默認為10000。
maxPostSize:POST請求的最大字節數。如果為負,無限制。默認2097152字節(即2Mb)。
maxSavePostSize:POST請求的最大保存/緩沖字節數。-1表示無限制,0表示禁用保存/緩沖,默認為4096字節(4Kb)。
port:TCP端口,用于創建Server socket并等待進入連接。操作系統允許1個服務器監聽1個IP的1個指定端口。如果值為0,Tomcat會為這個Connector選擇一個隨機的空閑端口。
protocol:通信協議。默認為HTTP/1.1,這個協議使用自動切換機制來選擇阻塞式基于Java的Connector或者基于APR/native的Connector。如果要使用明確的協議,而不是自動切換機制選擇的協議,可以選擇下面的值:
org.apache.coyote.http11.Http11Protocol - 阻塞 Java connector
org.apache.coyote.http11.Http11NioProtocol - 非阻塞 Java connector
org.apache.coyote.http11.Http11AprProtocol - APR/native connector.
也支持自定義的實現。
proxyName:如果當前Connector使用代理配置,使用這個屬性指定Server名稱。這個Server名稱,可以調用request.getServerName()方法返回。
proxyPort:指定代理的Server端口。
redirectPort:如果當前Connector不支持SSL請求,但是收到的請求匹配web.xml中配置的security-constraint選項,要求使用SSL端口,那么Catalina會自動把請求轉發到這個指定端口。
scheme:給當前協議設置一個名字,這樣可以通過request.getScheme()方法獲得協議名詞,比如給SSL協議取名HTTPS。默認值為http。
URIEncoding:字符編碼。用于URI字節解碼,和URL %xx部分數據的解碼。默認為ISO-8859-1。
useIPVHosts:將該屬性設置為true會導致Tomcat使用收到請求的IP地址,來決定將請求發送到哪個主機。默認false。
標準實現屬性除了上面列出的常見的連接器屬性,標準的HTTP連接器(BIO,NIO和APR/native)都支持以下屬性。
acceptCount:當所有的可用線程都在使用中,傳入連接請求隊列的最大長度。當隊列滿時,任何請求都會被拒絕。默認100。
address:如果服務器有多個IP,這個屬性指定使用哪個IP地址用于監聽端口。默認使用與服務器關聯的全部IP地址。
compressableMimeType:HTTP壓縮的元數據類型,參數可以使用逗號間隔。默認為text/html,text/xml,text/plain,text/css,text/javascript,application/javascript。
compression:為了節省服務器帶寬,Connector可以使用HTTP/1.1 GZIP壓縮。
on:允許壓縮,這回引起文本數據被壓縮。
off:禁用壓縮。
force:強制在所有情況下壓縮。
某整數:壓縮前的最小字節量,否則不壓縮。
默認為false。
compressionMinSize:當compression設置為on,指定壓縮前的最小數據量。默認為2048。
connectionTimeout:連接超時時間。-1表示無限制。默認值60000ms(60秒)。但server.xml默認配置為20000。
disableUploadTimeout:是否禁用上傳超時時間,開啟后,上傳數據的連接使用多帶帶的超時時間。
connectionUploadTimeout:上傳數據時,連接超時時間。
executor:指向Executor元素的引用。如果設置了這個元屬性,并且對應的Executor存在,Connector將使用這個Executor,而其他所有線程相關屬性將被忽略。如果未指定此屬性,Connector會使用一個私有的、內部Executor來提供線程池。
executorTerminationTimeoutMillis:在關閉Connector之前,那個私有的、內部Executor等待請求處理線程的終結的超時時間。BIO Connector默認值為0ms。NIO和APR/native Connector默認值為5000ms。
keepAliveTimeout:長連接超時時間。Connector在關閉連接之前,會等待另一個HTTP請求的時間。默認值是connectionTimeout的屬性值。-1無超時時間。
maxKeepAliveRequests:HTTP請求最大長連接數量。如果值為1,禁用長連接。設為-1,無限制。默認值為100。
maxConnections:在任何給定的時間服務器接收并處理的最大連接數。當這個數字已經達到了,服務器將不會接受任何連接,直到連接的數量降到低于此值。基于acceptCount,操作系統可能仍然接收連接。
maxHttpHeaderSize:請求頭和響應頭的最大字節數。默認8192(8Kb)
maxThreads:最多同時處理的請求的最大線程數量,這決定了同時處理請求的最大數量。默認200。
minSpareThreads:最小空閑線程數量。默認10。
socketBuffer:Socket輸出緩沖區大小。單位字節。-1表示禁用緩沖區。默認值9000字節。
SSLEnabled:是否開啟SSL加密傳輸。需要配置secure和scheme屬性。
特殊功能代理支持:如果Tomcat運行在一個代理服務器后面時,可以使用proxyName和proxyPort屬性。
SSL支持:通過設置SSLEnabled為true來開啟SSL支持。同時要設置scheme為https,設置secure為true,來傳遞正確的信息到servlet。
Containers ContextContext元素代表一個Web應用,此Web應用運行在一個特定的虛擬主機中。每個Web應用都基于WAR文件或者對應的解壓縮文件目錄。
你可以定義多個Context元素,每個Context必須在虛擬主機內有一個唯一的名稱,但Context路徑不需要是唯一的。一個Context名稱必須用0長度的字符串,作為虛擬主機默認的Web應用,用于處理其他與Context路徑不匹配的請求。
cookies:是否使用cookie,可以通過cookie鑒別session。默認true。設置為false,則無法使用cookie完成session鑒證,然后必須依賴于URL重寫。
docBase:應用程序文件的根目錄。如果應用程序不在Host元素的appBase路徑下,需要設置此屬性。
path:應用程序的訪問路徑(context path)。
reloadable:自動重新加載class和jar文件。設置為true,Catalina會監視/WEB-INF/classes/ 和/WEB-INF/lib目錄下的變動,如果檢測到變動就會自動重新加載應用程序。此功能非常有用但是不建議在生產環境使用。
特殊功能Access Log:訪問日志。可以要求Catalina為Engine、Host或Context處理的請求創建訪問日志,通過在這些元素中添加Valve元素,如下面這段配置:
... ...
PS:是Valve元素,不是Value。
EngineEngine代表處理與Service關聯的整個請求處理機制。它從一個或多個Connector接收并處理全部請求,并返回完整的響應信息給Connector,最終返回到客戶端。
Engine元素必須嵌入在Service元素內。
defaultHost:默認的主機名,它必須指向一個Host元素的name屬性。
name:Engine的邏輯名稱,用于日志和錯誤信息。如果在一個Server中使用多個Service元素,每個Engine必須使用唯一的名稱。
HostHost代表一個虛擬主機,它關聯了一個Tomcat服務器正在運行的的網絡名稱(如www.xxx.com)。很多情況下,系統管理員會關聯多個域名到這個虛擬主機和應用上。
Host都是嵌入到Engine元素中的,可以配置多個。在Host元素中,可以為嵌入Web應用的Context信息,并關聯到這個虛擬主機。
每個Engine中必須有一個Host名稱來匹配Engine的defaultHost屬性,即必須有一個Host作為Engine的默認主機。
屬性appBase:虛擬主機的應用程序根路徑。這是個文件路徑名,包含了部署到虛擬主機的應用程序。可以指定為一個絕對路徑,或者關聯到$CATALINA_BASE目錄的相對路徑。默認值為"webapps"。
name:一般是虛擬主機注冊到DNS的網絡名稱。必須有一個Host的name作為Engine的defaultHost。
Tomcatd的集群實現提供了session復制、Context屬性復制、和集群范圍的WAR包部署。
然而集群配置是相當復雜的,默認的配置對于大多數人是開箱可用的。
官網原文地址:http://tomcat.apache.org/tomc...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66898.html
摘要:已成為目前開發企業應用的最佳容器選擇之一。到安裝目錄文件中查找元素。 一、常見JavaWeb服務器 1、WebLogic:是BEA公司的產品、WebSphereAS:是IBM公司的產品、JBossAS:紅帽公司的產品,可以自行了解 2、Tomcat服務器: Sun公司在推出的小型Servlet/JSP調試工具的基礎上發展起來的一個優秀的Servlet容器,Tomca...
摘要:是一組和的結合體。相當于網絡通道,配置了通信協議。用于從外部接收請求,交給處理,然后對外返回響應。虛擬主機,配置了網絡名稱,應用程序路徑等,是的組成單元。我們部署的每個就是一個,每個應用相關的信息都配置在這個元素上。詳細說明見配置文件詳解 整理了一下Tomcat server.xml配置文件的元素概念和功能關系, Server是整個配置的根元素。 Service是一組Connecto...
閱讀 848·2021-11-25 09:43
閱讀 3681·2021-11-19 09:40
閱讀 882·2021-09-29 09:34
閱讀 1784·2021-09-26 10:21
閱讀 870·2021-09-22 15:24
閱讀 4188·2021-09-22 15:08
閱讀 3266·2021-09-07 09:58
閱讀 2658·2019-08-30 15:55