Tomcat 体系结构

Tomcat 体系结构

Tomcat 设计了两个核心组件连接器(Connector)和容器(Container)来完成 Tomcat 的两大核心功能。

  • 连接器,负责对外交流:处理 Socket 连接,负责⽹络字节流与 RequestResponse 对象的转化;

  • 容器,负责内部处理:加载和管理 Servlet,以及具体处理 Request 请求;

连接器组件 Coyote

CoyoteTomcat 中连接器的组件名称 , 是对外的接口。客户端通过 Coyote 与服务器建立连接、发送请求并接受响应 。

在这里插入图片描述

  • EndPoint
    EndPointCoyote 通信端点,即通信监听的接⼝,是具体 Socket 接收和发送处理器,是对传输层的抽象,因此 EndPoint 用来实现 TCP/IP 协议的。

  • Processor
    ProcessorCoyote 协议处理接口,如果说 EndPoint 是⽤来实现 TCP/IP 协议的,那么 Processor 用来实现 HTTP 协议,Processor 接收来自 EndPointSocket,读取字节流解析成 Tomcat RequestResponse 对象,并通过 Adapter 将其提交到容器处理,Processor 是对应用层协议的抽象。

  • ProtocolHandler
    Coyote 协议接口,通过 EndpointProcessor , 实现针对具体协议的处理能力。Tomcat 按照协议和 I/O 提供 6 个实现类:AjpNioProtocolAjpAprProtocolAjpNio2ProtocolHttp11NioProtocolHttp11Nio2ProtocolHttp11AprProtocol

  • Adapter
    由于协议不同,客户端发过来的请求信息也不尽相同,Tomcat 定义了自己的 Request 类来封装这些请求信息。ProtocolHandler 接口负责解析请求并生成 Tomcat Request 类。但是这个 Request 对象不是标准 ServletRequest,不能用 Tomcat Request 作为参数来调⽤容器。Tomcat 设计者的解决方⽅案是引入 CoyoteAdapter,这是适配器模式的经典运用,连接器调用 CoyoteAdapterSevice 方法,传入的是 Tomcat Request 对象,CoyoteAdapter 负责将 Tomcat Request 转成 ServletRequest,再调用容器。

Tomcat Servlet 容器 Catalina

**Tomcat **就是一个 Catalina 的实例,因为 CatalinaTomcat 的核心。

Tomcat / Catalina 实例
在这里插入图片描述

  • Catalina
    负责解析 Tomcat 的配置文件(server.xml) , 以此来创建服务器 Server 组件并进行管理。

  • Server
    服务器表示整个 Catalina Servlet 容器以及其它组件,负责组装并启动 Servlet 引擎,Tomcat 连接器。Server 通过实现 Lifecycle 接口,提供了一种优雅的启动和关闭整个系统的方式。

  • Service
    服务是 Server 内部的组件,一个 Server 包含多个 Service。它将若干个 Connector 组件绑定到一个 Container

  • Container
    容器,负责处理用户的 servlet 请求,并返回对象给 web 用户的模块 Container 组件下有几种具体的组件,分别是 EngineHostContextWrapper。这 4 种组件(容器)是父子关系。Tomcat 通过一种分层的架构,使得Servlet 容器具有很好的灵活性。

    1. Engine 表示整个 CatalinaServlet 引擎,用来管理多个虚拟站点,一个 Service 最多只能有一个 Engine,但是一个引 擎可包含多个 Host

    2. Host 代表一个虚拟主机,或者说一个站点,可以给 Tomcat 配置多个虚拟主机地址,而一个虚拟主机下可包含多个 Context

    3. Context 表示一个 Web 应用程序, 一个 Web 应⽤可包含多个 Wrapper

    4. Wrapper 表示一个 ServletWrapper 作为容器中的最底层,不能包含子容器。

    上述组件的配置其实就体现在 conf/server.xml 中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值