tomcat8底层源码分析

tomcat8启动流程

首先需要将源码导入idea中,找到核心启动类:Bootstrap
大致流程:
Java中应用采用main函数运行
Tomcat启动的时候
1、Init初始化我们的tomcat需要组件(Connector、Service、Container、Wrapper)空对象.
2、Load加载我们的conf/server. xml到程序中
3、Start启动我们tomcat可能初始化我们的servlet类
4、Stop销毁操作,

启动分析

1、tomcat 本身是Java语言编写的应用程序,再启动的时候入口类为 Bootstrap main函数。
在这里插入图片描述


在这里插入图片描述2、执行到Bootstrap main函数中的init方法。
使用Java反射技术实例化我们的Catalina (Catalina实际上就是一个包装类,包装了所有的 tomcat核心组件:Connector、Service、Container、Wrapper)
在这里插入图片描述


在这里插入图片描述
3、根据命令执行到Bootstrap main 函数中的 load 方法,再使用Java 的反射机制执行Catalina的 load方法。
在这里插入图片描述4、Catalina的 load 方法解析 conf/server.xml配置文件,并且读取到程序中,并且初始化 server
在这里插入图片描述解析配置文件,将server.xml里面的内容读取到程序中。
在这里插入图片描述
5、调用LifecycleBase类的init方法初始化server,
tomcat采用责任链模式初始化其他组件,server初始化之后,开始初始化 service

依次往下初始化组件
Server.
–Service运行存在多个负责我们tomcat业务逻辑操作
----Connector连接器(主要负责监听我们的客户端请求和封装请求和响应)
------Containet(容器)tutooneeese5wetesscsoeaerees
---------host.
------------context.
----------------Wrapper.

在这里插入图片描述
6、在ContextConfig 中的 webConfig方法中解析项目的 web.xml 文件,如果有的话,再开始初始化
在这里插入图片描述
7、运行tomcat项目时,判断项目中是否有web.xml,检查web.xml servlet配置。如果有的情况下,再开始初始化。
上下文:指的是这个应用程序,这个项目
StandardWrapper指定我们我们的 WrapperServlet_的类
StandardContext我们的上下文运行我们应用程序
Connector连接类:连接器的创建:创建socket连接(有四种通讯协议【推荐使用NIO】,apr是tomcat内部协议,可以用于tomcat内部通讯) ,监听客户端请求,
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值