Tomcat 系統架構與設計模式

2021-08-05 19:26:04 字數 2085 閱讀 7374

tomcat 的結構很複雜,但是 tomcat 也非常的模組化,找到了 tomcat 最核心的模組,您就抓住了 tomcat 的「七寸」。下面是 tomcat 的總體結構圖:

圖 1.tomcat 的總體結構

從上圖中可以看出 tomcat 的心臟是兩個元件:connector 和 container,關於這兩個元件將在後面詳細介紹。connector 元件是可以被替換,這樣可以提供給伺服器設計者更多的選擇,因為這個元件是如此重要,不僅跟伺服器的設計的本身,而且和不同的應用場景也十分相關,所以乙個 container 可以選擇對應多個 connector。多個 connector 和乙個 container 就形成了乙個 service,service 的概念大家都很熟悉了,有了 service 就可以對外提供服務了,但是 service 還要乙個生存的環境,必須要有人能夠給她生命、掌握其生死大權,那就非 server 莫屬了。所以整個 tomcat 的生命週期由 server 控制。

我們將 tomcat 中 connector、container 作為乙個整體比作一對情侶的話,connector 主要負責對外交流,可以比作為 boy,container 主要處理 connector 接受的請求,主要是處理內部事務,可以比作為 girl。那麼這個 service 就是連線這對男女的結婚證了。是 service 將它們連線在一起,共同組成乙個家庭。當然要組成乙個家庭還要很多其它的元素。

說白了,service 只是在 connector 和 container 外面多包一層,把它們組裝在一起,向外面提供服務,乙個 service 可以設定多個 connector,但是只能有乙個 container 容器。這個 service 介面的方法列表如下:

圖 2. service 介面

tomcat 中 service 介面的標準實現類是 standardservice 它不僅實現了 service 藉口同時還實現了 lifecycle 介面,這樣它就可以控制它下面的元件的生命週期了。standardservice 類結構圖如下:

圖 3. standardservice 的類結構圖

從上圖中可以看出除了 service 介面的方法的實現以及控制項生命週期的 lifecycle 介面的實現,還有幾個方法是用於在事件監聽的方法的實現,不僅是這個 service 元件,tomcat 中其它元件也同樣有這幾個方法,這也是乙個典型的設計模式,將在後面介紹。

下面看一下 standardservice 中主要的幾個方法實現的**,下面是 setcontainer 和 addconnector 方法的原始碼:

清單 1. standardservice. setcontainer

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

public void setcontainer(container container) catch (lifecycleexception e)

}

synchronized (connectors)

if (started && (oldcontainer != null) && (oldcontainer instanceof lifecycle)) catch (lifecycleexception e) {

&nb

Tomcat 系統架構中設計模式解析

門面設計模式 門面設計模式的原理 這麼多場合都用到了這種設計模式,那這種設計模式究竟能有什麼作用呢?顧名思義,就是將乙個東西封裝成乙個門面好與人家更容易進行交流,就像乙個國家的 一樣。這種設計模式主要用在乙個大的系統中有多個子系統組成時,這多個子系統肯定要涉及到相互通訊,但是每個子系統又不能將自己的...

設計模式與架構設計

論設計模式在架構設計中的運用 設計模式 在我們現實的軟體專案開發中,常常會遇到一次又一次的關於軟體設計上的問題,而設計模式就針對那些問題提供了一系列的解決方案。設計模式是一種較高層次程式結構的設計策略 是一種技巧,它著重於為軟體系統 子系統內部的各物件間提供乙個良好的通訊平台,協調各者之間的關係,使...

軟體架構與設計模式

由於 gof95 是論述軟體模式的著作的第一本,也是oo設計理論著作中最流行的一本,因此有些人常常使用設計模式 design pattern 一詞來指所有直接處理軟體的架構 設計 程式實現的任何種類的模式。另外一些人則強調要劃分三種不同層次的模式 架構模式 architectural pattern...