Tomcat的体系结构
本篇笔记的思路
Tomcat有两个身份,一个是Http服务器,一个是servlet容器。这也是Tomcat的核心部分。所以第一步,我先从核心部分开始整理,先理解本质。第二步再从整体角度(Tomcat核心+管理核心的外围结构)整理,从而达到一个覆盖。
1–Tomcat整体结构(核心部分)
- Tomcat是一个Http服务器和Servlet容器的结合,所以核心组件对应的是连接器组件Connecter和容器组件Container。(一个Container可以对应多个Connector。)
-
Connecter由EndPoint,Processor,Adapter组成,负责Http请求和Servlet请求的互相转换
- EndPoint:实现TCP/IP协议,解析TCP请求头和TCP数据,进行socket的处理。
- Processor:实现HTTP协议,解析HTTP的请求头、请求体。封装Request,Response对象。
- Adapter:实现Request和ServletRequest的转换,并连接到对应的Container。
-
Container由Engine,Host,Context,Wrapper分等级地构成,并实现由上级调用下级的机制
- Engine:全局引擎容器,用来管理多个Host,一个服务service只能有一个Engine。
- Host:代表一个虚拟主机,或是站点(例www.xxx.com)。一个Engine下可以有多个Host。
- Context:表示一个web应用,通过web.xml配置。一个Host下可以有多个Context。
- Wrapper:封装一个servlet,最底层。一个context下可以有多个Wrapper。
2–Tomcat整体结构(整体部分)
-
一个Tomcat创建一个Catalina容器,用来管理一个Server服务器
- Catalina.load方法:通过解析Server.xml,建立Server服务器里的多层关系(逐级调用init方法)
- Catalina.start方法:逐级启动各层start方法
- 而一个Server服务器下,可以有多个service服务
- 一个服务就是一个核心,由多个Connector和一个Container组成