我们看下几个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等支持组件。这一点,还可以通过相关注释可以看出: