Tomcat工作原理與架構

2021-08-16 01:35:18 字數 2704 閱讀 4676

tomcat檔案目錄

bin/ tomcat執行所需要的一些指令碼和jar包

conf/ tomcat的配置檔案

lib/ 存放 tomcat 伺服器和所有 web 應用程式需要訪問的 jar 檔案

logs/ 存放日誌

temp/ 存放 tomcat 執行時產生的臨時檔案

work/ tomcat 將 jsp 生成的 servlet 原始檔和位元組碼檔案放到這個目錄下

1.service

service是這樣乙個集合:它由乙個或者多個connector組成,以及乙個engine,負責處理所有connector所獲得的客戶請求

2.connector

乙個connector將在某個指定埠上偵聽客戶請求,並將獲得的請求交給engine來處理,從engine處獲得回應並返回客戶

tomcat有兩個典型的connector,乙個直接偵聽來自browser的http請求,乙個偵聽來自其它webserver的請求

coyote http/1.1 connector 在埠8080處偵聽來自客戶browser的http請求

coyote jk2 connector 在埠8009處偵聽來自其它webserver(apache)的servlet/jsp**請求

3.engine

engine下可以配置多個虛擬主機virtual host,每個虛擬主機都有乙個網域名稱

當engine獲得乙個請求時,它把該請求匹配到某個host上,然後把該請求交給該host來處理

engine有乙個預設虛擬主機,當請求無法匹配到任何乙個host上的時候,將交給該預設host來處理

4.host

5.context

[math processing error]cat

alin

ahom

e/co

nf/w

eb.x

ml和

它首先載入在$catalina_home/conf/web.xml中部署的servlet類。

web.xml檔案有兩部分:servlet類定義和servlet對映定義

假設來自客戶的請求為:

1.請求被傳送到本機埠8080,被在那裡偵聽的coyote http/1.1 connector獲得

2.connector把該請求交給它所在的service的engine來處理,並等待來自engine的回應

3.engine獲得請求localhost:8080/wo/w.jsp,匹配它所擁有的所有虛擬主機host

4.engine匹配到名為localhost的host(即使匹配不到也把請求交給該host處理,因為該host被定義為該engine的預設主機)

5.localhost host獲得請求/wo/w.jsp,匹配它所擁有的所有context

6.host匹配到路徑為/wo的context(如果匹配不到就把該請求交給路徑名為」「的context去處理)

8.context匹配到url pattern為*.jsp的servlet,對應於jspservlet類

9.構造httpservletrequest物件和httpservletresponse物件,作為引數呼叫jspservlet的doget或dopost方法

10.context把執行完了之後的httpservletresponse物件返回給host

11.host把httpservletresponse物件返回給engine

12.engine把httpservletresponse物件返回給connector

13.connector把httpservletresponse物件返回給客戶browser

修改 tomcat 預設的埠號:

開啟 conf 目錄下的 server.xml 檔案

修改埠號

tomcat 提供了乙個管理程式:manager,用於部署到 tomcat 伺服器中的 web 應用程式

要訪問 manager web 應用程式,需要新增具有管理員許可權的賬號,編輯 conf 目錄下的 tomcat-users.xml 檔案,新增 manager 角色,設定使用者名稱和密碼

1.乙個 web 應用程式是由一組 servlet,html 頁面,類,以及其它的資源組成的執行在 web 伺服器上的完整的應用程式,以一種結構化的有層次的目錄形式存在

2.組成 web 應用程式的這些檔案要部署在相應的目錄層次中,根目錄代表整個 web 應用程式的」根」

4.servlet 規範中定義了 web 應用程式的目錄層次:

Tomcat工作原理

tomcat內存在乙個process連線池,有請求過來會去連線池內獲取process物件對該請求進行處理,連線池有最小連線數和最大連線數,當前請求數超過最大連線數後超出的連線請求將會被丟棄,如果最大連線數設定為負數,則表示無最大連線數限制。乙個process物件接收到請求後不對請求做任何處理,直接建...

Tomcat工作原理

總體結構 tomcat 的結構很複雜,但是 tomcat 也非常的模組化,找到了 tomcat 最核心的模組,您就抓住了 tomcat 的 七寸 下面是 tomcat 的總體結構圖 從 上圖中可以看出 tomcat 的心臟是兩個元件 connector 和 container,關於這兩個元件將在後面...

Tomcat工作原理

engine容器 engine 容器比較簡單,它只定義了一些基本的關聯關係,介面類圖如下 它的標準實現類是 standardengine,這個類注意一點就是 engine 沒有父容器了,如果呼叫 setparent 方法時將會報錯。新增子容器也只能是 host 型別的,如下 public void ...