Tomcat架构

网络模型

Tomcat架构图

两个核心组件

  • Connector

设计思想 :高内聚、低耦合
EndPoint:提供字节流给Processor
Processor:提供Tomcat Request对象给Adapter
Adapter:提供ServletRequest给容器

(1)EndPoint

监听通信端口,是对传输层的抽象,用来实现 TCP/IP 协议的。
对应的抽象类为AbstractEndPoint,有很多实现类,比如NioEndPoint,JIoEndPoint等。在其中有两个组件,一个
是Acceptor,另外一个是SocketProcessor。
Acceptor用于监听Socket连接请求,SocketProcessor用于处理接收到的Socket请求

(2)Processor

Processor是用于实现HTTP协议的,也就是说Processor是针对应用层协议的抽象。
Processor接受来自EndPoint的Socket,然后解析成Tomcat Request和Tomcat Response对象,最后通过Adapter
提交给容器。
对应的抽象类为AbstractProcessor,有很多实现类,比如AjpProcessor、Http11Processor等。

(3)Adpater

ProtocolHandler接口负责解析请求并生成 Tomcat Request 类。
需要把这个 Request 对象转换成 ServletRequest。
Tomcat 引入CoyoteAdapter,这是适配器模式的经典运用,连接器调用 CoyoteAdapter 的 sevice 方法,传入的是
Tomcat Request 对象,CoyoteAdapter 负责将 Tomcat Request 转成 ServletRequest,再调用容器的 service 方
法。
优化图解
Endpoint接收Socket连接,生成一个SocketProcessor任务提交到线程池去处理
SocketProcessor的run方法会调用Processor组件去解析应用层协议,Processor通过解析生成Request对象后,会调
用Adapter的service方法。

  • Container

Request Process Flow

官网 :https://tomcat.apache.org/tomcat-8.0-doc/architecture/requestProcess/request-process.png

扩展

(1)自定义类加载器

(2)Session管理

原文地址:https://www.cnblogs.com/snail-gao/p/12163393.html