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