Tomcat源碼分析(類加載器)文章分類:Java編程1.Tomcat共有五類ClassLoader:
Tomcat源碼分析(過濾器)文章分類:Java編程Tomcat的過濾器主要由Filter、FilterChain組成,F(xiàn)ilterChain包含一個(gè)Filter數(shù)組.當(dāng)Wrapper執(zhí)行FilterChain的doFilter(request,response)方法時(shí),F(xiàn)ilterChain首先調(diào)用第一個(gè)Filter的doFilter(request,response,filterchain)方法,當(dāng)?shù)谝粋€(gè)filter做完過濾操作后,它又會(huì)調(diào)用filterchain的doFilter方法,此時(shí)filterchain的當(dāng)前filter已變?yōu)榈诙€(gè)filter,第二個(gè)filter又執(zhí)行dofilter方法,依此類推,直至所有過濾器都執(zhí)行完畢
1.接口
2.實(shí)現(xiàn)例子
過濾器可以在web.xml中進(jìn)行配置 Tomcat源碼分析(閥門)關(guān)鍵字: tomcat源碼分析1.Tomcat組件及關(guān)系
Server --Service --Connector --Engine --Host --Context --Wrapper(Servlet) Server代表Tomcat應(yīng)用服務(wù)器,它可以包含多個(gè)Service服務(wù);一個(gè)Service服務(wù)包含多個(gè)Connector和一個(gè)Engine;一個(gè)Engine可以包含多個(gè)虛擬主機(jī)Host;一個(gè)Host可以包含多個(gè)Web應(yīng)用Context,而每個(gè)Web下有可以包含多個(gè)Wrapper(Servlet的包裝器) 組件及其關(guān)系可以參考Tomcat的Server.xml及Web.xml文件 2.當(dāng)一個(gè)請(qǐng)求到達(dá)時(shí),Connector會(huì)把它包裝成Request對(duì)象,同時(shí)生成Response對(duì)象;然后Connector會(huì)調(diào)用Engine的invoke方法,它又會(huì)調(diào)用Host的invoke 方法,Host的invoke方法又會(huì)調(diào)用Context的invoke方法,最后,Context的invoke方法調(diào)用Wrapper的invoke方法,至此,責(zé)任鏈調(diào)用結(jié)束。 接口及實(shí)現(xiàn): a.Pipeline , 此接口的實(shí)現(xiàn)主要用于維護(hù)閥門及先后關(guān)系,實(shí)現(xiàn)見 org.apache.catalina.core.StandardPipleline
b.Valve , 閥門接口,主要用于做過濾工作
c.下面是與責(zé)任鏈有關(guān)的實(shí)現(xiàn)代碼,以Engine的標(biāo)準(zhǔn)實(shí)現(xiàn)StandardEngine為例
d.StandardEngine簡單閥門的實(shí)現(xiàn)
e.StandardEngine最后一個(gè)閥門(StandardEngineValve)的實(shí)現(xiàn)
c,d,e代碼即為StandardEngine責(zé)任鏈調(diào)用的主要代碼,Host、Context、Wrapper的責(zé)任鏈調(diào)用相關(guān)代碼與其類似,閥門可以在Server.xml及Web.xml中配置 |
|