tomcat源码解析一tomcat整体架构

 

tomcat整体架构

1.什么是tomcat?

tomcat是servlet规范的一种实现(https://jcp.org/en/jsr/detail?id=340),通俗讲tomcat就是一个servlet的容器,每一个servlet代表了不同的业务处理逻辑,编写servlet是开发者做的事情,如何将请求分发到servlet,如何将servlet返回到数据传递给客户端这是tomcat该做的事情

2.tomcat主要的功能是什么?

1.处理socket连接, 将接收到到字节流数据转换成Request对象,将request分发到不同到servlet进行业务逻辑处理

2.servlet处理完业务逻辑后,将数据转为字节流,通过socket返回给客户端

3.tomcat整体架构

tomcat的层级结构在server.xml就体现出来了

tomcat源码解析一tomcat整体架构_第1张图片

 server:

在Tomcat世界中,服务器代表整个容器。Tomcat提供了Server接口的默认实现,用户很少对其进行自定义。

service:

是一个中间组件,它位于server内部,并将一个或多个Connector绑定到一个Engine上。service很少由用户自定义,因为默认实现非常简单和足够使用。

Engine

表示特定服务的请求处理管道。由于Service可能有多个Connector,因此Engine接收并处理来自这些连接器的所有请求,将响应返回给适当的Connector以传输到客户端。Engine接口可以实现以提供自定义引擎,但这并不常见。注意,引擎可以通过jvmRoute参数用于Tomcat服务器集群。

Host:

Host是网络名称的关联,例如. www.yourcompany.com网站,发送到Tomcat服务器。引擎可以包含多个主机,主机元素还支持网络别名,如yourcompany.com网站以及abc.yourcompany.com公司. 用户很少创建自定义主机,因为标准主机实现提供了显著的附加功能.(都是域名,根据域名映射到对应的ip,比如localhost因为在hosts文件中定义了对127.0.0.1的映射)

Connector:

Connector处理与客户端的通信。Tomcat提供了多个Connector。其中包括用于大多数HTTP通信的HTTP连接器,特别是在将Tomcat作为独立服务器运行时,以及实现将Tomcat连接到web服务器(如Apache HTTPD服务器)时使用的AJP协议的AJP连接器。创建自定义Connector是一项重要的工作。

Context:

一个Context就表示一个web应用程序。主机可以包含多个上下文,每个上下文都有一个唯一的路径。可以实现Context接口来创建自定义Context,但这种情况很少发生,因为标准上下文提供了重要的附加功能。

Idea中导入tomcat7源码

1.下载源码

git clone https://github.com/apache/tomcat.git

因为我要看的是tomcat7.0的源码,所以切换到7.0的分支

尝试过通过ant方式来编译,但是不知道什么原因没法下载jar包,所以用maven的方式来构建

2.新建一个pom.xml

tomcat源码解析一tomcat整体架构_第2张图片

 直接启动会有乱码,加上参数

-Duser.language=en

tomcat的启动流程

 

你可能感兴趣的:(tomcat)