tomcat 中有4种种类的容器分别为: engine, host,context,wrapper
- 容器种类介绍
- engine 表示整个Catalina servlet 引擎
- host 表示包换一个或者多个 context 的 虚拟机引擎
- context 表示一个 web 应用程序,可以包含多个 wrapper
- wrapper 表示一个独立的servlet.
- 由 org.apache.catalina.core.StandardWrapperValve#invoke -->
getContainer() -> 调用 simpleWrapper#allocate 调用 loadServlet 获取servlet 实例(如果是 SingleThreadModel(不能真正保证servlet 安全), 则从 stack 实例中获取,最多可以创建20个。如果大于20个就需要等带)。然后调用 servlet#init 方法,初始化 servlet. (SimpleWrapper 本身实现 ServletConfig)
- 由 org.apache.catalina.core.StandardWrapperValve#invoke -->
- 容器种类关系
- 一个 engine 可以包含多个 host. 一个host 可以包含多个 context 一个 context 可以包含多个 wrapper 。 wrapper 为层级结构的最底层,不能再包子容器