tomcat**看似很龐大,但從結構上看卻很清晰和簡單,它主要由一堆元件組成,如server、service、connector等,並基於jmx管理這些元件,另外實現以上介面的元件也實現了代表生存期的介面lifecycle,使其元件履行固定的生存期,在其整個生存期的過程中通過事件偵聽lifecycleevent實現擴充套件。tomcat的核心類圖如下所示:
catalina:與開始/關閉shell指令碼互動的主類,因此如果要研究啟動和關閉的過程,就從這個類開始看起。
server:是整個tomcat元件的容器,包含乙個或多個service。
service:service是包含connector和container的集合,service用適當的connector接收使用者的請求,再發給相應的container來處理。
connector:實現某一協議的聯結器,如預設的有實現http、https、ajp協議的。
engine:engine包含host和context,接到請求後仍給相應的host在相應的context裡處理。
host:就是我們所理解的虛擬主機。
context:就是我們所部屬的具體web應用的上下文,每個請求都在是相應的上下文裡處理的。
下面就是些被container所用的基礎元件:
loader:是被container用來載入各種所需的class。
manager:是被container用來管理session池。
realm:是用來處理安全裡授權與認證。
分析完核心類後,再看看tomcat啟動的過程,tomcat啟動的時序圖如下所示:
從上圖可以看出,tomcat啟動分為init和start兩個過程,核心元件都實現了lifecycle介面,都需實現start方法,因此在start過程中就是從server開始逐層呼叫子元件的start過程。
請求過程:
從上圖可知,以上過程可分解成以下三個最主要的核心點:
tomcat專案啟動過程
1 startup 讀取配置檔案配置的jar,lib下的jar,環境變數配置的jar。2 catalina 讀取tomcat內建的使用者管理介面,讀取配置tomcat user.xml。3 讀取server.xml,根據層級關係設定到services物件中。每個節點都有自己的listener 用來根...
tomcat啟動過程詳解
基於j a的web 應用程式是 servlet jsp 頁面 靜態頁面 類和其他資源的集合,它們可以用標準方式打包,並執行在來自多個 商的多個容器。web 應用程式存在於結構化層次結構的目錄中,該層次結構是由 j a servlet 規範定義的。web 應用程式的根目錄包含直接儲存或儲存在子資料夾中...
tomcat啟動過程分析(1)
以tomcat為例,看tomcat是怎樣啟動的。tomcat中有乙個startup.bat 批處理檔案,這個檔案會啟動另乙個批處理檔案 catalina.bat 而這個批處理會設定set classpath classpath catalina home bin bootstrap.jar 也就是把...