Tomcat 启动流程

article/2025/10/28 21:19:56

目录

一:流程

二:源码解析

1.Lifecycle

2 .各组件的默认实现

3 .源码入口

三:总结


一:流程

 

步骤 :
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.Lifecycle

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

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

 

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 库。

3 .源码入口

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

 

三:总结

           从启动流程图中以及源码中,我们可以看出 Tomcat 的启动过程非常标准化, 统一按照生命周期管理接口Lifecycle 的定义进行启动。首先调用 init() 方法进行组件的逐级初始化操作,然后再调用start() 方法进行启动。
           每一级的组件除了完成自身的处理外,还要负责调用子组件响应的生命周期管理方法,组件与组件之间是松耦合的,因为我们可以很容易的通过配置文件进行修改和替换。

http://chatgpt.dhexx.cn/article/GQmcEEQq.shtml

相关文章

tomcat两种启动方式

tomcat的两种启动方式,第一种,直接点击bin/startup.bat启动,第二种注册成服务启动 1、通过startup.bat启动 指定jdk:在tomcat/bin/setclasspath.bat 里面添加(为什么要在setclasspath.bat里面添加,因为通…

深入springboot怎么启动tomcat

深入springboot怎么启动tomcat EnableAutoConfiguration做了哪些事小总结 Tomcat何时启动的呢?小总结 这是中高级工程师面试中常问的问题。 知道现在有多卷了吧! 我记得我刚找工作那会儿,我只要8000的工资,面试官都要问这个问题。…

Windows如何设置Tomcat开机启动?

前置步骤: 在tomcat中的bin目录下,双击startup.bat运行tomcat, 在浏览器正常打开Tomcat情况下,说明tomcat安装正常,双击shutdown.bat停掉tomcat 第一步: 1、设置环境变量 2、在 用户变量 新建 CATALINA_H…

Linux服务器启动tomcat的三种方式

直接进入主题,首先cd进入tomcat的bin文件夹下,然后可以尝试以下三种启动方式: 第一种(当前会话启动): ./startup.sh 效果: 然后tomcat就在后台启动了,我们还可以在当前会话中继续输入其它指令…

Tomcat-启动流程

文章目录 叨叨程序入口加载load流程简述Bootstrap.load()Catalina.load(params)init()模板方法init流程总结 start()模板方法流程简述start()模板方法Host.start()特别说明 叨叨 讲真,最开始源码调试几遍下来还是很懵了,尤其是组件初始化过程中不断去调用…

java教程(三)初识J2ee十三个规范

 我目前是个java未入门的新手,这边看到高手的一些文章,转载过来。---haogting J2EE是一套全然不同于传统应用开发的技术架构,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与复用价值。 …

J2EE【开发环境搭建】

EasyUI【DataGrid数据查询】_云彩123的博客-CSDN博客_easyui 获取datagrid数据如需温习上一节内容,请点击下方链接进行跳转:EasyUI(Tree后端工作)_云彩123的博客-CSDN博客用户信息表(T_User)列名数据类型长度允许空默认值说明idva…

J2EE(环境搭建)

目录 一、jdk安装&环境配置 A、拿到exe文件 B、默认安装位置 C、配置环境变量 D、注意事项 二、Eclipse安装&设置默认编码集 A、解压 B、选择工作区间 C、设置默认编码集 Ca、设置jsp默认编码 Cb、设置workspace编码方式 三、配置Tomcat及JDK A、配置Tomcat …

java quartz 教程_Quartz 教程

一、关于 Quartz Quartz logo Quartz 是一个完全由 Java 编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。 Quartz 可以与 J2EE 与 J2SE 应用程序相结合也可以单独使用。 Quartz 允许程序开发人员根据时间的间隔来调度作业。 Quartz 实现了作…

J2EE入门:环境搭建

前言: JDK的安装以及JDK的环境配置 tomcat的安装 Eclipce的环境配置 MySQL的安装 JDK安装以及环境配置 直接点击JDK安装包安装 JDK默认安装位置:C:\Program Files\Java 然后双击jdk144文件夹 进来之后选中地址栏复制地址 然后退出至桌面,右键桌面…

J2EE之旅(入门)

从这次开始我们就要开始学习j2ee,我们先来介绍一下我们将要使用到的 1.测试工具:ApiPost_Setup_5.4.2_x64.exe 2.开发工具:vs 3.数据库:考虑了多方面,数据库我们就选用mysql 4.数据库可视化工具: 由于这些软件安装大部…

J2EE入门教程

2005-12-11 20:20:21 J2EE入门教程本教程讲述Sun J2EE 1.3 SDK的安装、配置和创建并部署第一个简单的EJB。我们的目标平台是Windows XP SP2,JDK 1.4.2和J2EE SDK 1.3.1的Windows版本。我们在下面的实践中主要使用命令行模式,便于深入J2EE的内部机制。首先…

如何拥有个人的Github技术博客

题图:87testing.com 前不久用wordpress搭建了一个博客,用起来感觉不是太好用,并且数据库经常会发生异常挂掉,没找到解决方案。 看到有不少人使用的hexogithub方式搭建属于自己的博客, 于是,我也做了一些尝试…

github博客+hexo

这里基于ubuntu18,win10其实一样的,把sudo去掉就行了 安装 安装git 配置github的ssh 安装Node.js 版本需不低于 10.13,建议使用 Node.js 12.0 及以上版本 建议换个源 npm install express --registryhttps://registry.npm.taobao.org在gi…

【hexo+gitee/github】博客搭建

文章目录 参考资料1. 使用gitee(github)与hexo好处2. 安装2.1 安装Nodejs2.2 安装git2.3 安装Hexo 3. 建站4. 启动5. 配置5.1 主题配置 6. 部署到gitee pages6.1 创建一个gitee仓库6.2 配置路径6.3 开启GiteePages服务6.4 github pages部署6.4. 博客源代…

hexo+github部署个人博客

文章目录 hexogithub部署个人博客前期准备hexo搭建个人博客新建GitHub仓库将个人博客部署到Git pages写文章和发布文章Hexo优化修改博客目录下的_config.yml配置 matery主题美化 hexogithub部署个人博客 前期准备 安装git git的下载地址安装node.js node.js注册github账号&am…

利用github进行自定义博客地址

写在前面: 大家好,我是 花狗Fdog ,来自内蒙古的一个小城市,目前在泰州读书。 很感谢能有这样一个平台让我能够在这里分享所学所感。 我喜欢编程,喜欢代码,喜欢去做一个程序员。 努力学习,争取多…

如何搭建github.io博客

零、宣传我的Github.io博客 https://ruixiangjiang.github.io/ 如果我的电脑没开就不能访问。。。正在调试中。。。 一、注册一个账号 进入www.github.com ,然后注册。首页右上角头像那里有一个“”号,点击后选择“New repositor”。创建完之后点击“…

使用Github.io打造个人博客网站

Github.io上可以方便地打造自己的博客网站,相对于CSDN等社区网站来说既没有广告又能凸显个人调性。 建站步骤 建站步骤非常简单 在个人github上建一个repository,名字必须是username.github.io 推送一个静态html上去 # clone the prj git clone htt…

搭建hexo+Github博客

摘要 本文主要向大家介绍了如何搭建hexo-Github博客的详细过程,有需要的朋友们可以尝试阅读,希望对大家有帮助。 简要吐槽 搭博客其实没那么麻烦,但是在网上各类教程的“指导下”,我不知道放弃了多少次又重新试了多少次&#xff…