Tomcat Servlet 容器 Catalina
Tomcat是⼀个由⼀系列可配置(conf/server.xml)的组件构成的Web容器,⽽Catalina是Tomcat的
servlet容器
从另⼀个⻆度来说, Tomcat 本质上就是⼀款 Servlet 容器, 因为 Catalina 才是 Tomcat 的核⼼ , 其
他模块都是为Catalina 提供⽀撑的。 ⽐如 : 通过 Coyote 模块提供链接通信, Jasper 模块提供 JSP 引
擎, Naming 提供JNDI 服务, Juli 提供⽇志服务。
Servlet 容器 Catalina 的结构
Tomcat/Catalina实例
其实,可以认为整个Tomcat就是⼀个Catalina实例, Tomcat 启动的时候会初始化这个实例, Catalina
实例通过加载server.xml完成其他实例的创建,创建并管理⼀个Server, Server创建并管理多个服务,
每个服务⼜可以有多个Connector和⼀个Container
-
⼀个Catalina实例(容器)
-
⼀个 Server实例(容器)
-
多个Service实例(容器)
-
每⼀个Service实例下可以有多个Connector实例和⼀个Container实例
-
Catalina 负责解析Tomcat的配置⽂件(server.xml) , 以此来创建服务器Server组件并进⾏管理
-
Server 服务器表示整个Catalina Servlet容器以及其它组件,负责组装并启动Servlaet引擎,Tomcat连接
器。 Server通过实现Lifecycle接⼝,提供了⼀种优雅的启动和关闭整个系统的⽅式 -
Service 服务是Server内部的组件,⼀个Server包含多个Service。它将若⼲个Connector组件绑定到⼀个Container
-
Container 容器,负责处理⽤户的servlet请求,并返回对象给web⽤户的模块
Container 具体结构
Container组件下有⼏种具体的组件,分别是Engine、 Host、 Context和Wrapper。这4种组件(容器)
是⽗⼦关系。 Tomcat通过⼀种分层的架构,使得Servlet容器具有很好的灵活性
- Engine 表示整个Catalina的Servlet引擎,⽤来管理多个虚拟站点,⼀个Service最多只能有⼀个Engine,但是⼀个引擎可包含多个Host
- Host 代表⼀个虚拟主机,或者说⼀个站点,可以给Tomcat配置多个虚拟主机地址,⽽⼀个虚拟主机下
可包含多个Context - Context 表示⼀个Web应⽤程序, ⼀个Web应⽤可包含多个Wrapper
- Wrapper 表示⼀个Servlet, Wrapper 作为容器中的最底层,不能包含⼦容器
配置其实就体现在conf/server.xml中