Tomcat的工作原理

2022-03-13 10:48:20 字數 2530 閱讀 1619

server:乙個server 元素代表整個catalina servlet容器. (單例模式設計)

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

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

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

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

host:虛擬主機,每個虛擬主機和某個網路網域名稱domain name相匹配。

context:

<

server

port

="8005"

shutdown

="shutdown"

debug

="0"

>

<

listener

classname

="org.apache.catalina.mbeans.serverlifecyclelistener"

debug

="0"

/>

<

listener

classname

="org.apache.catalina.mbeans.globalresourceslifecyclelistener"

debug

="0"

/>

<

globalnamingresources

>

... ... ... ...

globalnamingresources

>

<

service

name

="tomcat-standalone"

>

<

connector

classname

="org.apache.coyote.tomcat4.coyoteconnector"

port

="8080"

minprocessors

="5"

maxprocessors

="75"

acceptcount

="100"

enablelookups

="true"

redirectport

="8443"

debug

="0"

connectiontimeout

="20000"

useurivalidationhack

="false"

disableuploadtimeout

="true"

/>

<

engine

name

="standalone"

defaulthost

="localhost"

debug

="0"

>

<

logger

classname

="org.apache.catalina.logger.filelogger"

.../>

<

realm

classname

="org.apache.catalina.realm.userdatabaserealm"

.../>

<

host

name

="localhost"

debug

="0"

unpackwars

="true"

autodeploy

="true"

>

<

logger

classname

="org.apache.catalina.logger.filelogger"

.../>

<

context

path

=""docbase

="mycontext"

debug

="0"

/>

<

context

path

="/wsota"

docbase

="wsotaproject"

debug

="0"

/>

host

>

engine

>

service

>

server

>

tomcat啟動的時候,先載入server.xml,然後載入web.xml。

Tomcat工作原理

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

Tomcat工作原理

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

Tomcat工作原理

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