tomcat學習筆記之servlet 容器

一、servlet 容器用來處理請求servlet資源、爲客戶端封裝Response 對象的模塊web

二、tomcat 容器分四種:apache

  • Engine:整個Catalina servlet 引擎
  • Host:包含一個或多個Context 容器的虛擬主機
  • Context:表示一個web應用程序
  • Wrapper:表示一個獨立的servlet

三、Container 接口tomcat

  • Engine接口,標準實現類 StandardEngine
  • Host接口,標準實現類 StandardHost
  • Context接口,標準實現類 StandardContext
  • Wrapper接口,標準實現類 StandardWrapper
  • 四個藉口都繼承至Container 接口
  • 實現類都繼承至ContainerBase 抽象類 
  • 在org.apache.catalina.core包裏面

四、一個容器能夠有0個或多個低級子容器app

  • Engine > Host >Context > Wrapper
  • 包含關係 不能夠倒置

五、容器能夠包含支持的組件:server

  • 載入器、記錄器、管理器、領域、資源等
  • loader、logger、manager、realm、Resource

六、部署應用時,tomcat 管理員能夠經過編輯配置文件(server.xml)來決定使用哪一種容器xml

  • 這是經過引入容器中的管道(pipeline)和閥(value)的集合來實現的

七、管道任務對象

  • Pipeline接口
  • Value 接口
  • ValueContext 接口
  • Contained 接口
  • 在org.apache.catalina包裏面

八、管道包含該servlet 容器將要調用的任務繼承

  • 一個閥表示一個要具體執行的任務
  • servlet 容器的管道中,有一個基礎閥
  • 能夠添加任意數量的閥(數量不包括基礎閥)
  • 能夠編輯tomcat 配置文件動態添加閥

  • 管道就像過濾器鏈同樣傳遞Request對象和response對象
  • 閥相似過濾器(是Value  接口的實例)
  • 基礎閥最後一個執行
  • 一個servlet 容器有一條管道
  • 當調用容器的invoke 方法時,容器會將處理工做交由管道完成
  • 管道調用第一個閥開始處理
  • 管道處理僞代碼:

九、管道必須保證添加到其中的全部閥和基礎閥都被調用一次接口

  • 經過建立ValueContext 接口實例實現的
  • ValueContext是管道的內部類實現,因此ValueContext 接口能夠訪問到管道全部成員
  • ValueContext 最重要方法

  • 建立ValueContext 實例後,實例會調用 invokeNext 方法
  • 先調用第一個閥,執行完後調用後面的閥
  • ValueContext 實例將自身傳遞給閥,每一個閥都能調用ValueContext 實例的invokeNext 方法
  • 一個實現了ValueContext 接口的內部類 StandardPipelineValueContext

十、Contained 接口ip

  • 閥能夠選擇是否實現該接口
  • 接口實現類可使用接口中的方法,至多與一個servlet 容器相關聯

十一、Wrapper 級的servlet 容器

  • 表示一個獨立級的servlet 定義
  • Wrapper 接口實現類負責管理其基礎servlet 類的servlet 週期
  • 調用servlet 的init、service、destory方法
  • 最低級servlet 容器,不能添加子容器
  • 重要方法load 、allocate
  • load 方法載入並初始化servlet 類

十二、Wrapper 應用程序

核心類 SimpleWrapper 

  • 包含一個Pipeline 實例
  • Pipeline 實例包含一個基礎閥(SimpleWrapperValue)和兩個額外閥
  • 兩個額外閥:ClientIPLoggerValue、HeaderLoggerValue
  • 使用一個Loader 實例載入servlet 類
  • Wrapper 實例的基礎閥調用servlet 實例的 service() 方法

1三、Context 應用程序

  • 當應用程序中有多個Wrapper 實例時,須要使用映射器
  • 映射器是組件,幫助servlet 容器,選擇一個子容器來處理servlet 請求
  • 映射器僅僅存在於tomcat4中,tomcat5使用了別的方法
  • 映射器實現 org.apache.catalina.Mapper 接口
  • 一個映射器支持一個請求協議
  • getProtocol 方法負責得到 該映射器處理的協議
  • map 方法返回 負責處理某個特定請求子容器的實例
相關文章
相關標籤/搜索