直播中
元素及其描述
Server
server.xml文件中最重要的元素.Server定義了一個Tomcat服務(wù)器.一般你不用對他擔(dān)心太多.Server元素能包含Logger和ContextManager元素類型
Logger
此元素定義一個Logger對象,每個Logger都有一個名字去標(biāo)識,也有一個紀(jì)錄Logger的輸出和冗余級別(描述此日志級別)和包含日志文件的路徑.通常有servlet的Logger(ServletContext.log()處),JSP和Tomcat運(yùn)行時的Logger.
ContextManager
ContextManager說明一套ContextInterceptor, RequestInterceptor , Context和他們的Connectors的配置及結(jié)構(gòu).ContextManager有幾個隨同提供的特性:
1. 用來紀(jì)錄調(diào)試信息的調(diào)試級別
2. webapps/,conf/,logs/和所有已定義的環(huán)境的基本位置.用來使Tomcat可以在TOMCAT_HOME外的其他目錄啟動.
3. 工作目錄的名字
ContextInterceptor&RequestInterceptor
這些偵聽器(interceptors)偵聽具體發(fā)生在ContextManager中的事件.例如,ContextInterceptor偵聽Tomcat的啟動及終止事件,RequestInterceptor監(jiān)視在它服務(wù)過程中用戶請求需要通過的不同階段.Tomcat的管理員不必知道太多關(guān)于偵聽器的知識;另外,開發(fā)者應(yīng)該知道這是如何在Tomcat中實(shí)現(xiàn)一個”全局”型的操作(例如安全性及每個請求日志)
Connector
Connector表示一個到用戶的聯(lián)接,不管是通過web服務(wù)器或直接到用戶瀏覽器(在一個獨(dú)立配置中).Connector負(fù)責(zé)管理Tomcat的工作線程和 讀/寫 連接到不同用戶的端口的 請求/響應(yīng).Connector的配置包含如下信息:
1.句柄類
2.句柄監(jiān)聽的TCP/IP端口
3.句柄服務(wù)器端口的TCP/IP的backlog.
稍后我們將在此文檔中描述如何配置Connector.
Context
每個Context提供一個指向你放置你Web項目的Tomcat的下屬目錄。每個Context包含如下配置:
1. Context放置的路徑,可以是與ContextManager主目錄相關(guān)的路徑.
2.紀(jì)錄調(diào)試信息的調(diào)試級別
3.可重載的標(biāo)志.開發(fā)Servlet時,重載更改后的Servlet,這是一個非常便利的特性,你可以調(diào)試或用Tomcat測試新代碼而不用停止或重新啟動Tomcat.要打開重載,把reloadable設(shè)為真即可.這雖花費(fèi)時間但可檢測所發(fā)生的變化;更重要的事,鑒于,在一個裝載類對象裝入一個新的servlet時,類裝載觸發(fā)器可能會擲出一些錯誤.為避免這些問題,你可以設(shè)置可重載為假,這將停止重載功能.
從另一個目錄中啟動Tomcat
作為缺省值將使用TOMCAT_HOME/conf/server.xml作為配置文件.缺省配置將使用TOMCT_HOME作為關(guān)系環(huán)境的基礎(chǔ).
使用 “-f/你的/目錄/server.xml”選項你可改變這種情況,使用另一個服務(wù)器配置文件和設(shè)置關(guān)系環(huán)境管理器的目錄屬性你需要在主目錄內(nèi)設(shè)置以下幾個文件:
Ø 一個 webapps/目錄(如果你已生成) – 所有war文件獎杯界壓倒此目錄而且所有子目錄將作為關(guān)系環(huán)境添加.
Ø conf/目錄 - 你可保存一個特殊的web.xml文件和其他配置文件
Ø logs/ - 所有日志文件將代替TOMCAT_HOME/logs/紀(jì)錄到此目錄中
Ø work/ - 關(guān)系環(huán)境的工作目錄
如server.xml中的ContextManager.home屬性有關(guān)聯(lián),將關(guān)聯(lián)到到當(dāng)前工作目錄.
web。xml
關(guān)于web。xml和web項目結(jié)構(gòu)(包括目錄服務(wù)及配置)的詳細(xì)描述可在Servlet API Spec的第9,10,14章中找到。
然而有一個與Tomcat有關(guān)的小“特性“與web.xml有關(guān)。Tomcat可以讓用戶通過將缺省的web.xml放入conf目錄中來定義所有關(guān)系環(huán)境的web.xml的缺省值.建立一個新的關(guān)系環(huán)境時,Tomcat使用缺省的web.xml文件作為基本設(shè)置和應(yīng)用項目特定的web.xml(放在應(yīng)用項目的WEB-INF/web.xml文件)來覆蓋這些缺省值.
設(shè)置Tomcat與Apache Web 服務(wù)器
服務(wù)器
到現(xiàn)在為止,我們未討論作為服務(wù)器擴(kuò)展的Tomcat,只討論了作為獨(dú)立運(yùn)行的服務(wù)器.但有一些問題需要說明:
1. 當(dāng)處理靜態(tài)頁面時,Tomcat不如Apache迅速.
2. Tomcat不象Apache一樣可配置.
3. Tomcat不象Apache一樣強(qiáng)壯.
4. 有很多網(wǎng)站已在某一特定web server上投入了很長時間,例如,使用CGI腳本/Server API模組/perl/php…我們不能假設(shè)這些遺留下來的東西都會被丟棄.
基于以上原因,一個現(xiàn)實(shí)的網(wǎng)站建議使用一個Web服務(wù)器,如Apache,為網(wǎng)站的靜態(tài)頁面請求提供服務(wù),并使用Tomcat作為一個Servlet/JSP插件.
我們不準(zhǔn)備深入的討論每個不同的配置,我們將:
1. 涵蓋Web服務(wù)器的基本行為
2. 解釋需要何種配置
3. 在Apache上的實(shí)例
Web 服務(wù)器操作
簡單說來,web服務(wù)器總是等待來自客戶端的HTTP請求。當(dāng)請求到達(dá)時,服務(wù)器會提供一切必要的內(nèi)容來滿足此請求。加入一個Servlet容器某種程度上會改變此行為。但服務(wù)器仍需處理如下因素:
載入servlet容器接口庫并初始化(處理請求之前)。
當(dāng)收到一個請求時,檢查是否屬于某Servlet,如是,則接口庫接收此請求并處理。
另一方面,接口庫需要知道他將服務(wù)某種請求,通常是基于請求的URL的某種模式和將此請求導(dǎo)向何處。
當(dāng)用戶想要設(shè)置使用虛擬主機(jī)的配置時,事情會變得更加復(fù)雜,或者想多個開發(fā)者在一個服務(wù)器上進(jìn)行開發(fā)但使用不同的Servlet容器的JVMs。以下我們將討論這兩個問題。
必需進(jìn)行的配置
應(yīng)該考慮的是最明顯的配置是servlet URL具有對servlet容器中的servlet具有表示的責(zé)任。很明顯,你必須知道傳遞什么到Servlet容器。我們?nèi)孕杼峁└郊拥呐渲庙椖康絯eb-server或servlet-container的結(jié)合體中.
l 考慮到Tomcat進(jìn)程是否可取得,我們?nèi)孕杼峁┡渲煤蚑omcat正在監(jiān)聽的TCP/IP 主機(jī)名/端口號。
l 需要告知web服務(wù)器接口庫的位置(因此我們可以在起始時裝入)
l 需要設(shè)置接口內(nèi)部信息如將日志記錄在何處和如何紀(jì)錄,等等。
所有此類信息必須出現(xiàn)在web服務(wù)器配置里或被接口使用的私有配置文件中。下面將講述如何在Apache中如何實(shí)現(xiàn)這些配置。
Apache上的實(shí)現(xiàn)
這一部分演示如何配置Apache與Tomcat一起工作;并試圖解釋深入到可能會用到的配置規(guī)范。在jserv 安裝頁上可找到其他信息。