Tomcat的服務器配置文件server.xml解析html
Tomcat服務器是由一系列可配置的組件構成,其核心組件是Catalina Servlet容器,它是全部其餘Tomcat組件的頂層容器。Tomcat的組件能夠在<CATALINA_HOME>/conf/server.xml文件中進行配置,每一個Tomcat的組件在server.xml文件中對應一種配置元素.一下代碼以XML的形式展現了各類Tomcat組件之間的關係:前端
<Server>元素web
表明了整個Catalina Servlet容器,它是Tomcat實例的頂層元素.可包含一個或多個<Service>元素.apache
<Service>元素緩存
包含一個<Engine>元素,以及一個或多個<Connector>元素,這些<Connector>元素共享同一個<Engine>元素.tomcat
<Connector>元素安全
表明和客戶程序實際交互的組件,他負責接收客戶請求,以及向客戶返回響應結果.服務器
<Engine>元素cookie
每一個<Service>元素只能包含一個<Engine>元素. <Engine>元素處理在同一個<Service>中全部<Connector>元素接收到的客戶請求.app
<Host>元素
一個<Engine>元素中能夠包含多個<Host>元素.每一個<Host>元素定義了一個虛擬主機,它能夠包含一個或多個Web應用.
<Context>元素
每一個<Context>元素表明了運行虛擬主機上的但個Web應用.一個<Host>元素中能夠包含多個<Context>元素.
Tomcat服務器是由一系列可配置的組件構成,Tomcat的組件能夠在<CATALINA_HOME>\conf\server.xml文件中進行配置,每一個Tomcat組件和server.xml文件中的一種配置元素對應.下面就一些經常使用的元素作了介紹.關於server.xml的更多信息,能夠參考Tomcat的文檔:
<CATALINA_HOME>/webapps/tomcat-docs/config/index.html
下面是server.xml文件的樣例:
1. 配置Server元素
<Server>元素表明了整個Catalina Servler容器,它是Tomcat實例的頂層元素,由org.apache.catalina.Server接口來定義.<Server>元素中能夠包含一個或者多個<Service>元素,但<Server>元素不能做爲任何其餘元素的子元素.範例代碼中定義的<Server>元素以下:
<Server port="8005" shutdown="SHUTDOWN" debug="0">
<Server>屬性含義:
--------------------------------------------------------------
className :指定實現org.apache.catalina.Server接口的類,默認值爲org.apache.catalina.core.StandardServer.
port :指定Tomcat服務器監聽shutdown命令的端口.終止Tomcat服務運行時,必須在Tomcat服務器所在的機器上發出Shutdown命令.該屬性是必須設定的.
shutdown :指定終止Tomcat服務器運行時,發給Tomcat服務器的shutdown監聽端口的字符串.該屬性是必須設定的.
2. 配置Service元素
<Service>元素由org.apache.catalina.Service接口定義,它包含一個<Engine>元素,以及一個或多個<Connector>元素,這些<Connector>元素共享一個<Engine>元素.
例如,在範例文件中配置了兩個<Service>元素
<Service name="Catalina">
<Service name="Apache">
第一個<Service>處理全部直接由Tomcat服務器接收的Web客戶請求,第二個<Service>處理由Apache服務器轉發過來的Web客戶請求.
<Service>屬性含義:
--------------------------------------------------------------
className :指定實現org.apache.catalina.Service接口的類,默認值爲org.apache.catalina.core.StandardService.
name :定義Service的名字.
3. 配置Engine元素
<Engine>元素由org.apahe.catalina.Engine接口定義. 每一個<Service>元素只能包括一個<Engine>元素. <Engine>元素處理在同一個<Service>中全部<Connector>元素接收到的客戶請求. 例如,在範例server.xml文件中配置了一下的<Engine>元素:
<Engine name="Catalina" defaultHost="localhost" debug="0">
<Engine>屬性含義:
--------------------------------------------------------------
className :指定實現org.apache.catalina.Engine接口的類,默認值爲org.apache.catalina.core.StandardEngine.
name :定義Engine的名字.
在<Engine>元素中能夠包含以下的子元素:
<Logger>
<Realm>
<Valve>
<Host>
4. 配置Host元素
<Host>元素由org.apache.catalina.Host接口定義.一個<Engine>元素能夠包含多個<Host>元素.每一個<Host>元素定義了一個虛擬主機,它能夠包含一個或多個Web應用. 例如,在樣例server.xml中配置瞭如下<Host>元素:
<Host name="localhost" debug="0" appBase="webapps"
unpackWARs="true" autoDeploy="true">
以上代碼定義了一個名爲localhost的虛擬主機,Web客戶訪問它的URL爲: http://localhost:8080/
<Host>屬性含義:
--------------------------------------------------------------
className :指定實現org.apache.catalina.Host接口的類,默認值爲org.apache.catalina.core.StandardHost.
appBase :指定虛擬主機的目錄,能夠指定絕對目錄,也能夠指定相對於<CATALINA_HOME>的相對目錄. 若是此項沒有設定,默認值爲<CATALINA_HOME>/webapps.
unpackWARs :若是此項設爲true,表示將把Web應用的WAR文件先展開爲開放目錄結構後再運行.若是設爲false,將直接運行WAR文件.
autoDeploy :若是此項設爲true,表示當Tomcat服務器處於運行狀態時,可以監測appBase下的文件,若是有新的Web應用加入進來,會自動發佈這個Web應用.
alias :指定虛擬主機的別名,能夠指定多個別名.
deployOnStartup :若是此項設爲true,表示Tomcat服務器啓動時會自動發佈appBase目錄下的全部Web應用,若是Web應用在server.xml中沒有相應的<Context>元素,將採用Tomcat默認的Context. deployOnStartup的默認值爲true.
name :定義虛擬主機的名字.}
在<Host>元素中能夠包含以下的子元素:
<Logger>
<Realm>
<Valve>
<Context>
5. 配置Context元素
<Context>元素由org.apache.catalina.Context接口定義. <Context>元素是使用最頻繁的元素. 每一個<Context>元素表明了運行在虛擬主機上的單個Web應用. 一個<Host>元素中能夠包含多個<Context>元素. 例如, 在樣例server.xml文件中配置瞭如下<Context>元素:
<Context path="/sample" docBase="sample" debug="0" reloadable="true">
<Context>屬性含義:
--------------------------------------------------------------
className :指定實現org.apache.catalina.Context接口的類,默認值爲org.apache.catalina.core.StandardContext.
path :指定訪問該Web應用的URL入口.
docBase :指定Web應用的文件路徑.能夠給定絕對路徑,也能夠給定相對於Host的appBase屬性的相對路徑. 若是Web應用採用開放目錄結構,那就指定Web應用的根目錄;若是Web應用是個WAR文件,那就指定WAR文件的路徑.
reloadable :若是這個屬性設爲true,Tomcat服務器在運行狀態下會監視在WEB-INF/class和WEB-INF/lib目錄下CLASS文件的改動.若是檢測到有calss文件被更新,服務器會自動從新加載Web應用.
cookies :指定是否經過Cookie來支持Session,默認爲true.
useNaming :指定是否支持JNDI,默認爲true.
在<Context>元素中能夠包含以下的子元素:
<Logger>
<Realm>
<Valve>
<Resource>
<ResourceParams>
6. 配置Connector元素
<Connector>元素由org.apache.catalina.Connector接口定義.<Connector>元素表明與客戶程序實際交互的組件,它負責接收客戶的請求,以及向客戶返回響應結果.例如, 在樣例server.xml文件中配置了兩個<Connector>元素:
prot="8009"
enableLookups="false" redirectPort"8443" debug="0"
protocol="AJP/1.3"/>
第一個<Connector>元素定義了一個HTTP Connector,它經過8080端口接收HTTP請求;
第二個<Connector>元素定義了一個JK Connector,它經過8009端口接收由其餘HTTP服務器(如Apache服務器)轉發過來的客戶請求.
全部的<Connector>元素都具備一些共同的屬性,這些屬性以下: <Connector <Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" />
<Connector>屬性含義(共同屬性):
--------------------------------------------------------------
className :指定實現org.apache.catalina.Connector 接口的類,默認值爲org.apache.catalina.core.StandardConnector.
enableLookups :若是設爲true,表示支持域名解析,能夠把IP地址解析爲主機名.Web應用調用request.getRemostHost方法將返回客戶的主機名.該屬性默認值爲true.
redirectPort :指定轉發端口.若是當前端口只支持non-SSL請求,在須要安全通訊的場合,將把客戶請求轉發到基於SSL的redirectPort的端口.
HttpConnector的屬性描述以下:
--------------------------------------------------------------
calssName :指定實現org.apache.catalina.Connector接口的類,默認值爲org.apache.coyote.tomcat5.CoyoteConnector.
enableLookups :同上.
redirectPort :同上.
prot :設定TCP/IP斷口號,默認爲8080.
address :若是服務器有兩個以上IP地址,該屬性能夠設定端口監聽的IP地址,默認狀況下,端口會監聽服務器上全部IP地址.
bufferSize :設定由端口建立的輸入流的緩存大小,默認值爲2048byte.
protocol :設定HTTP協議,默認值爲HTTP/1.1.
maxThreads :設定處理客戶請求的線程的最大數目,這個值也決定了服務器能夠同時響應客戶請求的最大數目,默認值爲200.
acceptCount :設定在監聽端口隊列中的最大客戶請求數,默認值爲10. 若是隊列已滿,客戶請求將被拒絕.
connectionTimeout :定義創建客戶鏈接超時的時間,以毫秒爲單位.若是設置爲-1,表示不限制創建客戶鏈接的時間.
JK Connector 的屬性以下:
--------------------------------------------------------------
className :指定實現org.apache.catalina.Connector接口的類,默認值爲org.apache.coyote.tomact5.CoyoteCnnector.
enableLookups :同上.
redirectPort :同上.
port :設定AJP端口號.
protocol :必須設定爲AJP/1.3協議