<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    zyskm用夢想丈量人生,用奔跑丈量激情

    Tomcat6結(jié)構(gòu)分析

    Tomcat6結(jié)構(gòu)分析
    tomcat在實(shí)際開發(fā)中大量使用,對其結(jié)構(gòu)不了解的話在配置使用過程中容易出現(xiàn)各種奇怪的問題。

    Server.xml在tomcat處于核心地位。當(dāng)Tomcat啟動(dòng)時(shí),Apache Commons Digester就會(huì)讀取這份配置文件。
    XML結(jié)構(gòu)的本質(zhì)是嵌套式的機(jī)構(gòu),Tomcat自身也按這種結(jié)構(gòu)設(shè)計(jì)。
    從這份示例server.xml文檔也可以看出,Tomcat的結(jié)構(gòu)和XML的結(jié)構(gòu)是多么的一致。因此,要想弄清楚Tomcat的結(jié)構(gòu),最快捷的方法就是閱讀配置文件。
    tomcat結(jié)構(gòu)如圖:

    對應(yīng)的server.xml
     1<Server port="8008" shutdown="SHUTDOWN">
     2  <Service name="Catalina">
     3    <Connector port="8080" protocol="HTTP/1.1" 
     4               connectionTimeout="20000" 
     5               redirectPort="8443" URIEncoding="utf-8" />
     6    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
     7    <Engine name="Catalina" defaultHost="localhost">
     8      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
     9             resourceName="UserDatabase"/>
    10      <Host name="localhost"  appBase="webapps"
    11            unpackWARs="true" autoDeploy="true"
    12            xmlValidation="false" xmlNamespaceAware="false">
    13        <Context path="/test" reloadable="true" docBase="" />
    14      </Host>
    15    </Engine>
    16  </Service>
    17</Server>
    l
    各部分說明:
    1.Server

    Server就是Tomcat自身,一個(gè)Tomcat程序?qū)嵗╥nstance)。
    代表整個(gè)容器,是Tomcat實(shí)例的頂層元素.由org.apache.catalina.Server接口來定義。
    提供完整的JVM的獨(dú)立組件,它可以包含一個(gè)或多個(gè)“Service”實(shí)例。服務(wù)器在指定的端口上監(jiān)聽shutdown命令。
    它的一個(gè)重要屬性就是關(guān)閉Tomcat的端口號。

    測試命令:
        telnet localhost 8008   
        輸入:SHUTDOWN
        結(jié)果:關(guān)閉tomcat

    屬性說明:
        <Server port="8008" shutdown="SHUTDOWN">
        1)className指定實(shí)現(xiàn)org.apache.catalina.Server接口的類.默認(rèn)值為org.apache.catalina.core.StandardServer
        2)port指定Tomcat監(jiān)聽shutdown命令端口.終止服務(wù)器運(yùn)行時(shí),必須在Tomcat服務(wù)器所在的機(jī)器上發(fā)出shutdown命令.該屬性是必須的.
        3)shutdown指定終止Tomcat服務(wù)器運(yùn)行時(shí),發(fā)給Tomcat服務(wù)器的shutdown監(jiān)聽端口的字符串.該屬性必須設(shè)置

    2.Service
        Service由Connector和Engine組成,Engine可以對應(yīng)一個(gè)或多個(gè)Connector。
        Connector 主要負(fù)責(zé)對外交流,Engine主要處理Connector接受的請求,主要是處理內(nèi)部事務(wù)。
        是 Service 將它們連接在一起,共同負(fù)責(zé)處理所有Connector所獲得的客戶請求。
    3.Connector
       Connector代表與客戶程序?qū)嶋H交互的給件,它負(fù)責(zé)接收客戶請求,以及向客戶返回響應(yīng)結(jié)果.
    每個(gè)connector都有一個(gè)端口號,常用的Connector有兩種,一種是HTTP Connector用來接收http請求,另一種是AJP Connect
    <Connector port="8080" protocol="HTTP/1.1" 
                   connectionTimeout
    ="20000" 
                   redirectPort
    ="8443" URIEncoding="utf-8" />
        
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

        port : 在端口號8080處偵聽來自客戶browser的HTTP1.1請求.如果把8080改成80,則只要輸入 http://localhost/ 即可
        protocol:設(shè)定Http協(xié)議,默認(rèn)值為HTTP/1.1
    4.Engine
    Service中的請求處理機(jī),接受和處理來自Connector 的請求。
    5.Host
    它由Host接口定義.一個(gè)Engine元素可以包含多個(gè)<Host>元素.每個(gè)<Host>的元素定義了一個(gè)虛擬主機(jī).它包含了一個(gè)或多個(gè)Web應(yīng)用.

    <Host name="localhost"  appBase="webapps"
                unpackWARs
    ="true" autoDeploy="true"
                xmlValidation
    ="false" xmlNamespaceAware="false">

    appBase : 指定虛擬主機(jī)的目錄,可以指定絕對目錄,也可以指定相對于<CATALINA_HOME>的相對目錄.如果沒有此項(xiàng),默認(rèn)為<CATALINA_HOME>/webapps.
    它將匹配請求和自己的Context的路徑,并把請求轉(zhuǎn)交給對應(yīng)的Context來處理
    autoDeploy:如果此項(xiàng)設(shè)為true,表示Tomcat服務(wù)處于運(yùn)行狀態(tài)時(shí),能夠監(jiān)測appBase下的文件,如果有新有web應(yīng)用加入進(jìn)來,會(huì)自運(yùn)發(fā)布這個(gè)WEB應(yīng)用
    unpackWARs:如果此項(xiàng)設(shè)置為true,表示把WEB應(yīng)用的WAR文件先展開為開放目錄結(jié)構(gòu)后再運(yùn)行.如果設(shè)為false將直接運(yùn)行為WAR文件
    alias:指定主機(jī)別名,可以指定多個(gè)別名
    deployOnStartup:如果此項(xiàng)設(shè)為true,表示Tomcat服務(wù)器啟動(dòng)時(shí)會(huì)自動(dòng)發(fā)布appBase目錄下所有的Web應(yīng)用.
    如果Web應(yīng)用中的server.xml沒有相應(yīng)的<Context>元素,將采用Tomcat默認(rèn)的Context
    6.Context
    它由Context接口定義.是使用最頻繁的元素.每個(gè)<Context元素代表了運(yùn)行在虛擬主機(jī)上的單個(gè)Web應(yīng)用.一個(gè)<Host>可以包含多個(gè)<Context>元素.

    Context 代表 Servlet 的 Context,它具備了 Servlet 運(yùn)行的基本環(huán)境,理論上只要有 Context 就能運(yùn)行 Servlet 了。簡單的 Tomcat 可以沒有 Engine 和 Host。

    Context 最重要的功能就是管理它里面的 Servlet 實(shí)例,Servlet 實(shí)例在 Context 中是以 Wrapper 出現(xiàn)的,還有一點(diǎn)就是 Context 如何才能找到正確的 Servlet 來執(zhí)行它呢? Tomcat5 以前是通過一個(gè) Mapper 類來管理的,Tomcat5 以后這個(gè)功能被移到了 request 中。

    <Context path="/test" reloadable="true" docBase="" />

    path : 該Context的路徑名是"",故該Context是該Host的默認(rèn)Context
    docBase : 該Context的根目錄是webapps/mycontext/
    reloadable:如果這個(gè)屬性設(shè)為true, Tomcat服務(wù)器在運(yùn)行狀態(tài)下會(huì)監(jiān)視在WEB-INF/classes和Web-INF/lib目錄CLASS文件的改運(yùn).如果監(jiān)視到有class文件被更新,服務(wù)器自重新加載Web應(yīng)用
    useNaming:指定是否支持JNDI,默認(rèn)值為了true
    cookies指定是否通過Cookies來支持Session,默認(rèn)值為true

    <Context path="" docBase="mycontext" debug="0"/>

    生命周期(Lifecycle)

    Tomcat使用的一種“插件式(plugable)”的結(jié)構(gòu),管理這些插件的生命周期。當(dāng)用戶啟動(dòng)tomcat時(shí),tomcat中的插件也會(huì)一起啟動(dòng),當(dāng)關(guān)閉時(shí)也是同樣。通過Lifecycle接口:LifecycleEvent和LifecycleListener 實(shí)現(xiàn)的。

    幾乎所有的Tomcat組件都實(shí)現(xiàn)了Lifecycle接口,主要的控制組件都有LifecycleSuport對象,它們使用這個(gè)對象來管理其中的所有子Lifecycle對象。使用LifecycleSupport對象,當(dāng)頂層對象調(diào)用start()方法時(shí),它就會(huì)調(diào)用它的子組件的start()方法,子組件的子組件又會(huì)調(diào)用start()方法。

    LifecycleListener接口可以被添加到任何層次的Tomcat容器 (Server, Service, Engine, Host, or Context),在Server這個(gè)級別,默認(rèn)的Listener有三個(gè)。用戶可以定義自己的Listener,不過需要將其在server.xml或context.xml中添加配置。用戶自定義的Listener需要繼承LifecycleListene接口。

     

    posted on 2011-10-24 14:17 zyskm 閱讀(1517) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 四虎影视久久久免费观看| 亚洲av永久无码精品网址| 97无码人妻福利免费公开在线视频| 又黄又爽一线毛片免费观看| 性色av极品无码专区亚洲| 四虎免费久久影院| 羞羞网站免费观看| 久久久久亚洲AV无码专区桃色| www免费黄色网| 久久亚洲国产精品五月天| 一级成人a毛片免费播放| 亚洲蜜芽在线精品一区| 久久久久国色AV免费看图片 | 精品在线观看免费| 国产偷国产偷亚洲高清日韩 | 亚洲大香人伊一本线| 免费无码AV片在线观看软件| 亚洲中文字幕无码爆乳app| 精品国产免费一区二区| 国产99视频精品免费视频76| 国产av无码专区亚洲av桃花庵| 免费成人在线视频观看| 亚洲一区二区三区无码国产| 免费无码不卡视频在线观看| 一级毛片免费不卡| 在线免费观看亚洲| 日本高清色本免费现在观看| 免费无码又爽又黄又刺激网站| 亚洲成A∨人片在线观看不卡| 18禁免费无码无遮挡不卡网站| 欧洲亚洲国产精华液| 亚洲性猛交XXXX| 日韩精品成人无码专区免费| 曰批全过程免费视频免费看| 亚洲AV无码成人专区片在线观看 | 免费在线观看你懂的| 免费一级毛片无毒不卡| 亚洲精品乱码久久久久久V| 国产成人亚洲精品91专区手机| 免费黄色网址网站| 九九久久精品国产免费看小说 |