原文地址:http://blog.csdn.net/nblife0000/article/details/54565576

简介

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成,从tomcat7开始支持了Server3.0(主要是异步Servlet,基于注解及片段化web.xml构建应用)规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务。本系列tomcat源码分析文章基于tomcat 8.5.11 源码进行分析。 
tomca应用广泛,采用java编写,所以对于正在从事java的后端开发工程师来讲,阅读tomcat源码,了解tomcat 工作原理,也是进阶的必经之路。

总体结构

组件构成

Tomcat源码分析一:总体简介
上图是tomcat的总体架构。Server 是最外层的容器,一个Server中会包含多个Service组件,每个Service会包含多个Connector 与一个Engine,一个Engine 会有多个Host,一个Host会有多个Context,一个Contex可能会有多个Wrapper。Engine,Host,Context,Wrapper都是Container的子类。

各组件详细介绍

SERVER

一个Server容器代表整体Catalina Servlet容器,是tomcat中最外层的容器。负责tomcat的启动与停止。

Service

Service的主要功能是将Connector与相应的Engine相联合,这样当一个请求通过Connector进来后,就可以找到相应的Engine进行处理,一个Server中可以有多个Service

Engine

Engine客户端的请求的处理容器,Engine可以接收并处理所有从Connector中得到的请求,并且返回相应的结果。一个Engine必须内嵌在一个Service中,并且有一个或多个Connector与之相关联。

Connector

Connector 代表某种协议的请求,一般来讲会有Http/1,Http/2,Ajp等Connector。

Host

一个Host代表一个虚拟主机,与请求的域名相匹配。一个Engine可能有多个Host,同时必须有一个defaultHost。当一个请求进来后,会寻找与域名相匹配的Host,如果没有找到,则会采用defaultHost。一般情况下,基于服务割离原则,一个Engine下只有一个Host,并且这个Host还是defaultHost。当有多个域名的请求都请求到该Engine下时,并且需要采用不同的Host处理时,就需要配置多个Host了。

Context

一个Context 代表一个web应用,可能会有多个Context与一个Host相关联。每一个Context都是基于一个War包或者一个符合相应规范的文件目录。 
一个Host可能关联有多个Context,一个请求需要哪个Context处理是通过Context Path与Url匹配决定的,因此,必须要有一个0长度的Context Path,当没有匹配上其它的Context Path时,使用Context Path为0为Conext进行处理。

Wrapper

一个Wrapper就是一个Servlet,真正用于处理请求的单位,根据web.xml 中的 Servlet-mapping进行查找用于请求处理的Servlet。

结语

tomcat主要的组件如上所示,此外还有如Value,ClassLoader等,后续在再讨论。


相关文章:

  • 2021-11-09
  • 2021-09-10
  • 2021-09-18
  • 2021-09-06
  • 2021-04-17
  • 2021-10-10
  • 2021-09-07
猜你喜欢
  • 2021-11-07
  • 2021-10-22
  • 2021-09-26
  • 2021-09-16
  • 2022-01-02
  • 2021-08-22
  • 2022-01-07
相关资源
相似解决方案