Tomcat服務器配置參考
Host容器 |
 |
概述 |
Host元素代表一個虛擬主機,虛擬主機將服務器的網絡名(比如www.mycompany.com)和運行Catalinade的某個特定服務器聯系起來。為了生效,網絡名稱必須在管理你所在的Internet域的DNS服務器進行登記---請聯系你的網絡管理員。
在許多情況下,系統管理員可能希望為同一個虛擬主機或應用關聯多個網絡名稱(比如www.mycompany.com和company.com)。這可以利用下面討論的Host Name Alias特征來完成。
在Engine元素中可以嵌套一個或多個Host元素。在Host元素中可以嵌套context元素。在與每個Engine相關聯的所有Host中,必須有一個Host的名稱與Engine的defaultHost屬性匹配。
以下的描述使用變量$CATALINA_HOME來指Tomcat 5安裝的目錄。大多數的相對路徑都是以該目錄為基準。但是,通過設置CATALINA_BASE目錄,可以運行多個Tomcat 5實例,這時你應該使用$CATALINA_BASE來作為目錄基準,而不是使用$CATALINA_HOME。 |
屬性 |
公共屬性 |
所有Host的實現必須支持如下屬性:
屬性 |
描述 |
appBase |
虛擬主機的Applicaton Base目錄。這是在該虛擬主機上發布web應用的目錄路徑。你可以指定絕對路徑,或者使用相對于$CATALINA_HOME 的路徑。有關web應用的自動識別和發布的更多信息,請參考應用自動發布。 |
autoDeploy |
這個標志表示,在Tomcat運行的時候,放到appBase目錄下的新的web應用是否自動發布。缺省為true。這方面的更多信息參考應用自動發布 |
backgroundProcessorDelay |
這個 值代表在該host及其子容器(包括所有的wrappers)上調用backgroundProcess方法的延時,以秒為單位。如果延時值非負,子容器不會被調用,這意味著子容器使用自己的處理線程。如果該值為正,會創建一個新的線程。在等待指定的時間以后,該線程在Host及其子容器上調用backgroundProcess方法。Host使用后臺處理進行與web應用實時發布有關的操作。如果沒有指定,缺省值是-1,說明host依賴其所屬的Engine的后臺處理。
|
className |
實現的Java類名。該類必須實現org.apache.catalina.Host接口。如果沒有指定,使用標準實現(在下面定義) |
deployOnStartup |
這個標志表明這個host的web應用是否由host configurator 自動發布。缺省為true。這方面的更多信息參考自動應用發布。 |
name |
虛擬主機的網絡名稱,也就是在DNS服務器上注冊的名稱。嵌套在Engine的所有Host中,必須有一個Host的名字與Engine的defaultHost屬性相同。如果想為同一個虛擬主機指定多個網絡名稱,參考主機名別名。
| |
標準實現 |
Host的標準實現是org.apache.catalina.core.StandardHost。它還支持如下的附加屬性
屬性 |
描述 |
debug |
與Engine相關聯的Logger的調試信息的詳細程度。數字越大,輸出越詳細。如果沒有指定,缺省值為0。 |
deployXML |
如果不想使用Context XML配置文件來發布web應用,設為false。同時也失去了利用manager應用程序安裝web應用或者“.war”文件的能力(這些web應用或.war文件不在Host的配置基準目錄$CATALINA_HOME/conf/[engine_name]/[host_name] 下面)
web應用使用catalina的安全許可發布,如果需要讓不可信的用戶管理web應用,這個值可以設為false。缺省為true。 |
errorReportValveClass |
Host使用的錯誤報告valve的Java類名。這個valve的責任是輸出錯誤報告。設置這個值可以定制Tomcat產生的錯誤頁面的格式。這個類必須實現org.apache.catalina.Valve接口。如果沒有指定,使用缺省值
og.apache.catalina.valvees.ErrorReportValve. |
unpackWARs |
如果希望將位于appBase目錄下的WAR文件解壓縮成對應的目錄結構,設為true。如果希望直接從WAR文件運行web應用,設為false。更多信息參考應用自動發布。 |
workDir |
Host的web應用使用的臨時目錄的路徑。每個應用都有自己的子目錄,用于臨時的讀寫。如果在Context中設置了workDir屬性,它將會覆蓋Host的workDir屬性。如Servlet Specification中所述,通過servlet context的屬性javax.servlet.context.tempdir,這個目錄可以被servlet使用。如果沒有指定,使用$CATALINA_HOME/work 下面的合適的目錄。 | | |
嵌套組件 |
可以在Host元素中嵌套一個或者多個Context元素,每個Context元素代表這個虛擬主機下的一個不同的web應用。同時,你可以嵌套一個DefaultContext元素,用來定義后續發布的web應用的缺省值
可以在Host元素中選擇嵌套一個DefaultContext元素,用來定義自動發布的web應用的缺省特性。
下列元素可以嵌套在Host元素中,但至多只能嵌套一個實例:
- Logger - 配置一個logger,用來接收和處理Host的所有日志消息,以及這個Host的所有Context的日志消息(除非被低一級的Logger配置覆蓋)
- Realm -配置一個realm,Realm的用戶數據庫以及用戶角色被這個Host的所有Context共享(除非被低一級的Realm配置覆蓋)
|
專有特征 |
應用自動發布 |
如果使用標準的Host實現,當Catalina第一次啟動時,如果deployOnStartup屬性為true,tomcat會自動采取如下的步驟:
- 假定
$CATALINA_HOME/conf/[engine_name]/[host_name] 目錄中的任何XML文件都包含一個Context元素(以及它的相關的子元素),通常情況下,這個<Context>的docBase屬性指向一個web應用目錄的絕對路徑,或者是WAR文件的絕對路徑。
- 如果WAR文件對應的目錄不存在,則這個WAR文件會被自動展開,除非unpackWARs屬性設為false。在重新發布更新后的WAR文件時,重新啟動Tomcat之前一定要刪除展開后的目錄,這樣更新后的WAR文件才會被重新展開(如果使能了auto deployer,它會自動完成這項工作)
- application base目錄下的任何子目錄,如果包含/WEB-INF/web.xml文件,Tomcat認為這個一個展開后的web應用,會為這個目錄自動產生一個Context元素,即使這個目錄沒有在conf/server.xml文件中出現。產生的Context會使用DefaultContext中的屬性來配置。自動產生的Context的context路徑是“/”后面跟上目錄名,除非目錄名是ROOT,這種情況下context路徑是空字符串(“”);
除了啟動時候的自動發布以外,在Tomcat運行的時候,當新的XML 配置文件,WAR文件或者子目錄(包含新的web應用)放到appBase目錄下,或者當XML配置文件放到$CATALINA_HOME/conf/[engine_name]/[host_name]目錄 )的時候,該web應用被自動發布。auto deployer也負責跟蹤web應用的如下變化:
- 如果更新了WEB-INF/web.xml文件,會觸發web應用的重載;
- 如果WAR文件被更新,并且WAR文件已經展開,首先刪除展開的web應用,然后發布更新的WAR文件;
- 如果XML配置文件被更新,首先刪除該應用(但是不刪除任何展開以后的目錄),然后發布相關的web應用
|
主機名別名 |
在許多服務器環境中,多個網絡名稱可能指向同一個IP地址(比如,www.mycompany.com和company.com都指向192.168.1.1)。正常情況下,每個網絡名稱應該在conf/server.xml中對應一個Host元素,每個Host元素有自己的一套web應用。
但是,有些情況下,可能希望兩個或者更多網絡名稱解析到同一個虛擬主機上,運行相同的一套web應用。這種情況的典型用途是公司網站。用戶可以使用www.mycompany.com和company.com訪問同樣的內容和應用。
通過在Host元素中嵌套一個或者多個Alias元素,可以完成上述功能。
 |
 |
 |
 |
<Host name="www.mycompany.com" ...>
...
<Alias>mycompany.com</Alias>
...
</Host>
|
 |
 |
 |
 |
為了使這個策略生效,所有的網絡名稱必須在DNS服務器登記,指向運行Catalina實例的同一臺計算機。
|
生命期Listeners |
如果一個Java對象需要知道Context什么時候啟動,什么時候停止,可以在這個對象中嵌套一個Listener元素。該Listener元素必須實現了org.apache.catalina.LifecycleListener接口,在發生對應的生命期事件的時候,通知該Listener??梢园凑杖缦碌母袷脚渲眠@樣的Listener:
|
|
posted on 2006-02-16 17:05
java之海 閱讀(3049)
評論(0) 編輯 收藏