`

Tomcat请求流程讲解

阅读更多

这周部门同事要求我来进行分享一下Tomcat,我也在空余的时间对Tomcat的源码进行了阅读。

 

最初拿到这样一个事情,我也是比较头疼的,找不到着手点进行讲解。后来在网上查询了一些资料,对Tomcat的整体架构也有了一点了解。于是我开始着手于对Tomcat源码跟踪。

 

Tomcat整体是由多个组件组成,最顶层的组件是Server,一个Server代表着一个JVM实例,由Server进行初始化、销毁下面的组件。整个实例就好像一条流水线一样,由上层组件初始化下层组件,就这样一层一层的进行初始化和启动。

 


 

由上面的图可以看出,组件的组合关系。

Server包含多个Service,一个Service包含多个Connector和一个Engine;

一个Engine包含多个Host;

一个Host包含多个Context;

其中Engine、Host、Context都有共同的父类,ContainerBase。

关于每一个组件的功能,我这里不再赘述,网络上的资料有很多,大家可以自行查询。

 

接下来讲解关于从浏览器接收到请求的处理流程。

 

从名字可以看出来,Connector是用来处理关于连接的组件。

Connector包含两个主要的成员(默认协议HTTP1.1):JIOEndPoint、Http11ConnectionHandler

JIOEndPoint用来监听端口,当有新的连接过来,使用线程池进行处理。

SocketWrapper<Socket> wrapper = new SocketWrapper<Socket>(socket);
            wrapper.setKeepAliveLeft(getMaxKeepAliveRequests());
            // During shutdown, executor may be null - avoid NPE
            if (!running) {
                return false;
            }
            getExecutor().execute(new SocketProcessor(wrapper));

 实际在SocketProcessor中处理请求的是,Http11ConnectionHandler。

在Http11ConnectionHandler中经过一系列处理,最终由CoyoteAdapter对象调用service方法处理Request。

在service方法中,获得当前的Connection找到对应的Engine,将Request交给对应的Engine处理。

再由Engine根据自己的pipleline将request一层层传递下去,最终在StandardWrapper中获得filterChanin,调用servlet。

 



 整个流程如上图所示。

 

其中在将request交给Engine之后的一步步处理很形象化。

上面说到,Engine,Host,Context都有一个共同的父类ContainerBase,也就是容器类。

每一个容器类都包含一个Pipeline,也就是管道,而Pipeline里包含的子元素的接口都是Valve,也就是阀门。

每一个容器类在处理Request都必须交由给当前容器的Valve来处理,再由Valve传递给下一个Container进行处理。

//=========================下面这句话是我抄来的==================================

 让我们来想象一下:  

 当一个Request进入一个容器后, 它就在管道里面流动,波罗~ 波罗~ 波罗~ 地穿过各个阀门。在流到最后一个阀门的时候,吧唧~ 那个该死的阀门就把它扔给了子容器。 然后又开始 波罗~ 波罗~ 波罗~ ... 吧唧~....  波罗~  波罗~ 波罗~ ....吧唧~....  就是通过这种方式,Request 走完了所有的容器。( 感觉有点像消化系统,最后一个地方有点像那里

//=========================上面这句话是我抄来的==================================

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 20.1 KB
  • 大小: 38.9 KB
分享到:
评论

相关推荐

    Tomcat通俗讲解

    ### Tomcat通俗讲解 #### 一、什么是Tomcat Tomcat是Apache软件基金会下的Jakarta项目中的一个开源的轻量级Web服务器。简单来说,Tomcat可以被理解为一款产品,这款产品的目标是为了简化开发人员的工作流程,提高...

    how tomcat work 中文版

    下面将深入讲解这些组件以及Tomcat的工作流程。 **Catalina(Servlet容器):** Catalina是Tomcat的核心,负责管理和执行Servlet。Servlet是一种Java类,用于扩展服务器的功能。当客户端(如浏览器)发送请求到...

    how tomcat work_中文版(源码)

    Tomcat的核心功能在于接收HTTP请求并返回HTTP响应,其工作流程主要包括以下几个关键步骤: 1. **接收请求**:当客户端(浏览器)发送HTTP请求到服务器时,Tomcat的Acceptor线程会捕获这个连接,将其放入一个工作...

    tomcat 源码分析系列文档

    6. "Tomcat源码研究.pdf":提供了一个全面的源码分析概览,可能包括了Tomcat的主要组件、设计模式以及关键流程。 7. "tomcat源码分析之一架构.pdf":可能涵盖了Tomcat的整体架构,包括Catalina、 Coyote、Jasper等...

    Tomcat运行内幕-How Tomcat Works

    Catalina处理请求响应流程,Jasper负责将JSP转换为Servlet,Coyote则管理网络通信,而Apr提供了操作系统级别的接口。 Chapter03 "Configuring Tomcat"讲解了如何配置Tomcat服务器,包括server.xml、web.xml等核心...

    how tomcat works

    书中还深入探讨了Tomcat的请求处理流程,包括如何解析HTTP请求并为请求分配合适的处理器。请求处理流水线(Pipeline)是Tomcat中的一个核心概念,它定义了请求处理的顺序,通过一系列的Valve(阀门)对请求进行拦截...

    Tomcat源码研究.pdf

    - **工作原理**:深入剖析了Tomcat如何处理客户端请求的过程,包括请求接收、处理和响应生成。 #### 1.13《How Tomcat Works》读书笔记(三): Tomcat default connector - **默认Connector**:默认情况下,Tomcat...

    译How Tomcat Works(第二章)

    《译How Tomcat Works(第二章)》这篇文章主要讲解了Apache Tomcat服务器的工作原理,它是一个开源的Java Servlet容器,广泛用于部署Web应用程序。在这一章中,我们将深入探讨Tomcat如何处理HTTP请求,以及其内部架构...

    How Tomcat Works 英文书及源码

    接下来,书籍可能会深入到Tomcat的架构,包括服务器的启动流程、线程模型、请求处理机制等。读者会了解到如何配置和管理Tomcat服务器,例如设置端口、修改默认目录结构、配置虚拟主机等。此外,书中还会讨论Tomcat的...

    How Tomcat Works 读书笔记(第三章)

    综上所述,第三章主要讲解了Tomcat的基本架构、请求处理流程、配置文件解析、Servlet生命周期以及性能优化策略。这些知识对于理解和调试Tomcat服务器,以及优化Web应用的性能至关重要。通过深入学习这一章,开发者...

    tomcat源码解析

    这个部分介绍了如何构建一个简单的Servlet容器实例,包括处理HTTP请求的基本流程。 - **HttpServer1类**:负责接收HTTP请求并创建Request和Response对象。 - **Request类**:封装HTTP请求的信息。 - **Response类**...

    Tomcat权威指南等

    《Tomcat权威指南》是一本深受开发者欢迎的书籍,它深入浅出地讲解了Apache Tomcat服务器的使用、配置和优化。Tomcat是Apache软件基金会的项目,是一款开源的Java Servlet容器,主要用于运行Java Web应用。它轻量级...

    How Tomcat Work.pdf

    《How Tomcat Works》是一本专门讲解Tomcat内部工作机制的书籍,对广大Java开发者,尤其是对Tomcat源码和servlet容器工作原理感兴趣的开发者来说,这本书能够帮助他们深入了解Tomcat的架构以及如何进行自定义和优化...

    How tomcat works(包含源码示例)

    Tomcat作为Servlet容器,其核心工作流程包括解析HTTP请求、创建Servlet实例、调度Servlet的生命周期方法(如init、service、destroy)以及管理Session等。 在书中,作者会详细讲解Tomcat如何处理HTTP请求。当一个...

    tomcat架构解析_PDF电子书下载 高清 带索引书签目录_刘光瑞(著)

    3. **Tomcat启动流程**:从启动脚本到各个组件的初始化,再到服务的监听与处理,Tomcat的启动过程涉及了多个步骤。了解这一过程有助于优化服务器配置和排查问题。 4. **Servlet容器**:Catalina是Tomcat的主要部分...

    Tomcat 8 权威指南 epub 高清完整版

    在书中,读者将了解到Tomcat 8的核心架构,包括其线程模型、请求处理流程和组件交互机制。这些知识点对于理解Tomcat如何高效地处理Web请求至关重要。作者详细介绍了如何配置服务器,包括设置端口、调整内存分配、...

Global site tag (gtag.js) - Google Analytics