天天看点

Tomcat学习(一) - Tomcat结构以及处理一个请求的过程(转载忘了出处)

1. Tomcat结构

Tomcat是一个基于组件的服务器,它的构成组件都是可配置的,其中最外层的组件是Catalina Servlet容器,其他的组件按照一定的格式要求配置在这个顶层容器中。Tomcat的各个组件是在<TOMCAT_HOME>\conf\server.xml文件中配置的,Tomcat服务器默认情况下对各种组件都有默认的实现,下面通过分析server.xml文件来理解Tomcat的各个组件是如何组织的。server.xml文件的基本组成结构如下。

Tomcat学习(一) - Tomcat结构以及处理一个请求的过程(转载忘了出处)

XML配置文件结构

<Server>                     顶层类元素:一个配置文件中只能有一个<Server>元素,可包含多个Service。
     <Service>                顶层类元素:本身不是容器,可包含一个Engine,多个Connector。
         <Connector/>         连接器类元素:代表通信接口。
            <Engine>   容器类元素:为特定的Service组件处理所有客户请求,可包含多个Host。
               <Host>    容器类元素:为特定的虚拟主机处理所有客户请求,可包含多个Context。
                  <Context>   容器类元素:为特定的Web应用处理所有客户请求。
                  </Context>
                </Host>
               </Engine>
      </Service>
 </Server>      

1)Service

Service组件是一些Connector组件的集合,它本身不是一个容器,所以在这里不能定义日志等组件。一个Service组件中只能有一个Engine组件,可以包含多个Connector组件。

2)Connector组件

Connector组件表示一个接口,通过这个接口接收客户的请求,然户发送给其他的容器组件,最后再把服务器的响应结果传递给客户。

3) Engine, Host和context

上面介绍的3个组件本身并不能处理客户请求,也不能生成响应。在Tomcat中只有3个组件是可以处理客户请求并生成响应的,这3个组件分别是 Engine、Host和Context组件。这3个组件分别代表了不同的服务范围,通过嵌套关系可以知道3个组件的范围有如下的关系:Engine>Host>Context。

a.Engine组件下可以包含多个Host组件,它为特定的Service组件处理所有客户请求。

b.一个Host组件代表一个虚拟主机,一个虚拟主机中可以包含多个Web应用(Context组件)。

c.Context组件代表一个Web应用。

Tomcat的各个组件关系,可以用下图描述。

Tomcat学习(一) - Tomcat结构以及处理一个请求的过程(转载忘了出处)