Servlet容器的启动过程--Tomcat为例子

本文详细解析了Tomcat容器等级中Context容器的角色及其在Web应用启动过程中的关键作用,包括如何通过配置参数url和path创建并管理StandardContext容器,以及ContextConfig类在解析XML配置文件和应用初始化过程中的核心职责。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Tomcat的容器等级中,Context容器直接管理Servlet在容器中的包装类Wrapper,所以Context容器如何运行将直接影响Servlet的工作方式.而且一个Context对应一个Web工程.

添加一个Web应用时将会创建一个StandardContext容器,并且给Context容器设置必要的参数url和path,一个是访问路径而另外一个是应用的实际物理路径,这两个参数就是Tomcat中的配置参数.其中最重要的一个配置是ContextConfig,它负责整个Web应用配置的解析工作.最后还要把这个Context容器加到父容器Host中.接下来就可以启动Tomcat了.

Tomcat的启动逻辑是基于观察者设计模式设计的,所有的容器都会继承Lifecycle接口,它管理着容器的整个生命周期,所有容器的修改和状态的改变都会由它去通知已经注册的观察者(Listener).



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

5.修改启动状态,通知感兴趣的观察者(Web应用的配置)

6.子容器的初始化

7.获取ServeletContext并且设置必要的参数

8.初始化"load on startup"的Servlet

Web应用的初始化工作是在ContextConfig的configureStart方法中实现的,应用初始化就是要解析web.xml文件.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值