我們看下幾個(gè)Container之間的關(guān)系:
從上圖上,我們也可以看出Container頂層也是基于Lifecycle的組件設(shè)計(jì)的。
1、在設(shè)計(jì)Container組件層次組件時(shí),上述4個(gè)組件分別做什么的呢?為什么要四種組件呢?
Engine - 表示整個(gè)catalina的servlet引擎,多數(shù)情況下包含一個(gè)或多個(gè)子容器,這些子容器要么是Host,要么是Context實(shí)現(xiàn),或者是其他自定義組。
Host - 表示包含多個(gè)Context的虛擬主機(jī)的。
Context — 表示一個(gè)ServletContext,表示一個(gè)webapp,它通常包含一個(gè)或多個(gè)wrapper。
Wrapper - 表示一個(gè)servlet定義的(如果servlet本身實(shí)現(xiàn)了SingleThreadModel,則可能支持多個(gè)servlet實(shí)例)。
2、結(jié)合整體的框架圖中上述組件部分,我們看下包含了什么?
很明顯,除了四個(gè)組件的嵌套關(guān)系,Container中還包含了Realm,Cluster,Listeners, Pipleline等支持組件。這一點(diǎn),還可以通過相關(guān)注釋可以看出: