You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

19 lines
1.7 KiB

## 一、原理
![[Snipaste_2023-02-13_19-41-22.png]]
### 1.Server
tomcat 作为一个servlet容器其最顶层容器叫做**Server**一个tomcat只有一个Server。Server中包含至少一个**Service**用于具体提供服务。
Service主要包含Connectors和ContainerConnectors用于处理连接并提供Socket与request、response转换。Container用于封装和管理Servlet以及处理request请求。
Service只有一个Container但可以有多个Connectors一个服务可以有多个连接如http、https连接也可以提供相同协议不同端口的连接
### 2.Catalina
Catalina用于管理Server它提供了三个方法load、start、stop用于管理服务器生命周期
+ load方法用于根据conf/server.xml文件创建Server并调用Server的init方法进行初始化
+ start方法用于启动服务器、stop方法用于停止服务器。分别在内部分别调用了Server的start和stop方法会按照容器的结构逐层调用相应方法比如Server的start方法中会调用所有Service中的start方法Service中的start方法又会调用所有包含的Connectors和Container的start方法。
+ await方法直接调用了Server的await方法这个方法的作用是进入一个循环让主线程不会退出
### 3.Bootstrap
Bootstrap的作用类似一个CatalinaAdaptor具体处理过程还是使用Catalina来完成这么做的好处是可以把启动的入口和具体的管理类分开从而可以很方便地创建出多种启动方式每种启动方式只需要写一个相应的CatalinaAdaptor即可
Bootstrap是tomcat的入口,启动tomcat就是调用Bootstrap的main方法。
### 4.启动流程图
![[Snipaste_2023-02-13_20-13-01.png]]