Tomcat中server.xml配置詳解(2)

Tomcat中配置文件詳解

Server.xml配置文件說明,以及Tomcat組件的說明html

Tomcat服務器是由一系列能夠配置的組件構成,其中核心組件是Catalina Servlet,它是最頂層組件
Tomcat各組件是在server.xml(CATALINA_HOME\conf\server.xml)配置的。web

Tomcat各組件關係圖數據庫

1.Serverapache

Server即Catalina Servlet組件,它是server.xml的最外層元素tomcat

經常使用屬性

  • Address—Tomcat監聽shutdown命令的地址,默認爲localhost
  • className—指定實現org.apache.catalina.Server接口的類,默認值爲org.apache.catalina.core.StandardServer
  • port-Tomcat監聽shutdown命令的端口。設置爲-1,則禁止經過端口關閉Tomcat,同時shutdown.bat也不能使用
  • shutdown-經過指定的地址(Address)、端口(port)關閉Tomcat所需的字符串。修改shutdown的值,對shutdown.bat無影響

經過端口關閉Tomcat,能夠用telnet進行測試
安裝telnet
打開控制面板-程序-啓用或關閉Windows功能,勾上」Telnet服務器」、」Telnet客戶端」,點」肯定」服務器

安裝成功後,首先啓動Tomcat,而後在cmd下輸入telnet localhost 8005,而後輸入SHUTDOWN便可關閉Tomcatapp

2.Listenerwebapp

Listener即監聽器,負責監聽特定的事件,當特定事件觸發時,Listener會捕捉到該事件,並作出相應處理。Listener一般用在Tomcat的啓動和關閉過程。Listener可嵌在Server、Engine、Host、Context內
經常使用屬性:
className-指定實現org.apache.catalina.LifecycleListener接口的類jvm

3.GlobalNamingResources測試

GlobalNamingResources用於配置JNDI

4.Service

Service包裝Executor、Connector、Engine,以組成一個完整的服務
經常使用屬性:
className—指定實現org.apache.catalina. Service接口的類,默認值爲org.apache.catalina.core.StandardService
name—Service的名字
Server能夠包含多個Service組件

5.Executor

Executor即Service提供的線程池,供Service內各組件使用
經常使用屬性:
className-指定實現org.apache.catalina. Executor接口的類,默認值爲org.apache.catalina.core. StandardThreadExecutor
name-線程池的名字
daemon-是否爲守護線程,默認值爲true
maxIdleTime-總線程數高於minSpareThreads時,空閒線程的存活時間(單位:ms),默認值爲60000,即1min
maxQueueSize-任務隊列上限,默認值爲Integer.MAX_VALUE(2147483647),超過此值,將拒絕
maxThreads-線程池內線程數上限,默認值爲200
minSpareThreads-線程池內線程數下限,默認值爲25
namePrefix-線程名字的前綴。線程名字一般爲namePrefix+ threadNumber
prestartminSpareThreads-是否在Executor啓動時,就生成minSpareThreads個線程。默認爲false
threadPriority-Executor內線程的優先級,默認值爲5(Thread.NORM_PRIORITY)
threadRenewalDelay-重建線程的時間間隔。重建線程池內的線程時,爲了不線程同時重建,每隔threadRenewalDelay(單位:ms)重建一個線程。默認值爲1000,設置爲負則不重建

6.Connector

Connector是Tomcat接收請求的入口,每一個Connector有本身專屬的監聽端口
Connector有兩種:HTTP Connector和AJP Connector
經常使用屬性:
port-Connector接收請求的端口
protocol-Connector使用的協議(HTTP/1.1或AJP/1.3)
connectionTimeout-每一個請求的最長鏈接時間(單位:ms)
redirectPort-處理http請求時,收到一個SSL傳輸請求,該SSL傳輸請求將轉移到此端口處理
executor-指定線程池
若是沒設置executor,可在Connector標籤內設置maxThreads(默認200)、minSpareThreads(默認10)
acceptCount-Connector請求隊列的上限。默認爲100。當該Connector的請求隊列超過acceptCount時,將拒絕接收請求

7.Engine

Engine負責處理Service內的全部請求。它接收來自Connector的請求,並決定傳給哪一個Host來處理,Host處理完請求後,將結果返回給Engine,Engine再將結果返回給Connector
經常使用屬性:
name-Engine的名字
defaultHost-指定默認Host。Engine接收來自Connector的請求,而後將請求傳遞給defaultHost,defaultHost 負責處理請求
className-指定實現org.apache.catalina. Engine接口的類,
默認值爲org.apache.catalina.core. StandardEngine
backgroundProcessorDelay-Engine及其部分子組件(Host、Context)調用backgroundProcessor方法的時間間隔。backgroundProcessorDelay爲負,將不調用backgroundProcessor。
backgroundProcessorDelay的默認值爲10
注:Tomcat啓動後,Engine、Host、Context會啓動一個後臺線程,按期調用backgroundProcessor方法。backgroundProcessor方法主要用於從新加載Web應用程序的類文件和資源、掃描Session過時
jvmRoute-Tomcat集羣節點的id。部署Tomcat集羣時會用到該屬性,
Service內必須包含一個Engine組件
Service包含一個或多個Connector組件,Service內的Connector共享一個Engine

8.Host

Host負責管理一個或多個Web項目
經常使用屬性:
name-Host的名字
appBase-存放Web項目的目錄(絕對路徑、相對路徑都可)
unpackWARs-當appBase下有WAR格式的項目時,是否將其解壓(解成目錄結構的Web項目)。設成false,則直接從WAR文件運行Web項目
autoDeploy-是否開啓自動部署。設爲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

9.Context

Context表明一個運行在Host上的Web項目。一個Host上能夠有多個Context
將一個Web項目(D:\MyApp)添加到Tomcat,在Host標籤內,添加Context標籤


經常使用屬性:
path-該Web項目的URL入口。path設置爲」」,輸入http://localhost:8080便可訪問MyApp;path設置爲」/test/MyApp」,輸入http://localhost:8080/test/MyApp才能訪問MyApp
docBase-Web項目的路徑,絕對路徑、相對路徑都可
(相對路徑是相對於CATALINA_HOME\webapps)
reloadable-設置爲true,Tomcat會自動監控Web項目的/WEB-INF/classes/和/WEB-INF/lib變化,當檢測到變化時,會從新部署Web項目。reloadable默認值爲false。一般項目開發過程當中設爲true,項目發佈的則設爲false
crossContext-設置爲true,該Web項目的Session信息能夠共享給同一host下的其餘Web項目。默認爲false

10.Cluster

Tomcat集羣配置。(見Tomcat 8(三)Apache2.2.25+Tomcat8.0.3集羣配置和Tomcat 8(四)server.xml的Cluster標籤詳解)

11.Realm

Realm能夠理解爲包含用戶、密碼、角色的」數據庫」。Tomcat定義了多種Realm實現:JDBC Database Realm、DataSource Database Realm、JNDI Directory Realm、UserDatabase Realm等

12.Valve

Valve能夠理解爲Tomcat的攔截器,而咱們經常使用filter爲項目內的攔截器。Valve能夠用於Tomcat的日誌、權限等。Valve可嵌在Engine、Host、Context內

最後再來回顧一下Tomcat處理請求的流程圖

(request爲http://localhost:8080/examples/index.html)

如今,再來看看」Tomcat各組件關係圖」(文章開頭那張),能夠發現Server和Service充當的就是包裝的角色:Server包裝了Listener、GlobalNamingResources、Service;Service包裝了Executor、Connector、Engine

相關文章
相關標籤/搜索