Tomcat配置總共有兩步組成蕉斜,第一、編輯tomcat XML配置文件倍奢;第二、定義適當(dāng)?shù)沫h(huán)境變量垒棋。
Tomcat最重要的兩個(gè)配置文件為server.xml和web.xml卒煞,位于$CATALINA_BASE/conf目錄下。
1 Server.xml
server.xml文件是Tomcat的主配置文件叼架,并且負(fù)責(zé)在啟動(dòng)時(shí)指定Tomcat的初始配置畔裕,以及定義Tomcat啟動(dòng)和構(gòu)建的方式和順序。 server.xml文件的元素有五個(gè)基本類別:頂層元素乖订、連接器扮饶、容器、嵌套組件和全局設(shè)置乍构。 這些類別中的所有元素都有許多屬性甜无,可用于微調(diào)其功能。 最常見的情況是,如果您需要對(duì)Tomcat安裝進(jìn)行任何重大更改毫蚓,例如指定應(yīng)用程序端口號(hào)占键,則server.xml是要編輯的文件。
1.1 Server
此元素定義單個(gè)Tomcat服務(wù)器元潘,并且包含Logger和ContextManager配置元素畔乙。 此外,Server元素支持“port”翩概,“shutdown”和“className”屬性牲距。
port屬性用于指定Tomcat應(yīng)該偵聽哪些端口以進(jìn)行關(guān)閉命令。shutdown屬性定義要在指定端口上偵聽的命令字符串以觸發(fā)關(guān)閉钥庇。className屬性指定應(yīng)使用哪個(gè)Java類實(shí)現(xiàn)牍鞠。
<Server port="-1" shutdown="SHUTDOWN">
</Server>
1.2 Service
此元素可嵌套在Server元素中,用于包含共享同一Engine組件的一個(gè)或多個(gè)Connector組件评姨。 這個(gè)組件的主要功能是將這些組件定義為單個(gè)服務(wù)难述。
將在日志中顯示的服務(wù)的名稱使用Service元素的“name”屬性指定。
<Service name="Catalina">
</Service >
1.3 Connectors
一個(gè)connector(或多個(gè)connectors)嵌套在service標(biāo)簽中吐句,允許Catalina將來自這些端口的請(qǐng)求轉(zhuǎn)發(fā)到單個(gè)引擎組件進(jìn)行處理胁后。 Tomcat允許定義HTTP和AJP連接器。
Http Connector
基于HTTP協(xié)議嗦枢,負(fù)責(zé)建立HTTP連接攀芯。它又分為BIO Http Connector與NIO Http
Connector兩種,后者提供非阻塞IO與長連接Comet支持文虏。
AJP Connector
基于AJP協(xié)議侣诺,AJP是專門設(shè)計(jì)用來為tomcat與http服務(wù)器之間通信專門定制的協(xié)議,能提供較高的通信速度和效率氧秘。如與Apache服務(wù)器集成時(shí)年鸳,采用這個(gè)協(xié)議。
APR HTTP Connector
用C實(shí)現(xiàn)敏储,通過JNI調(diào)用的阻星。主要提升對(duì)靜態(tài)資源(如HTML、圖片已添、CSS、JS等)的訪問性能±乃郑現(xiàn)在這個(gè)庫已獨(dú)立出來可用在任何項(xiàng)目中更舞。Tomcat在配置APR之后性能非常強(qiáng)勁。
1.3.1 HTTP Connector**
此元素表示HTTP/1.1連接器坎吻,并為Catalina提供獨(dú)立的Web服務(wù)器功能缆蝉。 這意味著,除了執(zhí)行servlet和JSP頁面,Catalina能夠監(jiān)聽請(qǐng)求的特定TCP端口刊头。 定義的每個(gè)連接器表示Catalina應(yīng)偵聽HTTP請(qǐng)求的單個(gè)TCP端口黍瞧。 配置HTTP連接器時(shí),請(qǐng)密切注意“minSpareThreads”原杂, “maxThreads”和“acceptCount” 屬性印颤。 “maxThreads” 屬性特別重要,控制可處理超過可用線程數(shù)請(qǐng)求的最大數(shù)量穿肄。
將此值設(shè)置得過低會(huì)導(dǎo)致請(qǐng)求在服務(wù)器套接字中堆棧年局,這會(huì)在連接滿時(shí)開始拒絕連接。 全面的測試將幫助你避免這個(gè)問題咸产。
1.3.2 AJP Connector**
此元素表示能夠與AJP協(xié)議通信的連接器矢否。 這個(gè)元素的主要作用是幫助Tomcat與Apache的安裝集成。 你想要這個(gè)功能的最常見的原因是如果你打算使用Apache在Tomcat前面提供靜態(tài)內(nèi)容脑溢。 此技術(shù)旨在為動(dòng)態(tài)頁面生成和負(fù)載平衡釋放更多的功能僵朗,因此如果快速性能是您的應(yīng)用程序的關(guān)注點(diǎn),這是需要考慮的屑彻。AJP連接器也可以用于向Tomcat公開Apache的SSL處理功能衣迷。
1.4 Containers
Catalina使用這些元素將請(qǐng)求定向到正確的處理設(shè)備。
1.4.1 Engine
此元素與嵌套在Service元素中的一個(gè)或多個(gè)連接器結(jié)合使用酱酬,并負(fù)責(zé)處理與其父Service相關(guān)聯(lián)的所有請(qǐng)求壶谒。 Engine元素只能在嵌套在Service元素中時(shí)使用,并且在給定的Service元素中只允許一個(gè)Engine元素膳沽。請(qǐng)密切關(guān)注“defaultHost”屬性汗菜,該屬性定義負(fù)責(zé)為主機(jī)服務(wù)請(qǐng)求的主機(jī)元素服務(wù)器上未在server.xml中配置的名稱。 此屬性必須與嵌套在相關(guān)Engine元素中的一個(gè)Host元素的名稱匹配挑社。 此外陨界,使用“name”屬性為每個(gè)引擎元素分配唯一的邏輯名稱很重要。 如果server.xml文件中的單個(gè)Server元素包含多個(gè)Service元素痛阻,則需要為每個(gè)Engine元素分配唯一的名稱菌瘪。
<Engine name="Catalina" defaultHost="localhost">
</ Engine>
1.4.2 Host
此元素嵌套在Engine元素內(nèi),用于將服務(wù)器網(wǎng)絡(luò)名稱與Catalina服務(wù)器相關(guān)聯(lián)阱当。 如果有問題的虛擬主機(jī)向相關(guān)域的管理DNS注冊(cè)俏扩,則此元素將僅正常工作。
Host元素最有用的功能之一是它能夠包含嵌套的Alias元素弊添,這些元素用于定義應(yīng)解析到同一虛擬主機(jī)的多個(gè)網(wǎng)絡(luò)名稱录淡。
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="false" deployOnStartup="false">
</ Host>
1.4.3 Context
此元素表示單個(gè)Web應(yīng)用程序,并且包含用于將請(qǐng)求定向到適當(dāng)?shù)膽?yīng)用程序資源的路徑信息油坝。 當(dāng)Catalina接收到請(qǐng)求時(shí)嫉戚,它會(huì)嘗試將最長的URI與給定上下文的上下文路徑匹配刨裆,直到找到正確的元素為請(qǐng)求提供服務(wù)。 Context元素對(duì)于實(shí)用程序元素Loader彬檀,Manager帆啃,Realm,Resources和WatchedResource的每個(gè)元素最多可以有一個(gè)嵌套的實(shí)例窍帝。 盡管Tomcat允許您在“$CATALINA_BASE /conf /server.xml”中定義上下文努潘,但通常應(yīng)避免使用,因?yàn)檫@些配置設(shè)置需重新啟動(dòng)Tomcat盯桦,才可重新加載慈俯,這使得編輯上下文屬性的侵入性過大。
未完待續(xù)