tomcat的server.xml详解
Tomcat服務器是由一系列可配置的組件構成,其核心組件是Catalina?? Servlet容器,它是所有其他Tomcat組件的頂層容器。Tomcat的組件可以在<CATALINA_HOME>/conf/server.xml文件中進行配置,每個Tomcat的組件在server.xml文件中對應一種配置元素.一下代碼以XML的形式展示了各種Tomcat組件之間的關系:
???????<Server>元素
??????? 代表了整個Catalina?? Servlet容器,它是Tomcat實例的頂層元素.可包含一個或多個<Service>元素.
????????<Service>元素---不同端口部署不同應用則復制多個Service
??????? 包含一個<Engine>元素,以及一個或多個<Connector>元素,這些<Connector>元素共享同一個<Engine>元素.
????????<Connector>元素
??????? 代表和客戶程序實際交互的組件,他負責接收客戶請求,以及向客戶返回響應結果.
????????<Engine>元素---虛擬主機
??????? 每個<Service>元素只能包含一個<Engine>元素.?? <Engine>元素處理在同一個<Service>中所有<Connector>元素接收到的客戶請求.
????????<Host>元素
??????? 一個<Engine>元素中可以包含多個<Host>元素.每個<Host>元素定義了一個虛擬主機,它可以包含一個或多個Web應用.
????????<Context>元素---同一端口部署多個應用則復制多個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
?
關于用tomcat部署多個應用的3種方法:
1.配置文件中使用多個Context元素。這種配置好處是這些應用公用Connector,也就是說訪問端口是一樣的,這樣就可以都部署在80下了。
這樣有一個要求,就是應用程序在設計的時候就支持Context,一些鏈接前面都先加上動態的應用名,而不是使用“/”這樣的絕對路徑。Context元素的path一定不要以“/”結尾,可以是""或者"/WEB1"這樣的。
?
2.配置文件中使用多個Service元素。這種配置可以解決應用程序不支持動態應用名的情況,使用不同端口訪問不同頁面。
不過這樣有時候也不是很順利,由于一個tomcat的jvm對一個jni類只允許load一次,你多個應用如果同時load了某個jni的類則會部署失敗。這種情況可以把這個類從項目里拿出來放到tomcat安裝目錄的lib下作為公用的。不過還是有點麻煩哈~
?
3.部署多個tomcat。這個一般是做集群的時候用的,不過你也可以用來部署多應用,只要調整下端口不沖突就行。
?
下面是server.xml文件的樣例:
1.???? 配置Server元素
??????? <Server>元素代表了整個Catalina???? Servler容器,它是Tomcat實例的頂層元素,由org.apache.catalina.Server接口來定義.<Server>元素中可以包含一個或者多個<Service>元素,但<Server>元素不能作為任何其他元素的子元素.范例代碼中定義的<Server>元素如下:
? ? ??? ?<Server???? port="8005"???? shutdown="SHUTDOWN"???? debug="0">
????????? 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">
????????? 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">??
????????? 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">??
????????? 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"> ??? ?
????????? 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>元素:
??????????<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"???? />??
????????? 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協議.
轉載于:https://www.cnblogs.com/beijingstruggle/p/5729688.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的tomcat的server.xml详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 随笔说明
- 下一篇: web app开发技巧总结