Tomcat源码解析(一)

第一讲.tomcat总体架构

1 Tomcat历史

Tomcat最初有sun公司的架构师James Duncan Davidson开发,名称“JavaWebServer”

1999与Apache软件基金会旗下的JServ项目合并,也就是Tomcat。

2001 tomcat4.0  里程碑式的版本。完全重新设计了其架构,并实现了Servlet2.3和JSP 1.2规范。

到目前,Tomcat已经成为成熟的Servlet容器产品,并作为 JBoss等应用的服务器的内嵌Servlet容器

规范JDK

版本

6.X

7.X

8.X

8.5.X

9.X

JDK

》=5.0

》=6.0

》=7.0

》=7.0

》=8.0

Servlet

2.5

3.0

3.1

3.1

4.0

JSP

2.1

2.2

2.3

2.3

2.3

EL

2.1

2.2

3.0

3.0

3.0

WebSocket

N/A

1.1

1.1

1.1

1.1

Tomcat许可

完全免费

修改后不必公开源代码

2、总体结构

Server:接受请求并解析,完成相关任务,返回处理结果

通常情况下使用Socket监听服务器指定端口来实现该功能,一个最简单的服务设计如下:

                       

 

Start():启动服务器,打开socket连接,监听服务端口,客户端请求、处理、返回响应

Stop():关闭服务器,释放资源

缺点:请求监听和请求处理放一起扩展性很差(协议的切换 tomcat独立部署使用HTTP协议与Apache集成时使用AJP协议

改进:网络协议请求处理分离

             

 

一个Server包含多个Connector(链接器)和Container(容器)

Connector:开启Socket并监听客户端请求,返回响应数据;

Container:负责具体的请求处理

缺点:Connector接受的请求由那个Container处理,需要建立映射规则

改进:

                                                                     

 

一个Server可以包含多个Service,每一个Service都是独立的,他们共享一个JVM以及系统类库。

一个Service负责维护多个Connector和一个Container,这样来自Connector的请求只能有它所属的Service维护的Container处理。

在这里Container是一个通用的概念,为了明确功能,并与Tomcat中的组件名称相同,可以将Container命名为Engineer

                           

  在Engine容器中需要支持管理WEB应用,当接收到Connector的处理请求时,Engine容器能够找到一个合适的Web应用来处理,因此在上面设计的基础上增加Context来表示一个WEB应用,并且一个Engine可以包含多个Context。   

          

缺点:应用服务器需要将每个域名抽象为一个虚拟主机

               

 

在一个web应用中,可以包含多个Servlet实例来处理来自不同的链接请求,因此我们还需要一个组件概念来表示Servlet定义,即Wrapper。

             

 在前面的多次Container容器中,有Engine、Host、Context、Wrapper等,可以理解为Container的子类.

   

Connector:

 

容器之间的组合关系是一种弱依赖,用虚线表示

每一个组件都有启动、停止等生命周期方法,拥有生命周期的特征。所以定义一个通用的LifeCycle接口,

 

 

Pipeline和Value

Connector设计

功能:

  1. 监听socket服务器端口,读取来自客户端的请求
  2. 使用指定的协议解析请求数据
  3. 根据请求地址匹配正确的容器解析处理
  4. 将响应返回给客户端

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                       

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tomcat源码解析是对Tomcat服务器的源代码进行分析和解读的过程。通过对Tomcat源码的研究,可以深入了解Tomcat的整体架构、连接器的内部结构、容器分析以及Tomcat的启动流程等方面的内容。 Tomcat的整体架构包括配置文件server.xml的分析和连接器的内部结构。配置文件server.xml是Tomcat的主要配置文件,通过对其进行分析可以了解Tomcat的各个组件和配置项的作用。连接器是Tomcat的核心组件之一,负责处理客户端请求并将其转发给相应的容器进行处理。 Tomcat的启动流程是通过实现Lifecycle接口的各个组件来完成的。在启动过程中,Tomcat会按照一定的顺序初始化和启动各个组件,确保它们能够正常工作。具体的启动流程可以通过阅读源码中的相关方法和注释来了解。 Tomcat底层使用了Netty来实现IO相关的操作,但与Netty有所区别,因为Tomcat对部分处理进行了封装。通过对Tomcat源码的学习,可以了解Tomcat底层的实现逻辑、各个组件的配合方式以及各种设计模式的交互。 如果你对Tomcat源码解析感兴趣,可以参考提供的源码和相关文章进行深入研究。通过深入研究Tomcat源码,你可以更好地理解Tomcat的工作原理和内部机制。 #### 引用[.reference_title] - *1* [Tomcat源码分析](https://blog.csdn.net/sun_code/article/details/123554480)[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^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [tomcat线程模型-源码解析](https://blog.csdn.net/qq_16498553/article/details/126080174)[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^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值