Servlet 工作原理解析
来源:互联网 发布:小ck 知乎 编辑:程序博客网 时间:2024/06/07 01:54
Tomact 主要类的启动时序图
上图描述了 Tomcat 启动过程中,主要类之间的时序关系,下面我们将会重点关注添加 examples 应用所对应的 StandardContext 容器的启动过程。
当 Context 容器初始化状态设为 init 时,添加在 Contex 容器的 Listener 将会被调用。ContextConfig 继承了 LifecycleListener 接口,它是在调用清单 3 时被加入到 StandardContext 容器中。ContextConfig 类会负责整个 Web 应用的配置文件的解析工作。
ContextConfig 的 init 方法将会主要完成以下工作:
- 创建用于解析 xml 配置文件的 contextDigester 对象
- 读取默认 context.xml 配置文件,如果存在解析它
- 读取默认 Host 配置文件,如果存在解析它
- 读取默认 Context 自身的配置文件,如果存在解析它
- 设置 Context 的 DocBase
ContextConfig 的 init 方法完成后,Context 容器的会执行 startInternal 方法,这个方法启动逻辑比较复杂,主要包括如下几个部分:
- 创建读取资源文件的对象
- 创建 ClassLoader 对象
- 设置应用的工作目录
- 启动相关的辅助类如:logger、realm、resources 等
- 修改启动状态,通知感兴趣的观察者(Web 应用的配置)
- 子容器的初始化
- 获取 ServletContext 并设置必要的参数
- 初始化“load on startup”的 Servlet
Web 应用的初始化工作
Web 应用的初始化工作是在 ContextConfig 的 configureStart 方法中实现的,应用的初始化主要是要解析 web.xml 文件,这个文件描述了一个 Web 应用的关键信息,也是一个 Web 应用的入口。
Tomcat 首先会找 globalWebXml 这个文件的搜索路径是在 engine 的工作目录下寻找以下两个文件中的任一个 org/apache/catalin/startup/NO_DEFAULT_XML 或 conf/web.xml。接着会找 hostWebXml 这个文件可能会在 System.getProperty("catalina.base")/conf/${EngineName}/${HostName}/web.xml.default,接着寻找应用的配置文件 examples/WEB-INF/web.xml。web.xml 文件中的各个配置项将会被解析成相应的属性保存在 WebXml 对象中。如果当前应用支持 Servlet3.0,解析还将完成额外 9 项工作,这个额外的 9 项工作主要是为 Servlet3.0 新增的特性,包括 jar 包中的 META-INF/web-fragment.xml 的解析以及对 annotations 的支持。
转自http://www.ibm.com/developerworks/cn/java/j-lo-servlet/
- Servlet 工作原理解析
- Servlet 工作原理解析
- Servlet 工作原理解析
- Servlet 工作原理解析
- Servlet 工作原理解析
- Servlet 工作原理解析
- Servlet 工作原理解析
- Servlet 工作原理解析
- Servlet 工作原理解析
- Servlet 工作原理解析
- Servlet 工作原理解析
- Servlet 工作原理解析
- Servlet 工作原理解析
- Servlet 工作原理解析
- Servlet 工作原理解析
- Servlet 工作原理解析
- Servlet 工作原理解析
- Servlet 工作原理解析
- URL encode 与 URL decode 的C语言实现
- vc6用unicode 编码方式来编译程序
- 外语学习的真实方法及误区
- window 快速启动ORACLE 服务
- 黑马程序员-day20综合练习
- Servlet 工作原理解析
- 数据系列:探索Windows Azure驱动器,磁盘以及镜像
- vc6.0转vc2010编程中遇到的问题
- linux内核部件分析(十一)——waitqueue与线程的阻塞
- 话题模型topic model的发展历史及典型方法介绍
- TI OMAP MUX configure
- sysfs API总结
- java使用kaptcha 验证码组件
- POJ 2739 素数