Tomcat-Tomcat源码结构介绍

简介: Tomcat-Tomcat源码结构介绍

1、Tomcat源码结构介绍


  在分析Tomcat源码之前,我们先来看下Tomcat源码的结构组成,这样会更加的有利于我们更好的来分析源码。


1.项目源码结构


我们先从源码结构开始。Tomcat 服务器相关的代码在 java 文件夹下面,后面我们在进入这个文件夹去分析:


image.png

之前如何手动在Tomcat中部署过项目的话,这块应该会比较清楚点。



2.Tomcat源码结构


Tomcat 源码位于 java 文件夹下面。这个java文件夹中的每个包的作用,我们简单的来介绍下,后面在分析核心源码的时候会重点讲解。


image.png

我们可以看到在java目录下,分为了两个结构,一个是javax另一个是org.apache这两个包



2.1 javax


在javax中保存的是新的JavaEE规范。可以具体来看看每个目录的作用。

image.png


模块 作用说明
annotation annotation 这个模块的作用是定义了一些公用的注解,避免在不同的规范中定义相同的注解。
ejb ejb是个古老的传说,我们不管
el 在jsp中可以使用EL表达式,这么模块解析EL表达式的
mail 和邮件相关的规范
persistence 持久化相关的
security 和安全相关的内容
servlet 这个指定的是Servlet的开发规范,Tomcat本质上就是一个实现了Servlet规范的一个容器,Servlet定义了服务端处理Http请求和响应的方式(规范)
websocket 定义了使用 websocket 协议的服务端和客户端 API
xml.ws 定义了基于 SOAP 协议的 xml 方式的 web 服务



2.2 org.apache


org.apache这个包是Tomcat的源码包,也是针对上面的JavaEE规范的部分实现,Tomcat的本质就是对JavaEE的某些规范的实现合集,首先肯定实现了Servlet规范

image.png


模块 作用
catalina catalina是Tomcat的核心模块,里面完整的实现了Servlet规范,Tomcat启动的主方法也在里面,后面我们分析的重点。
coyote tomcat 的核心代码,负责将网络请求转化后和 Catalina 进行通信。
el 这个是上面javax中的el规范的实现
jasper 主要负责把jsp代码转换为java代码。
juli 日志相关的工具
naming 命名空间相关的内容
tomcat 各种辅助工具,包括 websocket 的实现。




3.Tomcat模块设计


连接器的作用:


  • 连接器功能· 监听网络端口。


  • 接受网络连接请求。


  • 根据具体应用层协议(http/ajp)解析字节流,生成统一的Tomcat Request对象。


  • 将Tomcat Request对象转成标准的ServletRequest。


  • 调用Servlet容器,得到ServletResponse。


  • 将ServletResponse转成Tomcat Response对象。


  • 将Tomcat Response转成网络字节流。


  • 将响应字节流写回给浏览器。


image.png


image.png



相关文章
|
7月前
|
安全 Java 应用服务中间件
阿里技术官架构使用总结:Spring+MyBatis源码+Tomcat架构解析等
分享Java技术文以及学习经验也有一段时间了,实际上作为程序员,我们都清楚学习的重要性,毕竟时代在发展,互联网之下,稍有一些落后可能就会被淘汰掉,因此我们需要不断去审视自己,通过学习来让自己得到相应的提升。
|
4月前
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件
|
7月前
|
存储 Java Unix
tomcat结构目录有哪些?
这些是Tomcat目录结构的主要部分,具体的目录结构可能会因Tomcat版本和配置而有所不同。这些目录和文件在Tomcat服务器的正常运行和Web应用程序的部署中起着关键作用。
68 0
|
7月前
|
设计模式 算法 前端开发
Tomcat的源码剖析, 启动过程你会吗?
基于JMX Tomcat会为每个组件进行注册过程,通过Registry管理起来,而Registry是基于JMX来实现的,因此在看组件的init和start过程实际上就是初始化MBean和触发MBean的start方法,会大量看到形如: Registry.getRegistry(null, null).invoke(mbeans, "init", false); Registry.getRegistry(null, null).invoke(mbeans, "start", false); 这样的代码,这实际上就是通过JMX管理各种组件的行为和生命期。
38 0
|
Java 应用服务中间件 Maven
最通俗易懂的 - Tomcat 核心源码仿写 第二版代码
Tomcat 核心源码仿写的第二版代码,升级为Maven项目,并将单线程改为多线程
77 0
|
Java 应用服务中间件 数据格式
Tomcat 核心源码解析 及 仿写
介绍Tomcat的核心功能原理,并仿写Tomcat核心功能源码 包括: 1、如何生成Servlet实例对象并管理 2、如何与浏览器建立连接并获取http报文,解析报文获取请求,并响应 最后有效果演示和源码gitee地址
125 0
|
缓存 网络协议 应用服务中间件
手写Tomcat源码简易篇
手写Tomcat源码简易篇
|
Java 应用服务中间件 Maven
Tomcat - 源码构建Tomcat 8.5.55 启动
Tomcat - 源码构建Tomcat 8.5.55 启动
119 0
|
Java 应用服务中间件 容器
Tomcat8源码解析(二)
2.Tomcat启动阶段 daemon.start(),tomcat的启动阶段分析 getServer().start(),方法启动Server,源码分析 services[i].start(),启动
86 0
|
前端开发 应用服务中间件 容器
Tomcat8源码解析(一)
Tomcat8源码解析 Tomcat总体架构 Tomcat源码搭建 tomcat软件和源码文件下载链接:https://tomcat.apache.org/download-80.cgi 创建一个to
141 0