2-tomcat启动流程-生命周期管理

一、tomcat启动流程

Bootstrap -> catalina -> server -> service -> connector、container等
启动流程用了模版方法和责任链模式
在这里插入图片描述
组件生命周期管理
tomcat是如何启动各组件,如何初始化各组件的?
所有组件都通过生命周期统一接口——Lifecycle来管理,
tomcat的组件关系类似于树的结构:
Server 包含了 Service,
Service 又包含了 Container 和 Connector,
tomcat启动时,通过启动父容器启动它的子容器,这 样只要启动根容器,就可以把其他所有的容器都启动,从而达到了统一的启动,停止、关闭的效果。
所有所有组件有一个统一的接口——Lifecycle,把所有的启动、停止、关闭、生命周期相关的方法都组织到一起,就可以很方便管理 Tomcat 各个容器 组件的生命周期。
Lifecycle类
3个核心方法:
init,start,stop
所有组件都是通过通用父类的init :初始化,同时这个方法调用抽象initInternal()方法,所有子类都重写方法。
同理start 也一样。
tomcat初始和启动组件是用了模版模式和管道模式(责任链模式)

tomcat中的管道模式
每一种 container 都有一个自己的 StandardValve (阀门)上面四个 container 对应的四个是: StandardEngineValve StandardHostValve StandardContextValve StandardWrapperValve
Pipeline(管道)将这些阀门连接起来。

四个 container 就相当于有Pipeline,四个 Pipeline 都这么干,直到最后的 StandardWrapperValve 拿到资源开始调用 servlet。完成后返回 来,一步一步的 valve 按照刚才丢pipeline顺序的倒序一次执行。如此才完成了 tomcat 的 Pipeline 的机制。
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tomcat启动流程可以通过对源码的分析来理解。在Tomcat中,整个启动和关闭过程是按照一定规则进行的,通过Lifecycle接口来管理组件的生命周期。\[2\]在启动过程中,父组件会调用子组件的init()和start()方法。因此,只要调用最顶层组件也就是Server组件的init()和start()方法,整个Tomcat就会被启动起来。\[2\] 在启动过程中,涉及到的组件需要进行初步梳理,并结合server.xml中的标签来理解各个组件的作用。可以通过Tomcat的架构设计图来进行梳理和修正。\[1\]在启动过程中,还涉及到了模板方法的设计模式,其中抽象方法会被具体的子类实现。这个过程可能会有一些绕,但是通过对源码的调试和理解,可以逐步搞清楚整个启动流程。\[1\] 此外,由于Tomcat定义了自己的Request类来存放客户端发来的请求信息,而这个Request对象不是标准的ServletRequest。为了解决这个问题,Tomcat引入了CoyoteAdapter,通过适配器模式将Tomcat Request转换成ServletRequest,再调用容器的Service方法。\[3\] 总结起来,Tomcat启动流程可以通过对源码的分析和调试来理解,其中涉及到组件的初始化和启动过程,以及对请求信息的处理和适配。 #### 引用[.reference_title] - *1* [Tomcat-启动流程](https://blog.csdn.net/wyy546792341/article/details/126576803)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Tomcat主要结构和启动流程](https://blog.csdn.net/songcf_faith/article/details/124653240)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值