1 - Tomcat Server的组成部分
1.1 - Server
A Server element represents the entire Catalina servlet container. (Singleton)
1.2 - Service
A Service element represents the combination of one or more Connector components that share a single Engine
Service是这样一个集合:它由一个或者多个Connector组成,以及一个Engine,负责处理所有Connector所获得的客户请求
1.3 - Connector
一个Connector将在某个指定端口上侦听客户请求,并将获得的请求交给Engine来处理,从Engine处获得回应并返回客户
TOMCAT有两个典型的Connector,一个直接侦听来自browser的http请求,一个侦听来自其它WebServer的请求
Coyote Http/1.1 Connector 在端口8080处侦听来自客户browser的http请求
Coyote JK2 Connector 在端口8009处侦听来自其它WebServer(Apache)的servlet/jsp代理请求
1.4 - Engine
The Engine element represents the entire request processing machinery associated with a particular Service
It receives and processes all requests from one or more Connectors
and returns the completed response to the Connector for ultimate transmission back to the client
Engine下可以配置多个虚拟主机Virtual Host,每个虚拟主机都有一个域名
当Engine获得一个请求时,它把该请求匹配到某个Host上,然后把该请求交给该Host来处理
Engine有一个默认虚拟主机,当请求无法匹配到任何一个Host上的时候,将交给该默认Host来处理
1.5 - Host
代表一个Virtual Host,虚拟主机,每个虚拟主机和某个网络域名Domain Name相匹配
每个虚拟主机下都可以部署(deploy)一个或者多个Web App,每个Web App对应于一个Context,有一个Context path
当Host获得一个请求时,将把该请求匹配到某个Context上,然后把该请求交给该Context来处理
匹配的方法是“最长匹配”,所以一个path==""的Context将成为该Host的默认Context
所有无法和其它Context的路径名匹配的请求都将最终和该默认Context匹配
1.6 - Context
一个Context对应于一个Web Application,一个Web Application由一个或者多个Servlet组成
Context在创建的时候将根据配置文件$CATALINA_HOME/conf/web.xml和$WEBAPP_HOME/WEB-INF/web.xml载入Servlet类
当Context获得请求时,将在自己的映射表(mapping table)中寻找相匹配的Servlet类
如果找到,则执行该类,获得请求的回应,并返回
假设来自客户的请求为:
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中server配置文件的结构,以及处理一个http请求的全过程
### TOMCAT原理详解及请求过程 #### 一、TOMCAT概述 TOMCAT是一个开源的免费的轻量级Web应用服务器,它主要作为一个JSP/Servlet容器而被广泛使用。Tomcat支持Java Servlet和JavaServer Pages (JSP)技术,并且提供...
总之,Tomcat中的GET和POST请求是HTTP通信的基础,理解它们的工作原理和差异对于开发健壮、安全的Web应用程序至关重要。在实现时,需要根据具体需求选择合适的方法,并注意相关的最佳实践和潜在问题。通过编写...
5. **线程模型**:Tomcat使用线程池处理请求,提高了并发性能。线程池预创建一定数量的线程,以应对突发的高并发请求。 6. **连接器与管道**:Coyote连接器负责接收和发送网络数据,管道(Pipeline)则提供了灵活的...
4. **Servlet的`service`方法**:容器将请求和响应对象传递给Servlet的`service`方法,这是Servlet处理请求的主要入口点。在这个方法中,Servlet可以从请求中获取数据,处理业务逻辑,并通过响应对象返回结果到...
通过对Tomcat请求处理流程中各个组件的解析,我们可以更深入地理解Tomcat的工作原理。这种基于UML序列图的描述方式不仅能够清晰地展现各个组件之间的交互关系,还能够帮助开发者更好地理解Tomcat的架构设计思想。这...
2. **容器(Container)**:包括一系列层次化的组件,如Engine、Host、Context和Wrapper,用于处理请求并将请求转发给合适的Servlet或资源。 3. **管道和阀门(Pipeline and Valve)**:容器中的每个层次都有一个...
- **执行Servlet**: Servlet实例化(如果需要的话),并调用其`service()`方法来处理请求。在此过程中,Servlet可以修改Response对象,准备返回给客户端的数据。 3. **线程模型** Tomcat支持多线程模型,如BIO、...
在这个模拟过程中,我们将深入理解Tomcat如何处理HTTP请求,以及它在Java多线程环境下的工作方式。 首先,我们要知道Tomcat的核心职责是解析HTTP请求,并将它们转发给相应的Servlet进行处理。当一个HTTP请求到达...
- 深入阅读Tomcat源码有助于理解其工作原理,例如`org.apache.catalina.connector.Request`和`org.apache.catalina.connector.Response`类是处理请求和响应的核心。 - `org.apache.catalina.Context`和`org.apache...
### Tomcat原理解析 #### 一、Tomcat加载与启动流程详解 ##### 加载流程概述 Apache Tomcat是一款开源的轻量级Servlet容器,它实现了Servlet和JavaServer Pages(JSP)技术规范,能够作为Web服务器来处理HTTP请求...
通过深入理解这些步骤,开发者可以更好地理解Tomcat如何处理请求,以及在遇到问题时定位可能的故障点。此外,优化Tomcat的启动配置,例如调整JVM参数、减少不必要的应用加载,可以显著提高服务器的启动速度和整体...
**Jetty与Tomcat原理详解** Jetty和Tomcat是两个广泛应用的Java Web服务器和Servlet容器,它们在处理HTTP请求、执行Java Servlets以及管理Web应用程序方面起着关键作用。了解这两个容器的工作原理对于开发者来说至...
迷你版的Tomcat是一个小型化的Java Web服务器,它实现了...在实际的开发过程中,大型的Tomcat服务器会包含更多的功能,如多线程处理请求、连接池管理、会话管理、安全管理等,但这个迷你版为我们提供了一个很好的起点。
### Tomcat原理详解 #### 一、Tomcat简介与架构 Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个开源的轻量级Web服务器。它主要作为Servlet容器执行Java Servlet和呈现JavaServer Pages (JSP) Web应用。...
连接器(Connector)负责监听特定端口上的TCP连接请求,并将接收到的HTTP请求转换成Tomcat内部能够处理的对象。这一转换过程通常涉及到解析HTTP请求报文,创建符合 javax.servlet.ServletRequest 接口的request对象...
### Tomcat优化——Tomcat 的性能调优的原理和方法 #### 一、概述 Tomcat作为一款广泛使用的开源Web服务器容器,其性能直接影响到基于它的应用程序的表现。本文旨在介绍Tomcat性能调优的基本原理与具体实施方法,...
当请求到达时,Executor可以提供线程来处理请求,而不是每次请求都创建新的线程,从而避免了频繁创建销毁线程的开销。 5. **GlobalNamingResources(全局命名资源)**:这是一个容器级别的命名上下文,可以存放如...
本文将深入探讨Tomcat的工作原理,以及它如何处理HTTP请求,如何与服务器进行交互,以及在Java应用中的核心价值。 首先,Tomcat是一个开源的Web应用服务器,它是Apache软件基金会 Jakarta项目的一部分。作为Java ...
- **Servlet生命周期方法**:调用Servlet的`service()`方法,处理请求。 - **响应生成**:Servlet生成响应内容,可能是HTML、JSON或其他格式。 - **响应返回**:Coyote将响应发送回客户端,结束请求处理。 **7. ...