Tomcat启动流程
四个组件的实现类分别为:
- StandardServer
- StandardService
- StandardEngine
- Connector
上述四个组件都继承了LifecycleBase
抽象类,而类LifecycleBase
实现了Lifecycle
接口
- Lifecycle接口:定义了组件的生命周期方法
- LifecycleBase抽象类:实现了生命周期方法的一部分,未实现的方法留给子类自己处理
- 设计模式:模板模式
容器组件
StandardEngine、StandardHost、StandardContext、StandardWrapper
四个容器组件继承了ContainerBase
抽象类,而ContainerBase
实现了Container
接口,同时也继承了 LifecycleBase
类,即容器的生命周期管理接口和功能接口是分开的。
应用程序是什么时候部署的?
Service启动Engine的时候,可以到类HostConfig
中调试查看,代码如下所示(Tomcat8.0.47):
config.deployDirectory(cn, dir);
跟踪源码的过程就不贴图啦,感兴趣的小伙伴可以试试
小知识
1. Tomcat支持的IO模型:NIO
、NIO2
、APR
上述图片来源:https://tomcat.apache.org/tomcat-9.0-doc/config/http.html
2. Tomcat支持的应用层协议:HTTP1.1
、AJP
、HTTP2.0 (Tomcat 8.5.0 (beta)开始支持)