编辑
2023-11-04
Tomcat源码学习
00

![image.png](/static/img/a8ccc1180b30bced021b10e4

编辑
2023-11-04
Tomcat源码学习
00

Engine实现类

Engine 本质是一个容器,因此它继承了 ContainerBase 基类,并且实现了 Engine 接口。

Engine 的子容器是 Host,所以它持有了一个 Host 容器的数组,这些功能都被抽象到了 ContainerBase 中,ContainerBase 中有这样一个数据结构:

ContainerBase 用 HashMap 保存了它的子容器,并且 ContainerBase 还实现了子容器的“增删改查”,甚至连子组件的启动和停止都提供了默认实现,比如 ContainerBase 会用专门的线程池来启动子容器。

java
public class StandardEngine extends ContainerBase implements Engine { private static final Log log = LogFactory.getLog(StandardEngine.class);
编辑
2023-11-04
Tomcat源码学习
00

启动过程

image.png 1.Tomcat 本质上是一个 Java 程序,因此 startup.sh 脚本会启动一个 JVM 来运行 Tomcat 的启动类 Bootstrap。

编辑
2023-11-04
Tomcat源码学习
00

模板设计模式(Template Design Pattern)是一种行为设计模式,用于定义算法的基本结构,同时允许子类重写算法的特定步骤,而无需改变算法的整体结构。模板设计模式通过将算法的通用部分放在一个抽象基类中,将具体实现延迟到子类中,以实现代码的复用和扩展。

编辑
2023-11-04
Tomcat源码学习
00

LifeCycle接口源码

java
package org.apache.catalina;