Tomcat Servlet 容器 Catalina-简介

Tomcat Servlet 容器 Catalina

Tomcat是⼀个由⼀系列可配置(conf/server.xml)的组件构成的Web容器,⽽Catalina是Tomcat的
servlet容器
从另⼀个⻆度来说, Tomcat 本质上就是⼀款 Servlet 容器, 因为 Catalina 才是 Tomcat 的核⼼ , 其
他模块都是为Catalina 提供⽀撑的。 ⽐如 : 通过 Coyote 模块提供链接通信, Jasper 模块提供 JSP 引
擎, Naming 提供JNDI 服务, Juli 提供⽇志服务。

Tomcat Servlet 容器 Catalina-简介

Servlet 容器 Catalina 的结构

Tomcat/Catalina实例

Tomcat Servlet 容器 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中