Tomcat架构分析-Tomcat的核心组件

时间:2024-02-29 18:28:33

Tomcat将请求器和处理器分离,使用多种请求器支持不同的网络协议,而处理器只有一个。从而网络协议和容器解耦。
在这里插入图片描述

Tomcat的容器

Host:Tomcat提供多个域名的服务,其将每个域名都视为一个虚拟的主机,在每个虚拟主机下包含多个web应用。
Context:一个应用的上下文。一个虚拟主机(域名)下可以有多个应用。
Wrapper:Servlet的包装类。
Tomcat使用责任链来实现客户端的请求处理。

Pipeline和Value

Engine,Host,Context,Wrapper共用一个pipeline实例,各自在自己的层面上又都实现了独属于自己的Value处理器。

  • 责任链模式:Tomcat使用责任链模式,将请求处理流程划分为一系列阶段。每个阶段由相应组件的管道负责,形成一个责任链。当一个请求到达时,它会依次经过责任链中的每个阶段,每个阶段都有机会对请求进行处理。

  • 各组件的处理阶段:每个组件(Engine、Host、Context、Wrapper)的管道定义了它们感兴趣的处理阶段,并在相应的阶段中执行特定的逻辑。这样,每个组件都能够在请求处理过程的不同阶段执行自己的操作。

  • 共享的Pipeline:尽管整个请求处理流程共用一个管道,但在责任链的每个阶段,可以通过判断当前处理的组件来确定是否执行该组件的处理逻辑。这样,每个组件在其关心的阶段会执行相应的操作,而在其他阶段则会跳过。

在这里插入图片描述
在Connector启动后Endpoint会启动线程来监听服务器端口,并且在接收到请求后调用Processor来进行数据读取。

Mapper和MapperListener

当Processor读取到客户端请求后,会按照请求地址映射到相应的容器处理。
Mapper用于按照映射规则查找容器,MapperListener用于监听容器变化,当容器卸载或者注册,会变更容器信息。

在这里插入图片描述