Tomcat的容器模型和启动过程

最近在看Tomcat的源码,对Tomcat的架构深入地研究了下,下面让我们来看下Tomcat的容器模型:


从上图可以看出 Tomcat 的容器分为四个等级,真正管理 Servlet 的容器是 Context 容器,一个 Context 对应一个
Web 工程。

接下来我们来看下Tomcat 启动过程的时序图:


因为在Tomcat 的容器等级中,Context 容器是直接管理 Servlet 在容器中的包装类 Wrapper,所以 Context 容器如何运行将
直接影响 Servlet 的工作方式,所以很有必要了解StandardContext 容器详细的启动过程:

当 Context 容器初始化状态设为 init 时,添加在 Contex 容器的 Listener 将会被调用。ContextConfig 继承了

LifecycleListener 接口,它是在调用清单 3 时被加入到 StandardContext 容器中。ContextConfig 类会负责整个 Web
应用的配置文件的解析工作。
ContextConfig 的 init 方法将会主要完成以下工作:
1. 创建用于解析 xml 配置文件的 contextDigester 对象
2. 读取默认 context.xml 配置文件,如果存在解析它
3. 读取默认 Host 配置文件,如果存在解析它
4. 读取默认 Context 自身的配置文件,如果存在解析它
5. 设置 Context 的 DocBase
ContextConfig 的 init 方法完成后,Context 容器的会执行 startInternal 方法,这个方法启动逻辑比较复杂,主要包
括如下几个部分:
1. 创建读取资源文件的对象
2. 创建 ClassLoader 对象
3. 设置应用的工作目录
4. 启动相关的辅助类如:logger、realm、resources 等
5. 修改启动状态,通知感兴趣的观察者(Web 应用的配置)
6. 子容器的初始化
7. 获取 ServletContext 并设置必要的参数
8. 初始化“load on startup”的 Servlet

好了先写到这,下次我会写一下Tomcat中使用到的设计模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值