锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
1.1 - Server
A Server element represents the entire Catalina servlet container. (Singleton)
1.2 - Service
A Service element represents the combination of one or more Connector components that share a single Engine
1.3 - Connector
涓涓狢onnector灝嗗湪鏌愪釜鎸囧畾绔彛涓婁睛鍚鎴瘋姹傦紝騫跺皢鑾峰緱鐨勮姹備氦緇橢ngine鏉ュ鐞嗭紝浠嶦ngine澶勮幏寰楀洖搴斿茍榪斿洖瀹㈡埛
1.4 - Engine
The Engine element represents the entire request processing machinery associated with a particular Service
1.5 - Host
浠h〃涓涓猇irtual Host錛岃櫄鎷熶富鏈猴紝姣忎釜铏氭嫙涓繪満鍜屾煇涓綉緇滃煙鍚岲omain Name鐩稿尮閰?br />姣忎釜铏氭嫙涓繪満涓嬮兘鍙互閮ㄧ講(deploy)涓涓垨鑰呭涓猈eb App錛屾瘡涓猈eb App瀵瑰簲浜庝竴涓狢ontext錛屾湁涓涓狢ontext path
1.6 - Context
涓涓狢ontext瀵瑰簲浜庝竴涓猈eb Application錛屼竴涓猈eb Application鐢變竴涓垨鑰呭涓猄ervlet緇勬垚
璇ユ枃浠舵弿榪頒簡(jiǎn)濡備綍鍚姩Tomcat Server
涓涓狢ontext瀵瑰簲浜庝竴涓猈eb App錛屾瘡涓猈eb App鏄敱涓涓垨鑰呭涓猻ervlet緇勬垚鐨?br />褰撲竴涓猈eb App琚垵濮嬪寲鐨勬椂鍊欙紝瀹冨皢鐢ㄨ嚜宸辯殑ClassLoader瀵硅薄杞藉叆鈥滈儴緗查厤緗枃浠秝eb.xml鈥濅腑瀹氫箟鐨勬瘡涓猻ervlet綾?br />瀹冮鍏堣澆鍏ュ湪$CATALINA_HOME/conf/web.xml涓儴緗茬殑servlet綾?br />鐒跺悗杞藉叆鍦ㄨ嚜宸辯殑Web App鏍圭洰褰曚笅鐨刉EB-INF/web.xml涓儴緗茬殑servlet綾?br />web.xml鏂囦歡鏈変袱閮ㄥ垎錛歴ervlet綾誨畾涔夊拰servlet鏄犲皠瀹氫箟 鍒嗘瀽涓涓嬫墍鏈夌殑Context鍏變韓鐨剋eb.xml鏂囦歡錛屽湪鍏朵腑瀹氫箟鐨剆ervlet琚墍鏈夌殑Web App杞藉叆
鍋囪鏉ヨ嚜瀹㈡埛鐨勮姹備負(fù)錛?br />http://localhost:8080/wsota/wsota_index.jsp 1) 璇鋒眰琚彂閫佸埌鏈満绔彛8080錛岃鍦ㄩ偅閲屼睛鍚殑Coyote HTTP/1.1 Connector鑾峰緱
Service鏄繖鏍蜂竴涓泦鍚堬細(xì)瀹冪敱涓涓垨鑰呭涓狢onnector緇勬垚錛屼互鍙?qiáng)涓涓狤ngine錛岃礋璐e鐞嗘墍鏈塁onnector鎵鑾峰緱鐨勫鎴瘋姹?br />
TOMCAT鏈変袱涓吀鍨嬬殑Connector錛屼竴涓洿鎺ヤ睛鍚潵鑷猙rowser鐨刪ttp璇鋒眰錛屼竴涓睛鍚潵鑷叾瀹僕ebServer鐨勮姹?br />Coyote Http/1.1 Connector 鍦ㄧ鍙?080澶勪睛鍚潵鑷鎴穊rowser鐨刪ttp璇鋒眰
Coyote JK2 Connector 鍦ㄧ鍙?009澶勪睛鍚潵鑷叾瀹僕ebServer(Apache)鐨剆ervlet/jsp浠g悊璇鋒眰
It receives and processes all requests from one or more Connectors
and returns the completed response to the Connector for ultimate transmission back to the client
Engine涓嬪彲浠ラ厤緗涓櫄鎷熶富鏈篤irtual Host錛屾瘡涓櫄鎷熶富鏈洪兘鏈変竴涓煙鍚?br />褰揈ngine鑾峰緱涓涓姹傛椂錛屽畠鎶婅璇鋒眰鍖歸厤鍒版煇涓狧ost涓婏紝鐒跺悗鎶婅璇鋒眰浜ょ粰璇ost鏉ュ鐞?br />Engine鏈変竴涓粯璁よ櫄鎷熶富鏈猴紝褰撹姹傛棤娉曞尮閰嶅埌浠諱綍涓涓狧ost涓婄殑鏃跺欙紝灝嗕氦緇欒榛樿Host鏉ュ鐞?br />
褰揌ost鑾峰緱涓涓姹傛椂錛屽皢鎶婅璇鋒眰鍖歸厤鍒版煇涓狢ontext涓婏紝鐒跺悗鎶婅璇鋒眰浜ょ粰璇ontext鏉ュ鐞?br />鍖歸厤鐨勬柟娉曟槸鈥滄渶闀垮尮閰嶁濓紝鎵浠ヤ竴涓猵ath==""鐨凜ontext灝嗘垚涓鴻Host鐨勯粯璁ontext
鎵鏈夋棤娉曞拰鍏跺畠Context鐨勮礬寰勫悕鍖歸厤鐨勮姹傞兘灝嗘渶緇堝拰璇ラ粯璁ontext鍖歸厤
Context鍦ㄥ垱寤虹殑鏃跺欏皢鏍規(guī)嵁閰嶇疆鏂囦歡$CATALINA_HOME/conf/web.xml鍜?WEBAPP_HOME/WEB-INF/web.xml杞藉叆Servlet綾?br />褰揅ontext鑾峰緱璇鋒眰鏃訛紝灝嗗湪鑷繁鐨勬槧灝勮〃(mapping table)涓鎵劇浉鍖歸厤鐨凷ervlet綾?br />濡傛灉鎵懼埌錛屽垯鎵ц璇ョ被錛岃幏寰楄姹傜殑鍥炲簲錛屽茍榪斿洖
2 - Tomcat Server鐨勭粨鏋勫浘
3 - 閰嶇疆鏂囦歡$CATALINA_HOME/conf/server.xml鐨勮鏄?
4 - Context鐨勯儴緗查厤緗枃浠秝eb.xml鐨勮鏄?
姣忎釜琚澆鍏ョ殑servlet綾婚兘鏈変竴涓悕瀛楋紝涓旇濉叆璇ontext鐨勬槧灝勮〃(mapping table)涓紝鍜屾煇縐峌RL PATTERN瀵瑰簲
褰撹Context鑾峰緱璇鋒眰鏃訛紝灝嗘煡璇apping table錛屾壘鍒拌璇鋒眰鐨剆ervlet錛屽茍鎵ц浠ヨ幏寰楄姹傚洖搴?br />
5 - Tomcat Server澶勭悊涓涓猦ttp璇鋒眰鐨勮繃紼?
2) Connector鎶婅璇鋒眰浜ょ粰瀹冩墍鍦ㄧ殑Service鐨凟ngine鏉ュ鐞嗭紝騫剁瓑寰呮潵鑷狤ngine鐨勫洖搴?br />3) Engine鑾峰緱璇鋒眰localhost/wsota/wsota_index.jsp錛屽尮閰嶅畠鎵鎷ユ湁鐨勬墍鏈夎櫄鎷熶富鏈篐ost
4) Engine鍖歸厤鍒板悕涓簂ocalhost鐨凥ost錛堝嵆浣垮尮閰嶄笉鍒頒篃鎶婅姹備氦緇欒Host澶勭悊錛屽洜涓鴻Host琚畾涔変負(fù)璇ngine鐨勯粯璁や富鏈猴級(jí)
5) localhost Host鑾峰緱璇鋒眰/wsota/wsota_index.jsp錛屽尮閰嶅畠鎵鎷ユ湁鐨勬墍鏈塁ontext
6) Host鍖歸厤鍒拌礬寰勪負(fù)/wsota鐨凜ontext錛堝鏋滃尮閰嶄笉鍒板氨鎶婅璇鋒眰浜ょ粰璺緞鍚嶄負(fù)""鐨凜ontext鍘誨鐞嗭級(jí)
7) path="/wsota"鐨凜ontext鑾峰緱璇鋒眰/wsota_index.jsp錛屽湪瀹冪殑mapping table涓鎵懼搴旂殑servlet
8) Context鍖歸厤鍒癠RL PATTERN涓?.jsp鐨剆ervlet錛屽搴斾簬JspServlet綾?br />9) 鏋勯燞ttpServletRequest瀵硅薄鍜孒ttpServletResponse瀵硅薄錛屼綔涓哄弬鏁拌皟鐢↗spServlet鐨刣oGet鎴杁oPost鏂規(guī)硶
10)Context鎶婃墽琛屽畬浜?jiǎn)涔嬪悗鐨凥ttpServletResponse瀵硅薄榪斿洖緇橦ost
11)Host鎶奌ttpServletResponse瀵硅薄榪斿洖緇橢ngine
12)Engine鎶奌ttpServletResponse瀵硅薄榪斿洖緇機(jī)onnector
13)Connector鎶奌ttpServletResponse瀵硅薄榪斿洖緇欏鎴穊rowser
<!----------------------------------------------------------------------------------------------->
<web-app>
<!-- 姒傝堪錛?br /> 璇ユ枃浠舵槸鎵鏈夌殑WEB APP鍏辯敤鐨勯儴緗查厤緗枃浠訛紝
姣忓綋涓涓猈EB APP琚獶EPLOY錛岃鏂囦歡閮藉皢鍏堣澶勭悊錛岀劧鍚庢墠鏄疻EB APP鑷繁鐨?WEB-INF/web.xml
-->
<!-- +-------------------------+ -->
<!-- | servlet綾誨畾涔夐儴鍒? | -->
<!-- +-------------------------+ -->
<!-- DefaultServlet
褰撶敤鎴風(fēng)殑HTTP璇鋒眰鏃犳硶鍖歸厤浠諱綍涓涓猻ervlet鐨勬椂鍊欙紝璇ervlet琚墽琛?br /> URL PATTERN MAPPING : /
-->
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>
org.apache.catalina.servlets.DefaultServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- InvokerServlet
澶勭悊涓涓猈EB APP涓殑鍖垮悕servlet
褰撲竴涓猻ervlet琚紪鍐欏茍緙栬瘧鏀懼叆/WEB-INF/classes/涓紝鍗存病鏈夊湪/WEB-INF/web.xml涓畾涔夌殑鏃跺?br /> 璇ervlet琚皟鐢紝鎶婂尶鍚峴ervlet鏄犲皠鎴?servlet/ClassName鐨勫艦寮?br /> URL PATTERN MAPPING : /servlet/*
-->
<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- JspServlet
褰撹姹傜殑鏄竴涓狫SP欏甸潰鐨勬椂鍊欙紙*.jsp錛夎servlet琚皟鐢?br /> 瀹冩槸涓涓狫SP緙栬瘧鍣紝灝嗚姹傜殑JSP欏甸潰緙栬瘧鎴愪負(fù)servlet鍐嶆墽琛?br /> URL PATTERN MAPPING : *.jsp
-->
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>logVerbosityLevel</param-name>
<param-value>WARNING</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<!-- +---------------------------+ -->
<!-- | servlet鏄犲皠瀹氫箟閮ㄥ垎 | -->
<!-- +---------------------------+ -->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<!-- +------------------------+ -->
<!-- | 鍏跺畠閮ㄥ垎錛岀暐鍘誨厛 | -->
<!-- +------------------------+ -->
... ... ... ...
</web-app>
<!----------------------------------------------------------------------------------------------->
<!----------------------------------------------------------------------------------------------->
<!-- 鍚姩Server
鍦ㄧ鍙?005澶勭瓑寰呭叧闂懡浠?br /> 濡傛灉鎺ュ彈鍒?SHUTDOWN"瀛楃涓插垯鍏抽棴鏈嶅姟鍣?br /> -->
<Server port="8005" shutdown="SHUTDOWN" debug="0">
<!-- Listener ???
鐩墠娌℃湁鐪嬪埌榪欓噷
-->
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" debug="0"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" debug="0"/>
<!-- Global JNDI resources ???
鐩墠娌℃湁鐪嬪埌榪欓噷錛屽厛鐣ュ幓
-->
<GlobalNamingResources>
... ... ... ...
</GlobalNamingResources>
<!-- Tomcat鐨凷tandalone Service
Service鏄竴緇凜onnector鐨勯泦鍚?br /> 瀹冧滑鍏辯敤涓涓狤ngine鏉ュ鐞嗘墍鏈塁onnector鏀跺埌鐨勮姹?br /> -->
<Service name="Tomcat-Standalone">
<!-- Coyote HTTP/1.1 Connector
className : 璇onnector鐨勫疄鐜扮被鏄痮rg.apache.coyote.tomcat4.CoyoteConnector
port : 鍦ㄧ鍙e彿8080澶勪睛鍚潵鑷鎴穊rowser鐨凥TTP1.1璇鋒眰
minProcessors : 璇onnector鍏堝垱寤?涓嚎紼嬬瓑寰呭鎴瘋姹傦紝姣忎釜璇鋒眰鐢變竴涓嚎紼嬭礋璐?br /> maxProcessors : 褰撶幇鏈夌殑綰跨▼涓嶅鏈嶅姟瀹㈡埛璇鋒眰鏃訛紝鑻ョ嚎紼嬫繪暟涓嶈凍75涓紝鍒欏垱寤烘柊綰跨▼鏉ュ鐞嗚姹?br /> acceptCount : 褰撶幇鏈夌嚎紼嬪凡緇忚揪鍒版渶澶ф暟75鏃訛紝涓哄鎴瘋姹傛帓闃?br /> 褰撻槦鍒椾腑璇鋒眰鏁拌秴榪?00鏃訛紝鍚庢潵鐨勮姹傝繑鍥濩onnection refused閿欒
redirectport : 褰撳鎴瘋姹傛槸https鏃訛紝鎶婅璇鋒眰杞彂鍒扮鍙?443鍘?br /> 鍏跺畠灞炴х暐
-->
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8080"
minProcessors="5" maxProcessors="75" acceptCount="100"
enableLookups="true"
redirectPort="8443"
debug="0"
connectionTimeout="20000"
useURIValidationHack="false"
disableUploadTimeout="true" />
<!-- Engine鐢ㄦ潵澶勭悊Connector鏀跺埌鐨凥ttp璇鋒眰
瀹冨皢鍖歸厤璇鋒眰鍜岃嚜宸辯殑铏氭嫙涓繪満錛屽茍鎶婅姹傝漿浜ょ粰瀵瑰簲鐨凥ost鏉ュ鐞?br /> 榛樿铏氭嫙涓繪満鏄痩ocalhost
-->
<Engine name="Standalone" defaultHost="localhost" debug="0">
<!-- 鏃ュ織綾伙紝鐩墠娌℃湁鐪嬪埌錛岀暐鍘誨厛 -->
<Logger className="org.apache.catalina.logger.FileLogger" .../>
<!-- Realm錛岀洰鍓嶆病鏈夌湅鍒幫紝鐣ュ幓鍏?-->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" .../>
<!-- 铏氭嫙涓繪満localhost
appBase : 璇ヨ櫄鎷熶富鏈虹殑鏍圭洰褰曟槸webapps/
瀹冨皢鍖歸厤璇鋒眰鍜岃嚜宸辯殑Context鐨勮礬寰勶紝騫舵妸璇鋒眰杞氦緇欏搴旂殑Context鏉ュ鐞?br /> -->
<Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true">
<!-- 鏃ュ織綾伙紝鐩墠娌℃湁鐪嬪埌錛岀暐鍘誨厛 -->
<Logger className="org.apache.catalina.logger.FileLogger" .../>
<!-- Context錛屽搴斾簬涓涓猈eb App
path : 璇ontext鐨勮礬寰勫悕鏄?"錛屾晠璇ontext鏄Host鐨勯粯璁ontext
docBase : 璇ontext鐨勬牴鐩綍鏄痺ebapps/mycontext/
-->
<Context path="" docBase="mycontext" debug="0"/>
<!-- 鍙﹀涓涓狢ontext錛岃礬寰勫悕鏄?wsota -->
<Context path="/wsota" docBase="wsotaProject" debug="0"/>
</Host>
</Engine>
</Service>
</Server>
<!----------------------------------------------------------------------------------------------->
]]>
鏈墜鍐屽寘鍚玞onf/server.xml鏂囦歡涓墍鏈夐厤緗寚紺虹(directives)鐨勫弬鑰冧俊鎭紝榪欎簺鎸囩ず絎﹀喅瀹氫簡(jiǎn)Tomcat聽(tīng)5鐨勮涓恒傛湰鎵嬪唽騫朵笉鎻忚堪搴旇浣跨敤鍝釜閰嶇疆鎸囩ず絎︽潵瀹屾垚鐗瑰畾鐨勪換鍔?璇峰弬鑰冨搴旂殑HOW-TO鏂囦歡銆偮?br />閰嶇疆鍏冪礌鐨勬弿榪版寜鐓у涓嬩富鐩綍鏉ョ粍緇囷細(xì)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)欏剁駭鍏冪礌錛?server />鏄暣涓厤緗枃浠剁殑鏍瑰厓绱狅紝鑰?service />浠h〃涓庝竴涓紩鎿?Engine)鐩稿叧鑱旂殑涓緇勮繛鎺ュ櫒(Connectors)錛浡?br />聽(tīng)聽(tīng)聽(tīng)聽(tīng)榪炴帴鍣?Connectors)-浠h〃澶栭儴瀹㈡埛涔嬮棿鐨勬帴鍙c傚閮ㄥ鎴峰悜鐗瑰畾鐨凷ervice鍙戦佽姹傦紝騫舵帴鏀跺搷搴旓紱聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)瀹瑰櫒錛嶄唬琛ㄤ竴浜涚粍浠躲傝繖浜涚粍浠剁殑鍔熻兘鏄鐞嗚繘鏉ョ殑璇鋒眰錛岀敓鎴愬搴旂殑鍝嶅簲銆傚紩鎿?Engine)澶勭悊涓涓猄ervice鐨勬墍鏈夎姹傦紝Host澶勭悊涓涓壒瀹氳櫄鎷熶富鏈虹殑鎵鏈夎姹傘侰ontext澶勭悊鏌愪釜鐗瑰畾web搴旂敤鐨勬墍鏈夎姹傦紱聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)宓屽叆緇勪歡錛嶄唬琛ㄥ彲浠ュ祵鍏ュ鍣ㄧ殑鏌愪釜鍏冪礌涔嬩腑鐨勫厓绱犮傛湁浜涘厓绱犲彲浠ュ祵鍏ヤ換浣曞鍣紝鑰屽彟涓浜涘厓绱犲彧鑳藉祵鍏ュ湪Context涓偮?br />
瀵規(guī)瘡涓厓绱狅紝瀵瑰簲鐨勬枃妗f寜鐓у涓嬫柟寮忕粍緇囷細(xì)聽(tīng)
姒傝堪錛嶅榪欎釜鐗瑰畾緇勪歡鐨勬暣浣撴弿榪般傛瘡涓粍浠跺湪org.apache.catalina鍖呬腑瀛樺湪涓涓搴旂殑Java鎺ュ彛錛屽彲鑳芥湁涓涓垨澶氫釜鏍囧噯瀹炵幇瀹炵幇浜?jiǎn)杩欎釜鎺ュ彛锛浡?tīng)
灞炴э紞璇ュ厓绱犵殑鍚堟硶灞炴с備竴鑸潵璇達(dá)紝榪欏張鍒嗘垚鍏叡灞炴у拰鏍囧噯瀹炵幇灞炴с傚叕鍏卞睘鎬ф槸鎵鏈夊疄鐜頒簡(jiǎn)璇ava鎺ュ彛鐨勫疄鐜伴兘鍏鋒湁鐨勫睘鎬с傛爣鍑嗗疄鐜板睘鎬ф槸瀹炵幇浜?jiǎn)璇ava鎺ュ彛鐨勬煇涓壒瀹欽ava綾誨叿鏈夌殑灞炴с傚繀闇鐨勫睘鎬х敤綺椾綋鏍囧嚭錛浡?br />宓屽緇勪歡錛嶅垪涓句簡(jiǎn)鍙互鍚堟硶鍦板祵鍦ㄨ繖涓厓绱犱笅鐨勭粍浠訛紱聽(tīng)
涓撴湁鐗規(guī)э紞鎻忚堪浜?jiǎn)璇ユ帴鍙g殑鏍囧噯瀹炵幇鏀寔鐨勪笓鏈夌壱?guī)х殑閰嶇疆錛屼笌姣忎釜鍏冪礌綾誨瀷鏈夊叧錛?br />
欏剁駭鍏冪礌錛?a target="_blank">Server聽(tīng)聽(tīng)Service
榪炴帴鍣細(xì)HTTP/1.1聽(tīng)聽(tīng)JK聽(tīng)
瀹瑰櫒錛?a target="_blank">Context聽(tīng)聽(tīng)Engine聽(tīng)聽(tīng)Host聽(tīng)
宓屽緇勪歡錛?br />Default聽(tīng)Context聽(tīng)
Global聽(tīng)Resources聽(tīng)
Loader聽(tīng)
Logger聽(tīng)
Manager聽(tīng)
Realm聽(tīng)
Resources聽(tīng)
Valve聽(tīng)