美文网首页容器
Tomcat——Tomcat启动流程

Tomcat——Tomcat启动流程

作者: 小波同学 | 来源:发表于2021-11-13 01:00 被阅读0次

一、Tomcat 启动流程

步骤:

  • 1、启动tomcat,需要调用 bin/startup.bat (在linux 目录下,需要调用 bin/startup.sh),在startup.bat 脚本中,调用了catalina.bat。
  • 2、在catalina.bat 脚本文件中,调用了BootStrap 中的main方法。
  • 3、在BootStrap 的main 方法中调用了init方法 , 来创建Catalina 及初始化类加载器。
  • 4、在BootStrap 的main 方法中调用了load 方法 , 在其中又调用了Catalina的load方
    法。
  • 5、在Catalina 的load方法中,需要进行一些初始化的工作,并需要构造Digester 对象,用于解析 XML。
  • 6、然后在调用后续组件的初始化操作。加载Tomcat的配置文件,初始化容器组件,监听对应的端口号,准备接受客户端请求。

1.1、相关类解析

1.1.1、Lifecycle

由于所有的组件均存在初始化、启动、停止等生命周期方法,拥有生命周期管理的特
性, 所以Tomcat在设计的时候, 基于生命周期管理抽象成了一个接口 Lifecycle ,而组
件 Server、Service、Container、Executor、Connector 组件 , 都实现了一个生命周期
的接口,从而具有了以下生命周期中的核心方法:

  • 1、init():初始化组件
  • 2、start():启动组件
  • 3、stop():停止组件
  • 4、destroy():销毁组件

1.1.2、各组件的默认实现

上面我们提到的Server、Service、Engine、Host、Context都是接口, 下图中罗列了这
些接口的默认实现类。当前对于 Endpoint组件来说,在Tomcat中没有对应的Endpoint
接口, 但是有一个抽象类 AbstractEndpoint ,其下有三个实现类: NioEndpoint、
Nio2Endpoint、AprEndpoint , 这三个实现类,分别对应于前面讲解链接器 Coyote
时, 提到的链接器支持的三种IO模型:NIO、NIO2、APR,Tomcat8.5版本中,默认采
用的是 NioEndpoint。

ProtocolHandler:Coyote协议接口,通过封装Endpoint和Processor , 实现针对具体
协议的处理功能。Tomcat按照协议和IO提供了6个实现类。

AJP协议:
  • 1、AjpNioProtocol:采用NIO的IO模型。
  • 2、AjpNio2Protocol:采用NIO2的IO模型。
  • 3、AjpAprProtocol:采用APR的IO模型,需要依赖于APR库。
HTTP协议:
  • 1、Http11NioProtocol:采用NIO的IO模型,默认使用的协议(如果服务器没有安装
    APR)。
  • 2、Http11Nio2Protocol:采用NIO2的IO模型。
  • 3、Http11AprProtocol:采用APR的IO模型,需要依赖于APR库。

源码入口

目录: org.apache.catalina.startup
MainClass:BootStrap ‐‐‐‐> main(String[] args)

总结

从启动流程图中以及源码中,我们可以看出Tomcat的启动过程非常标准化, 统一按照生
命周期管理接口Lifecycle的定义进行启动。首先调用init() 方法进行组件的逐级初始化操
作,然后再调用start()方法进行启动。

每一级的组件除了完成自身的处理外,还要负责调用子组件响应的生命周期管理方法,
组件与组件之间是松耦合的,因为我们可以很容易的通过配置文件进行修改和替换。

参考:
https://www.cnblogs.com/wansw/p/10232613.html

相关文章

  • Tomcat启动分析2_catalina.sh

    Tomcat8.5.9启动流程分析2 catalina.sh 脚本 结束tomcat进程流程 脚本对tomcat进...

  • Tomcat——Tomcat启动流程

    一、Tomcat 启动流程 步骤: 1、启动tomcat,需要调用 bin/startup.bat (在linux...

  • Tomcat源码解析三 Connector连接器

    引言 上文分析了Tomcat的启动流程,我们已经大致理清了Tomcat启动的整个流程,本文将会对Connector...

  • Tomcat启动流程

    勾勒一下Tomcat启动的流程,以便后续查找。(基于Tomcat 8.5.16) Bootstrap initCl...

  • Tomcat源码简要解析

    Tomcat架构图 源码流程如下 整个启动流程图如下: 结构图如下 小结 我们常用的如下 那么Tomcat容器到底...

  • Tomcat 启动流程

    title: Tomcat 启动流程date: 2020/05/12 17:06 Bootstrap#main()...

  • Tomcat启动流程

    Tomcat启动分析 Tomcat作为独立的Servlet容器启动时,由引导类Bootstrap启动,Bootst...

  • tomcat优化

    tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚...

  • Tomcat 启动初始化

    tomcat 启动类 我们通过tomcat的catalina.sh 的脚本启动tomcat时,执行的是tomcat...

  • 手写springboot的核心流程

    spring容器以及Tomcat启动流程 在CasSpringApplication的run方法中启动spring...

网友评论

    本文标题:Tomcat——Tomcat启动流程

    本文链接:https://www.haomeiwen.com/subject/nheazltx.html