本文將介紹Tomcat中主要的配置文件server.xml的一些標簽及其含義
Tomcat隸屬于Apache基金會咙俩,是開源的輕量級Web應用服務器,使用非常廣泛苔悦。server.xml是Tomcat中最重要的配置文件寺谤,server.xml的每一個元素都對應了Tomcat中的一個組件;通過對xml文件中元素的配置抖部,可以實現(xiàn)對Tomcat中各個組件的控制。因此议惰,學習server.xml文件的配置慎颗,對于了解和使用Tomcat至關重要。
安裝好tomcat后言询,在conf目錄下的server.xml默認會有一些配置
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener SSLEngine="on"
className="org.apache.catalina.core.AprLifecycleListener" />
<Listener className="org.apache.catalina.core.JasperListener" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource auth="Container" description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase"
pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector URIEncoding="UTF-8" connectionTimeout="20000"
port="80" protocol="HTTP/1.1" redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine defaultHost="localhost" name="Catalina">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase" />
</Realm>
<Host appBase="webapps" autoDeploy="true" name="localhost"
unpackWARs="true">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log."
suffix=".txt" />
</Host>
</Engine>
</Service>
以上的就是我們要逐一介紹的節(jié)點
Server節(jié)點
描述:Server代表一個Tomcat實例(一個JVM)所以server.xml中唯一一個最外層的元素(唯一)
功能:提供接口讓客戶端能訪問Server包含的Service俯萎,維護各個Service的生命周期等。
屬性:
- port: 指定端口監(jiān)聽關閉tomcat的請求倍试,設為-1可以禁掉該端口讯屈。
- shutdown: 關閉tomcat的發(fā)送的字符串
Service
描述:一個Server節(jié)點可以包含多個Service節(jié)點。不同的Service所監(jiān)聽的端口必須是不能重復的县习。
功能:一個Service可以理解為Engine和Connector的容器涮母。每個Connector通過一個特定的端口和協(xié)議接收入站請求交將其轉(zhuǎn)發(fā)至關聯(lián)的Engine進行處理谆趾。
屬性:
- name:指定service 的名字
會默認生成一個名為Catalina的Service
Service包含Connector和Engine兩個節(jié)點。
Connector
描述:一個Service可以包含多個Connector叛本,Connector有多種類型
- HTTP連接器
- SSL連接器
- AJP 1.3連接器
- proxy連接器
他用來表示客戶端和service之間的連接沪蓬。
HTTP connector 示例:
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="150" connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
SSL connector 示例:
<Connector port="8443"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" acceptCount="100" debug="0" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
AJP connector 示例:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
在默認的Service中包含兩個Connector:
分別是
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"redirectPort="8443"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
此時Tomcat監(jiān)聽的HTTP請求,協(xié)議是HTTP/1.1来候,端口是8080跷叉,轉(zhuǎn)發(fā)HTTPS請求到8443端口。
配置<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
客戶端就可以通過8009端口使用AJP協(xié)議訪問tomcat营搅。
AJP協(xié)議:
AJP協(xié)議負責和其他http服務器建立連接云挟,把tomcat服務器和其他http服務器連接時,就需要這個转质,之所以使用Tomcat和其他服務器集成园欣,是因為Tomcat可以用作Servlet/JSP容器,但是對靜態(tài)資源的處理速度較慢休蟹,不如Apache和IIS等HTTP服務器沸枯;因此常常將Tomcat與Apache等集成,前者作Servlet容器赂弓,后者處理靜態(tài)資源绑榴,而AJP協(xié)議便負責Tomcat和Apache的連接
功能:接收連接請求,創(chuàng)建Request和Response對象用于和請求端交換數(shù)據(jù)盈魁,然后分配線程讓Engine處理請求并把Request和Response對象傳遞給Engine
主要屬性屬性:
- port 指定服務器要創(chuàng)建的端口號翔怎,并在改端口監(jiān)聽客戶端的請求。
- minProcessors 服務啟動時創(chuàng)建處理請求的線程數(shù)目备埃。
- maxProcessors 最大可創(chuàng)建的處理請求線程數(shù)目姓惑。
- enableLookups true:進行DNS查詢得到遠程客戶端的實際主機名 false不進行查詢。s
- redirectPort 如果某連接器支持的協(xié)議是HTTP按脚,當接收客戶端發(fā)來的HTTPS請求時,則轉(zhuǎn)發(fā)至此屬性定義的端口
- connectionTimeout 等待客戶端發(fā)送請求的超時時間敦冬,單位為毫秒辅搬,默認為60000,即1分鐘脖旱;
Engine
描述:一個Service 對應一個Engine堪遂。
功能:一個Engine?從一個或者多個Connector中接收請求并處理,并將完成的響應返回給Connector萌庆。
主要屬性:
- defaultHost 默認host的名字溶褪。
- name 用于日志和錯誤信息,在Server中唯一
- startStopThreads 該Engine啟動子Host默認開啟的線程
Host
描述:一個Engine對應多個Host 践险,每個?Host代表Engine的一個虛擬主機猿妈。Host組件至少有一個吹菱,且其中一個的name必須與Engine組件的defaultHost屬性相匹配。
功能:運用來運行多個web應用彭则,負責?Web應用的生命周期鳍刷。
tip: 虛擬主機是一種在一個web服務器上服務多個域名的機制,對每個域名而言俯抖,都好象獨享了整個主機输瓜。實際上,大多數(shù)的小型商務網(wǎng)站都是采用虛擬主機實現(xiàn)的芬萍,這主要是因為虛擬主機能直接連接到Internet并提供相應的帶寬尤揣,以保障合理的訪問響應速度,另外虛擬主機還能提供一個穩(wěn)定的固定IP柬祠。
主要屬性:
- name 指定虛擬主機的主機名
- unpackWARs 是否將war文件解壓北戏,true為運行解壓war文件后燈文件夾,false直接運行war文件瓶盛。
- autoDeploy 是否自動部署
- appBase ?此虛擬Host的WebApp存放路徑最欠。
若只配置appBase,不配Context 的docBase(appBase和docBase二選一就可以了)惩猫,則appBase的每個文件夾里都代表一個應用.這個目錄下面的.war文件將被自動解壓縮并部署為應用芝硬。
Context
描述:一個Host可以對應多個Context,Context表示在特定的虛擬主機?上運行的一個Web?應用轧房。
功能:
主要屬性:
- path 指定Web應用的URL入口 (多指項目名)
- docBase 指定Web應用的文件路徑拌阴,可以是絕對路徑,也可以是相對路徑(相對該Context所在的Host的appBase屬性值)
- reloadable 若此屬性為true奶镶,tomcat在運行狀態(tài)下回監(jiān)視WEB-INF/classes和WEB-INF/lib目錄下class的文件改動迟赃,若有文件更新服務器會重載Web應用
例子:在默認Host標簽中添加Context
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b"/>
<Context path="/test" reloadable="true" docBase="/Users/WLW/tomcat/webapps2">
</Context>
</Host>
在/Users/WLW/tomcat/webapps2
下創(chuàng)建test.html。
訪問http://localhost:8080/test/test.html