tomcat 7 doc筆記文章分類:Java編程中英互譯:terminology:術(shù)語。term:詞。
context指一個web application。
tomcat的主配置文件是/conf/server.xml。所有配置文件只在tomcat啟動時啟動,若要使啟動后的配置文件生效,需要重啟tomcat。
在運行tomcat前,請確保系統(tǒng)已經(jīng)配置好JAVA_HOME和CATALINA_HOME變量。
tomcat7運行在jdk6下。
全局(所有) context共享的lib可以放到$Catalina_home/lib下,例如jdbc驅(qū)動。
$context/META-INF/context.xml文件可以用來定義tomcat的一些特殊配置。
通過復(fù)制app文件夾或app.war到$Catalina_Home/webapps/下的方法,可以讓tomcat自動加載該app。該app的context path為app的文件名。
通過$catalina_home/webapps/Manager應(yīng)用可以在運行時動態(tài)布置app。
context代表一個app。早期的tomcat把context的配置放在$catalina_home/conf/server.xml下。雖然現(xiàn)在也可以這樣,但不建議。context應(yīng)該在以的其中一個地方配置$catalina_home/conf/[enginename]/[hostname]/context.xml。$catalina_home/webapps/[webappname]/META-INF/context.xml。
如果不為應(yīng)用配置context.xml文件,tomcat會使用默認的值配置這個context。
默認情況下,tomcat啟動時會先啟動有context.xml的應(yīng)用,然后再布置沒有context.xml文件的應(yīng)用,最后會解壓.war文件(舊的被解壓的.war目錄會被刪除)。
如果Host節(jié)點設(shè)置了autoDeploy屬性為true,即tomcat后臺線程會動態(tài)檢測應(yīng)用的改變實現(xiàn)動態(tài)布置。移入新的war文件、加入新的app、更改/web-inf/web.xml文件、更改對應(yīng)和context.xml文件都會使tomcat重新加載該應(yīng)用。
/manager模塊可以實現(xiàn)應(yīng)用的動態(tài)部署、刪除、重新加載、列舉在線應(yīng)用等功能。另外也可以查看session的狀況。
在/catalina_home/conf/tomcat-users.xml中可以配置/manager模塊的用戶。
realm是一個放置用戶名和密碼的集合。你可以實現(xiàn)自已的jdbc/datasource/等類形的realm。默認采用/catalina_home/conf/tomcat-users.xml中的realm。realm可以設(shè)置在engine/host/context下,在不同的地方設(shè)置,作用域也不同。
tomcat7的classloader各個app擁用自已的classloader,上一層是common,然后是system、bootstrap。
bootstrap裝載的是jre及jre/lib/ext下的類。system裝載的是$catalina_home/bin/bootstrap.jar和juli.jar里的類。common裝載的是$catalina_home/lib下的類。app裝載的是web/lib和class下的類。
類加載體系加載類的順序為jvm/systemclass loader、web-inf/classes、web-inf/lib/*.jar、$catalina_home/lib。
有一個默認的servlet,配置文件在$catalina_base/conf/web.xml下。作用是列舉目錄。這個配置文件還為一些文件配置了doctype及歡仰文件。
在server.xml的engine節(jié)點下可以配置多個不同的virtual host,不同的host可以設(shè)置不同的appBase(webapps目錄)。需要注意的是context節(jié)點的docbase不能為任何一個appbase相同。而ROOT的文件夾名應(yīng)用為根應(yīng)用。
tomcat7的架構(gòu)。最外層的是Server。Server代表整個容器。下一層是Service,Service是Server下的一個中間組件。再下一層是Engine。Engine是處理請求與響應(yīng)的管道。再下一層是Host,一個Engine可以有多個Host,而一個Host可以有一個網(wǎng)洛名及多個別名。再下一層是Context。一個Host下可以有多個Context。每個Context代表一個應(yīng)用。Connector在Service之下,與Engine并排。Connector處理與用戶的交互,它包含http connector/ajp connector等。簡單一點就是:Server-Service-(Conector)/(Engine-Host-Context)。
$Catalina_home/conf/server.xml的配置說明如下:
Server節(jié)點中的address屬性用于設(shè)置可發(fā)出關(guān)閉命令的地址,默認為localhost。port為接收關(guān)閉命令的端口,設(shè)置為-1可以關(guān)閉該功能,同時讓shutdown.bat失效。
Service下可以配置executor節(jié)點,其中屬性maxThreads用于設(shè)置最大線程池的大小,默認為200,minSpareThreads用于設(shè)置最小閑置線程,默認為25。maxIdleTime用于設(shè)置線程被關(guān)閉前的時間,默認為一分鐘。Service下配置executor節(jié)點是全局共享下。另外也可以為每個connector配置單獨的線程詞。
http connector中的maxPostSize用于設(shè)置最大post表單url大小,默認為2m,port用于設(shè)置請求端口,protocol用于設(shè)置協(xié)議,URIEncoding用于設(shè)置URL編碼,,默認為iso-8859-1。acceptCount用于設(shè)置最大的請求隊列,默認為100,超出該出求隊列的請求將會被拒絕。address用于在一臺機多個IP情況下只處理一部份IP的情況。默認情況下處理所有的IP。disableUploadTimeout用于設(shè)置是否在上傳文件時延長超時,默認為ture,executor用于設(shè)置該connector所有的executo,如果設(shè)置了,即executor的參數(shù)將復(fù)蓋該connector的參數(shù)。keepalivetimeout用于設(shè)置關(guān)閉一個connection前等待另一個請求的時間。maxHttpHeaderSize用于設(shè)置最大的http報頭,默認為8k,maxThreads用于設(shè)置最大的鏈接線程數(shù)。
context可以定義在$home/conf/server.xml中,但不建議這樣做。另外可以定義在$home/conf/Context.xml中。也可以定義在$home/conf/[enginename]/[hostname]/context.xml或者$home/conf/[enginename]/[hostname]/[contextname].xml
Context中的一些重要屬性:docBase用行設(shè)置應(yīng)用的目錄。path用于設(shè)置上下文路徑。reloadable用于設(shè)置是否在運行時監(jiān)測class/lib目錄的改變并重新另載。
可以在Context元素下增加一個<Value className/prefix/suffix/pattern來設(shè)置日志。
在web.xml中設(shè)置<context-param><param-name><param-value>和在context元素中設(shè)置<Parameter name是一樣的效果。
可以在context元素中增加元素<value className/allow/deny來限制IP。
Engine節(jié)點中也可以設(shè)置Value元素限制IP。
Host節(jié)點的元素意義如下:appBase用于設(shè)置默認的webapp目錄,放到該目錄下的所有app都會被加載。xmlBase用于設(shè)置加載context.xml文件的路徑。autoDeploy用于設(shè)置在運行時是否自動檢查有新的應(yīng)用被布置。deployOnStartup用于設(shè)置是否在tomcat啟動時自動加載應(yīng)用。name用于設(shè)置host的域名。
在Host節(jié)點下也可以增加Value節(jié)點用于設(shè)置log的位置和命名。
在host下可以設(shè)置多個<alias節(jié)點,用于設(shè)置多個域名。
Host同樣可以通過Value設(shè)置過慮IP。 |
|
來自: CevenCheng > 《Tomcat7》