tomcat7的配置文件server.xml解析
這里對(duì)tomcat7的server.xml文件進(jìn)行解釋一下,方便在分析啟動(dòng)源碼的時(shí)候理解Digester做的事情。
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.security.SecurityListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<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 name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="150" minSpareThreads="4"/>
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
Server
tomcat中Server代表一個(gè)tomcat實(shí)例,所以只會(huì)存在一個(gè)Server,而在配置文件中也是作為頂級(jí)元素出現(xiàn),代碼如下:
<Server port="8005" shutdown="SHUTDOWN"> 。。。 </Server>
- port,監(jiān)聽(tīng)shutdown命令的端口,-1表示禁用shutdown命令。
- shutdown,關(guān)閉tomcat的指令。
Listener
監(jiān)聽(tīng)器,用來(lái)監(jiān)聽(tīng)某些事件的發(fā)生。
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
VersionLoggerListener,啟動(dòng)時(shí)對(duì)tomcat,java,操作系統(tǒng)信息打印日志。
<Listener className="org.apache.catalina.security.SecurityListener" />
SecurityListener,啟動(dòng)tomcat時(shí),做一些安全檢查。
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
AprLifecycleListener,用來(lái)監(jiān)聽(tīng)Apache服務(wù)器相關(guān)的。
<Listener className="org.apache.catalina.core.JasperListener" />
JasperListener,Jasper 2 JSP 引擎,主要負(fù)責(zé)對(duì)更新之后的jsp進(jìn)行重新編譯。
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
JreMemoryLeakPreventionListener,防止內(nèi)存溢出的監(jiān)聽(tīng)器。
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
GlobalResourcesLifecycleListener,初始化定義在元素GlobalNamingResources下的全局JNDI資源
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
ThreadLocalLeakPreventionListener,防止ThreadLocal溢出監(jiān)聽(tīng)器。
GlobalNamingResources
GlobalNamingResources定義Server的全局JNDI資源??梢詾樗械囊鎽?yīng)用程序引用。
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
配置文件中定義了一個(gè)JNDI,名為UserDatabase,通過(guò)conf/tomcat-users.xml的內(nèi)容,來(lái)得到一個(gè)用于授權(quán)用戶的數(shù)據(jù)庫(kù),是一個(gè)內(nèi)存數(shù)據(jù)庫(kù)。
Service
<Service name="Catalina"> 。。。 </Service>
Server下面可以有多個(gè)Service,Service下面有多個(gè)Connector和一個(gè)Engine。這里默認(rèn)的Service名字為Catalina,下面有兩個(gè)Connector:Http和AJP。
- name,Service顯示的名稱,名字必須唯一。
Connector
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
上面是用來(lái)處理http請(qǐng)求的Connector。
- port,端口號(hào)8080。
- protocol,協(xié)議,http協(xié)議
- connectionTimeout,響應(yīng)的最大等待時(shí)間,20秒
- redirectPort,ssl請(qǐng)求會(huì)重定向到8443端口
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
上面是使用線程池,處理http請(qǐng)求。
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
上面處理ssl請(qǐng)求,端口是8443。
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
上面處理AJP請(qǐng)求,可以將tomcat和apache的http服務(wù)器一起運(yùn)行。
Engine
Engine是容器,一個(gè)Service中只包含一個(gè)Engine:
<Engine name="Catalina" defaultHost="localhost"> ... </Engine>
Engine下面可以包含一個(gè)多或者多個(gè)Host。Engine從http請(qǐng)求的頭信息中的主機(jī)名或者ip映射到真確的主機(jī)上。
- name,Engine的名字,需要唯一。
- defaultHost,默認(rèn)主機(jī)名
Cluster
集群相關(guān)的配置。tomcat支持服務(wù)器集群,可以復(fù)制整個(gè)集群的回話和上下文屬性,也可以部署一個(gè)war包到所有的集群上。
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
Realm
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
Realm是一個(gè)包含user、password、role的數(shù)據(jù)庫(kù),Realm可以定義在任何容器中。這里通過(guò)外部資源UserDatabase進(jìn)行認(rèn)證。
Host
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
Host虛擬主機(jī),定義在Engine下面,一個(gè)Engine下面可以有多個(gè)Host,在一個(gè)Host下面可以有多個(gè)Context。
- name,虛擬主機(jī)的網(wǎng)絡(luò)名稱,必須有一個(gè)host的名字和Engine的defaulHost一樣。
- appBase,虛擬主機(jī)應(yīng)用的根目錄,默認(rèn)是webapps。
- unpackWARs,在webapps目錄下的war文件是否應(yīng)該解壓。
- autoDeploy,值為true時(shí),tomcat會(huì)定時(shí)檢查appBase等目錄,對(duì)新的web應(yīng)用和Context描述文件進(jìn)行部署。
Value
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
Value在這里是閥門(mén)的意思,可以攔截http請(qǐng)求,可以定義在任何容器中。
SingleSignOn 是單點(diǎn)登錄,AccessLogValve是訪問(wèn)日志的記錄。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
tomcat中Servlet的工作機(jī)制詳細(xì)介紹
這篇文章主要介紹了tomcat中Servlet的工作機(jī)制詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-12-12
使用jenkins將項(xiàng)目部署到另一臺(tái)主機(jī)的過(guò)程
這篇文章主要介紹了使用jenkins將項(xiàng)目部署到另一臺(tái)主機(jī)的詳細(xì)過(guò)程,這這里手動(dòng)部署需要關(guān)閉防火墻,確保git命令存在,拉取部署的項(xiàng)目包,具體實(shí)例代碼跟隨小編一起看看吧2021-10-10
詳解用Tomcat服務(wù)器配置https雙向認(rèn)證過(guò)程實(shí)戰(zhàn)
本篇文章主要介紹了詳解用Tomcat服務(wù)器配置https雙向認(rèn)證過(guò)程實(shí)戰(zhàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
快速解決Tomcat重新配置后啟動(dòng)慢的問(wèn)題
這篇文章主要介紹了解決Tomcat重新配置后啟動(dòng)慢的問(wèn)題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
tomcat部署web應(yīng)用的4種方法總結(jié)(推薦)
本篇文章主要介紹了tomcat部署web應(yīng)用的方法,主要有4中方法,包括Tomcat自動(dòng)部署、控制臺(tái)進(jìn)行部署、增加自定義的Web部署文件、手動(dòng)修改%Tomcat_Home%\conf\server.xml文件來(lái)部署web應(yīng)用,有興趣的可以了解一下。2016-11-11
詳解如何通過(guò)tomcat的ManagerServlet遠(yuǎn)程部署項(xiàng)目
這篇文章主要介紹了詳解如何通過(guò)tomcat的ManagerServlet遠(yuǎn)程部署項(xiàng)目,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
Tomcat實(shí)現(xiàn)多域名訪問(wèn)詳解
這篇文章主要介紹了Tomcat多域名訪問(wèn)詳解,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11
Linux系統(tǒng)centos7.X安裝tomcat8的圖文教程
這篇文章主要介紹了Linux系統(tǒng)centos7.X安裝tomcat8的圖文教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04

