深入研究tomcat源码

50 阅读2分钟

连接器的设计

1. 核心功能

  • 处理 Socket 连接,负责网络字节流与 Request 和 Response 对象的转化。
  • 加载和管理 Servlet,以及具体处理 Request 请求。
  • 核心组件:EndPoint、Processor、Adapter

2. 依赖关系

  1. 连接器图解 image

3. 实现原理

  1. 连接器

    连接器对 Servlet 容器屏蔽了协议及 I/O 模型等的区别,无论是 HTTP 还是 AJP,在容器中获取到的都是一个标准的 ServletRequest 对象。

  • 连接器功能
    • 监听网络端口。
    • 接受网络连接请求。
    • 读取请求网络字节流。
    • 根据具体应用层协议(HTTP/AJP)解析字节流,生成统一的 Tomcat Request 对象。
    • 将 Tomcat Request 对象转成标准的ServletRequest。
    • 调用 Servlet 容器,得到 ServletResponse。
    • 将 ServletResponse 转成 Tomcat Response 对象。
    • 将 Tomcat Response 转成网络字节流。
    • 将响应字节流写回给浏览器。
  • 连接器模块
    • 网络通信。
    • 应用层协议解析。
    • Tomcat Request/Response 与 ServletRequest/ServletResponse 的转化。
  • 连接器组件
    • EndPoint(tcp/ip通信)
    • Processor(字节流解析)
    • Adapter(转换Request、Response)

4. 源码分析

  1. 继承关系 image

容器的设计

1.核心功能

  • 容器是用来装载 Servlet 的

2. 依赖关系

image

3. 实现原理

  1. 容器

    Tomcat 设计了 4 种容器,分别是 Engine、Host、Context 和 Wrapper。这 4 种容器不是平行关系,而是父子关系

  • 容器功能
    • Engine 表示引擎,用来管理多个虚拟站点,一个 Service 最多只能有一个 Engine
    • Host 代表的是一个虚拟主机,或者说一个站点,可以给 Tomcat 配置多个虚拟主机地址,而一个虚拟主机下可以部署多个 Web 应用程序
    • Context 表示一个 Web 应用程序
    • Wrapper 表示一个 Servlet,一个 Web 应用程序中可能会有多个 Servlet

4. 源码分析

  1. 继承关系 image
  2. 责任链模式 image