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

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

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

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

    Tomcat6結構分析

    Tomcat6結構分析
    tomcat在實際開發中大量使用,對其結構不了解的話在配置使用過程中容易出現各種奇怪的問題。

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

    對應的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自身,一個Tomcat程序實例(instance)。
    代表整個容器,是Tomcat實例的頂層元素.由org.apache.catalina.Server接口來定義。
    提供完整的JVM的獨立組件,它可以包含一個或多個“Service”實例。服務器在指定的端口上監聽shutdown命令。
    它的一個重要屬性就是關閉Tomcat的端口號。

    測試命令:
        telnet localhost 8008   
        輸入:SHUTDOWN
        結果:關閉tomcat

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

    2.Service
        Service由Connector和Engine組成,Engine可以對應一個或多個Connector。
        Connector 主要負責對外交流,Engine主要處理Connector接受的請求,主要是處理內部事務。
        是 Service 將它們連接在一起,共同負責處理所有Connector所獲得的客戶請求。
    3.Connector
       Connector代表與客戶程序實際交互的給件,它負責接收客戶請求,以及向客戶返回響應結果.
    每個connector都有一個端口號,常用的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:設定Http協議,默認值為HTTP/1.1
    4.Engine
    Service中的請求處理機,接受和處理來自Connector 的請求。
    5.Host
    它由Host接口定義.一個Engine元素可以包含多個<Host>元素.每個<Host>的元素定義了一個虛擬主機.它包含了一個或多個Web應用.

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

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

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

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

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

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

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

    生命周期(Lifecycle)

    Tomcat使用的一種“插件式(plugable)”的結構,管理這些插件的生命周期。當用戶啟動tomcat時,tomcat中的插件也會一起啟動,當關閉時也是同樣。通過Lifecycle接口:LifecycleEvent和LifecycleListener 實現的。

    幾乎所有的Tomcat組件都實現了Lifecycle接口,主要的控制組件都有LifecycleSuport對象,它們使用這個對象來管理其中的所有子Lifecycle對象。使用LifecycleSupport對象,當頂層對象調用start()方法時,它就會調用它的子組件的start()方法,子組件的子組件又會調用start()方法。

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

     

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


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲a∨无码一区二区| 自拍偷区亚洲国内自拍| caoporm超免费公开视频| 日本午夜免费福利视频| 亚洲s码欧洲m码吹潮| 毛片免费观看网站| 国产亚洲精品VA片在线播放| 啦啦啦高清视频在线观看免费| tom影院亚洲国产一区二区| 亚欧人成精品免费观看| 亚洲乱码一二三四区国产| 国内自产拍自a免费毛片| 亚洲精品理论电影在线观看| 国产午夜无码视频免费网站| 污网站在线免费观看| 国产精品亚洲mnbav网站| 你懂的免费在线观看| 亚洲视频中文字幕| 中文免费观看视频网站| 亚洲一线产品二线产品| 国产hs免费高清在线观看| 一区二区视频在线免费观看| 国产精品亚洲一区二区三区在线| 国产婷婷成人久久Av免费高清| 亚洲国产综合专区在线电影| 美女视频黄的全免费视频| 亚洲AV无码一区二区大桥未久| 亚洲精品国产精品乱码不卞| 国产午夜不卡AV免费| 国产成人精品日本亚洲专区6| 国产a级特黄的片子视频免费| 中文毛片无遮挡高清免费| 亚洲图片中文字幕| 国产成人高清精品免费鸭子| 91成人免费福利网站在线| 91亚洲国产成人久久精品| 亚洲v国产v天堂a无码久久| 免费无码av片在线观看 | 国产成人无码区免费A∨视频网站| 国内成人精品亚洲日本语音| 亚洲人成在线播放网站|