1. Tomcat结构
Tomcat是一个基于组件的服务器,它的构成组件都是可配置的,其中最外层的 组件是Catalina Servlet容器,其他的组件按照一定的格式要求配置在这个顶层容器中。Tomcat的各个组件是在<TOMCAT_HOME>\conf \server.xml文件中配置的,Tomcat服务器默认情况下对各种组件都有默认的实现,下面通过分析server.xml文件来理解Tomcat 的各个组件是如何组织的。server.xml文件的基本组成结构如下。
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的各个组件关系,可以用下图描述。
2. Tomcat处理一个HTTP请求的过程
假设来自客户的请求为: http://localhost:8080/wsota/wsota_index.jsp
1) 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得
2) Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应
3) Engine获得请求localhost/wsota/wsota_index.jsp,匹配它所拥有的所有虚拟主机Host
4) Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机)
5) localhost Host获得请求/wsota/wsota_index.jsp,匹配它所拥有的所有Context
6) Host匹配到路径为/wsota的Context(如果匹配不到就把该请求交给路径名为""的Context去处理)
7) path="/wsota"的Context获得请求/wsota_index.jsp,在它的mapping table中寻找对应的servlet
8) Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类
9) 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法
10)Context把执行完了之后的HttpServletResponse对象返回给Host
11)Host把HttpServletResponse对象返回给Engine
12)Engine把HttpServletResponse对象返回给Connector
13)Connector把HttpServletResponse对象返回给客户browser
相关推荐
Tomcat的连接器组件,也称为JK(Jk2或Apache JServ Protocol),是一个用于连接Apache HTTPD服务器和Tomcat的模块,使得两者可以无缝协作,共同处理Web请求。`tomcat-connectors-1.2.48-src`是这个连接器的源代码包...
tomcat中server配置文件的结构,以及处理一个http请求的全过程
Apache Tomcat是一个开源的软件应用服务器,主要用于运行Java Servlets和JavaServer Pages(JSP)。这个"apache-tomcat-8.5.32-windows-x64.zip"压缩包是针对Windows 64位系统的Tomcat 8.5.32版本的安装包。这个版本...
在构建高性能、高可用性的Web应用系统时,整合Apache Tomcat、Nginx以及Redis作为会话管理器是一个常见的选择。这个"tomcat-redis-session-manager tomcat+nginx+redis集群所需jar"压缩包提供了在这样的架构中实现...
Apache Tomcat是一个开源的软件应用服务器,主要用于部署和运行Java Servlet和JavaServer Pages(JSP)应用程序。在Java EE环境中,Tomcat作为轻量级应用服务器,尤其在开发和测试阶段,它因为小巧、快速和易用而...
它是一个绿色免安装版本,意味着你可以直接解压并运行,而无需通过传统的安装过程。 **Tomcat 8.0.50详解:** Tomcat 8是Tomcat服务器的一个主要版本,它引入了许多增强功能和改进,以提高性能和稳定性。8.0.50是...
Apache Tomcat是一个开源的软件应用服务器,主要用于部署和运行Java Servlet和JavaServer Pages(JSP)应用程序。在本例中,我们关注的是`apache-tomcat-7.0.63-windows-x64.zip`这个文件,这代表了Tomcat 7.0.63...
"apache-tomcat-7.0.64-src"这个压缩包包含了Tomcat 7.0.64版本的源代码,对于开发者来说,这是一个深入理解Tomcat工作原理、定制化配置以及进行二次开发的重要资源。 Tomcat作为Servlet容器,它的主要功能是处理...
Apache Tomcat 7.0.39 是一个广泛使用的开源软件,它是一个实现了Java Servlet、JavaServer Pages(JSP)和Java EE的Web应用程序容器。Tomcat作为一个轻量级的应用服务器,尤其适合运行简单的Java Web应用。以下是...
解压"apache-tomcat-9.0.13-windows-x64.zip"后,你会得到一个包含以下组件和目录的结构: 1. **bin**:包含启动、停止和管理Tomcat的脚本。 2. **conf**:存储Tomcat的配置文件,如server.xml、web.xml等。 3. **...
深入学习jakarta-tomcat-connectors-1.2.15-src源码,可以提升对Tomcat工作流程的理解,包括请求的接收、处理、响应过程,以及如何通过连接器优化服务器性能。这对于进行性能调优、定制化开发或者排查系统问题都至关...
Tomcat8是其8.x版本系列中的一个发行版,提供了许多性能优化和新特性。在这个"apache-tomcat-8.0.47-windows-x64.zip"压缩包中,您将获得的是专为Windows 64位操作系统设计的Tomcat服务器。 首先,让我们详细了解...
本文将详细探讨"tomcat-redis-session-manager-tomcat-7"这个项目,它是专门为Tomcat 7设计的一个Redis支持的非粘性会话存储解决方案。 首先,让我们理解什么是非粘性会话。在传统的Web服务器配置中,会话通常在...
Apache Tomcat是一款开源的Java Servlet容器,主要用于部署和运行Java Web应用程序。在Windows平台上,Tomcat提供了方便的安装和配置方式。"apache-tomcat-10.0.10-windows-x64.zip"是专门为64位Windows系统设计的...
这里的"apache-tomcat-5.5.20"和"apache-tomcat-5.5.20-admin"是Tomcat的一个特定版本,5.5.20,发布于较早的时间,尽管现在已经有了更新的版本,但在当时它是一个广泛使用的稳定版本。 1. **Apache Tomcat 5.5.20*...
Apache Tomcat是一款开源的Java ...总之,Apache Tomcat 8.0.20是一个强大且功能丰富的Java Web服务器,它提供了对Java EE 7的全面支持,并在安全、性能和管理方面做了大量优化,是开发和部署Java Web应用的理想选择。
总的来说,"apache-tomcat-6.0.20-src"压缩包为Java Web开发者提供了一个深入研究Tomcat的平台,通过学习和理解这些源代码,可以提升对Java EE应用服务器的理解,提高开发和维护Web应用的能力。虽然Tomcat 6.0.20已...
这个版本的源码包,"apache-tomcat-7.0.40-src",为开发者提供了深入理解Tomcat内部工作原理的机会,同时也是一个学习和优化服务器性能的宝贵资源。以下是关于Apache Tomcat 7.0.40源码的一些关键知识点: 1. **...
Apache Tomcat 7.0.12 是一个广泛使用的开源软件,它是一个实现了Java Servlet、JavaServer Pages(JSP)和Java EE的Web应用程序容器。这个版本是专为64位Windows操作系统设计的,提供了无需安装的绿色版本,使得...
总结,"tomcat-connectors-1.2.44-src.tar"是一个宝贵的资源,它为我们揭示了Tomcat Connectors的内部工作机制,提供了深入研究和定制Tomcat的机会。无论是对初学者还是经验丰富的开发者,这份源码都能带来宝贵的...