Tomcat 6 不建議將 context 設定在 server.xml 裡,因為 server.xml 在 Tomcat 啟動後就不能重新載入了!
Context 設定檔可以使用的位置:
- TOMCAT/conf/context.xml - 所有 webapp 均會使用。
- TOMCAT/conf/{EngineName}/{HostName}/context.xml.default - 該 Host 下所有 webapp 均會使用。
- TOMCAT/conf/{EngineName}/{HostName}/{ContextPath}.xml - 該 Host 下單一 webapp 專用, {ContextPath}即為 path,若為多層路徑,可以用 # 區隔,例如 tea#egg.xml,而 ROOT.xml 為該 Host 預設的 webapp。
- TOMCAT/webapps 裡的 War 檔或是解開的 webapp 裡若有 META-INF/context.xml,則會以該 War 檔名稱或者 webapp 名稱重新命名 context.xml 並複製到對應的 TOMCAT/conf/{EngineName}/{HostName} 下,但前提是
TOMCAT/conf/{EngineName}/{HostName} 裡無同名的 xml 存在。
經實測發現,若 context.xml 裡有設定 path 且與 War 檔名稱相同,則啟動 Tomcat 觸發複製後,並無法連到該路徑,唯有重新啟動 Tomcat 才可以;但是若 path 與 War 檔名稱不符,即使重新啟動也無法連到該路徑;甚至當 context.xml 沒有設定 path,也要重新啟動才行。 - TOMCAT/conf/server.xml 裡的 Host 下。
Context 常用的設定值:
- docBase - web app 所在位置,可以是目錄或者是 War 檔,一般是用絕對路徑,相對路徑只用在「相對於 Host 的 appBase 目錄」;docBase 只有在一種情況下可以不用設定,或說不應該設定,就是上面提到的 Context 使用位置的第 4 種,Tomcat 會依照 xml 名稱到 Host 設定的 appBase 裡找。
- path - 同一個 Host 裡的 path 必須唯一,若 path 為空表示預設的 web app;path 只有在上述 Context 使用位置的第 5 種需要設定,其餘均是參考 xml 的名稱。
- reloadable - 告知 Tomcat 監測 WEB-INF/classes 與 WEB-INF/lib 是否有變動,若有則重新載入該 web app,適用於開發階段,正式環境一定要關閉。
- cacheMaxSize - cache 靜態檔案的上限,預設為 10240(10 MB)。
- cacheObjectMaxSize - 最大為 cacheMaxSize 的 20 分之一,預設為 512。
- cacheTTL - cache 期限,預設是 5000(5 秒)。
- cachingAllowed - 是否啟用 cache。
<Context docBase="D:/.../springmvc312/src/main/webapp" reloadable="true" cachingAllowed="true" cacheMaxSize="51200" cacheObjectMaxSize="2560" cacheTTL="10000"> <Valve className="org.apache.catalina.valves.AccessLogValve" prefix="springmvc312_access_log." suffix=".txt" pattern="common"/> </Context>---
沒有留言:
張貼留言