我读Tomcat源码--类图

我的Tomcat代码是从2017年三四月份从GitHub上下载下来的,大概是Tomcat8的代码(想找Tomcat6的源码,找不到)

我读Tomcat源码--类图_第1张图片
Tomcat主要类图

server:即服务器,每个tomcat程序启动后,就是一个server。

service:这是一种抽象的服务,通常是在日志或者管理时使用这样一个概念。它把连接器和处理引擎结合在一起。

connector:用于处理连接和并发,通常包括两种方式HTTP和AJP。HTTP是用于网页地址栏http这种访问方式;AJP一般用于搭配Apache服务器。

Container:可以理解为处理某类型请求的容器,处理的方式一般为把处理请求的处理器包装为Valve对象,并按一定顺序放入类型为Pipeline的管道里。Container有多种子类型:Engine、Host、Context和Wrapper,这几种子类型Container依次包含,处理不同粒度的请求。另外Container里包含一些基础服务,如Loader、Manager和Realm。

engine:处理引擎,所有的请求都是通过处理引擎处理的。

host:虚拟主机,用于进行请求的映射处理。每个虚拟主机可以看做独立的请求文件。

context:上下文,对应于web应用。

Wrapper:Wrapper是针对每个Servlet的Container,每个Servlet都有相应的Wrapper来管理。

可以看出Server、Service、Connector、Container、Engine、Host、Context和Wrapper这些核心组件的作用范围是逐层递减,并逐层包含。

我读Tomcat源码--类图_第2张图片
Tomcat的server.xml配置文件

配置文件中,可以看到:

Server层中,配置关闭Tomcat的命令和监听的端口,还包含了Service

Service层中,配置了Service的名称,还包含了一个实现HTTP1.1协议的Connector和一个实现AJP协议的Connector,以及Engine

Connector中,配置了访问的端口,连接超时时间

Engine中,配置realm:用于配置安全管理角色,通常读取tomcat-uesrs.xml进行验证,还包含Host

Host中,配置了主机的名称,以及应用的地址,代码变动是否自动部署,还包含Valve、Context

Valve中,配置了类AccessLogValve,是记录应用的访问日志

Context中,配了应用的路径,项目的名称。

你可能感兴趣的:(我读Tomcat源码--类图)