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