Tomcat源码分析(2)--始于启动类

本文详细解析了Tomcat启动过程中的关键步骤,包括Bootstrap类的静态块作用、核心方法init的执行流程、类加载器初始化、Catalina类实例化过程、load方法中的Digester使用及server.xml配置文件解析原理。

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

静态块

虽然Tomcat启动是由脚本文件开始的,但是最终的启动还是在Boostrap类,我们看到这个类中有一个静态块,代码如下:

这里写图片描述

这里写图片描述

主方法

核心方法总览

静态块之后就是主方法了,核心代码如下:

这里写图片描述

这里写图片描述

这里面实例化了Bootstrap 类并调用其init方法,完成了一些初始化工作,通过传递的参数确定当前需要执行的的命令为“start”,然后调用Bootstrap类实例的load和start方法。

init方法

  • 方法总览

Bootstrap作为程序入口,在实例化对象后,执行了其init方法

这里写图片描述

这里完成了类加载器的初始化工作并将其设置为当前线程的上下文加载器,然后利用反射机制实例化了Catalina类,catalinaDaemon即代表该对象的实例

  • initClassLoader方法

这里写图片描述

该方法实现如下:

这里写图片描述

这里的三个加载器都是在catalina.properties 中配置的,只是有两个为空而已

这里写图片描述

load方法

这里写图片描述

catalina类的load的方法实现如下:

这里写图片描述

这里写图片描述

这里写图片描述

在这个方法里面创建了一个Digester对象,并将当前对象压入Digester里的对象栈顶,根据inputSource里设置的server.xml文件路径及所创建的Digester对象所包含的解析规则生成相应对象,并调用相应方法将对象之间关联起来。
解析xml文件的规则在createStartDigester方法中
该方法定义如下(这里只截取部分代码)

这里写图片描述

根据server.xml文件 完成相关对象的实例化,这些对象的包含关系通过server.xml文件可以看出来

这里写图片描述

这些对象包括:

org.apache.catalina.core.StandardServer
org.apache.catalina.core.StandardService
org.apache.catalina.connector.Connector
org.apache.catalina.core.StandardEngine
org.apache.catalina.core.StandardHost。。。

当然除了这些主要的容器外还有其他的对象,这里不做过多阐述.

然后调用Server接口对象的init方法。

start方法

这里写图片描述

在这里调用Server接口实现类的start方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值