Tomcat源码-换个角度看架构和核心流程

简介: Tomcat源码-换个角度看架构和核心流程

一、  换个角度看架构


1.Connector


  Connector连接器接收外界请求,然后转换为对应的ServletRequest对象。


image.png

涉及到的几个对象的作用:

image.png

  在有多线程处理的情况下,通过Executor线程池来处理:


image.png

官网的流程图:tomcat.apache.org/tomcat-8.5-…


image.png



2.Container


Container容器是在Connector处理完请求后获取到ServletRequest后内部处理请求的统一管理对象。

image.png


而需要把上面这个图的内容搞清楚,直接看代码的话还是比较头晕的,这时我们可以结合Tomcat的运行过程来分析




二、Tomcat核心流程


image.png

1.Bootstrap


  Bootstrap是Tomcat的入口类,相关的核心方法:


  • init():自定义类加载器和创建Catalina方法


  • load():会完成相关对象的初始化


  • start():启动各种对象的start()方法


  • ....


  initClassLoaders()完成了自定义类加载器。JVM中提供的类加载器是双亲委派模式,在Tomcat中自定义了加载方式。打破了双亲委派模型:先自己尝试去加载这个类,找不到再委托给父类加载器。通过复写findClass和loadClass实现。




2.Catalina


  完成server.xml文件的解析,完成Server组件并具体调用相关的组件的init和start方法



3.Lifecycle


  统一管理各个组件的生命周期,init,start,stop,destory方法,对应的实现是LifecycleBase实现了Lifecycle中的生命周期相关逻辑,用到了模板设计模式。



4.Server



  管理Service组件,并调用其init和start方法



5.Service


  管理Connector和Engine



6.Connector


7.Container


Container容器是在Connector处理完请求后获取到ServletRequest后内部处理请求的统一管理对象。


image.png

init方法

image.png


start方法


image.png

Container的处理过程

image.png

最后看看StandardHost是如何来实现Web项目部署的

image.png



相关文章
|
2月前
|
JSON JavaScript 前端开发
Vue3源码架构简析及Monorepo流程构建
【10月更文挑战第12天】Vue3源码架构简析及Monorepo流程构建
Vue3源码架构简析及Monorepo流程构建
|
1月前
|
数据采集 监控 前端开发
二级公立医院绩效考核系统源码,B/S架构,前后端分别基于Spring Boot和Avue框架
医院绩效管理系统通过与HIS系统的无缝对接,实现数据网络化采集、评价结果透明化管理及奖金分配自动化生成。系统涵盖科室和个人绩效考核、医疗质量考核、数据采集、绩效工资核算、收支核算、工作量统计、单项奖惩等功能,提升绩效评估的全面性、准确性和公正性。技术栈采用B/S架构,前后端分别基于Spring Boot和Avue框架。
|
4天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
22 3
|
2月前
|
Java Spring
Spring底层架构源码解析(三)
Spring底层架构源码解析(三)
147 5
|
2月前
|
XML Java 数据格式
Spring底层架构源码解析(二)
Spring底层架构源码解析(二)
|
Java 应用服务中间件 Maven
怎么读 Tomcat 源码?
上次分享了一篇关于 Tomcat 的文章《写一款 Tomcat 也没有那么难》,真有读者去下载了 Tomcat 的源码来研读,但搞了很久也没有把它在 IDEA 的开发环境给成功跑起来。
169 0
怎么读 Tomcat 源码?
|
Java 应用服务中间件 Apache
|
2月前
|
安全 应用服务中间件 网络安全
Tomcat如何配置PFX证书?
【10月更文挑战第2天】Tomcat如何配置PFX证书?
238 7
|
2月前
|
存储 算法 应用服务中间件
Tomcat如何配置JKS证书?
【10月更文挑战第2天】Tomcat如何配置JKS证书?
370 4
|
4月前
|
网络协议 Java 应用服务中间件
tomcat配置域名及HTTPS
tomcat配置域名及HTTPS
下一篇
DataWorks