`
shaohan126448
  • 浏览: 113088 次
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
从前看过关于Tomcat的书,但是很快就忘记了。这次又看了一遍,随手画了个草图,来帮助记忆,没办法,我这个人,看图记忆有效些。



    Tomcat里有容器(Container)这么个概念,还有连接器(Connector)。我这幅图只画了容器这块儿的。
    总共有四种类型的容器:engine,host,context和wrapper。一个context里一般有一个或者多个wrapper,每个wrapper都对应了一个servlet。容器内所有组件的生命周期都由容器负责;容器内所有组件的行为都能受到容器的监控;容器可以对进出容器内部的数据进行改动。这是我能想到的采用容器的好处。
    如上图所示,图片中象梯子一样的那部分,我想用它代表容器的Pipeline。Host有自己的Pipeline,Context也有自己的Pipeline。一格一格的表示这个Pipeline里有很多Valve。Valve用来控制进入Host内部的数据。
    在最靠近Host内部的一个Valve,也就是数据进入Host要通过的最后一个Valve,叫做BasicValve。如果Host里有很多个Context,就是说有很多个Web程序,数据流在BasicValve里就会流向相应Context的Pipeline。

    鉴于上面的内容有些浅薄,那我再进一小步吧。

    我就按照上图来浅浅地描述一下request被处理的流程。
    对于每一个HTTP请求,connector调用其关联的container的invoke方法,该container调用其子容器的invoke方法。具体实现是在CoyoteAdapter的service方法里,由下面这一句就进入了Container的范围了。
Java代码
connector.getContainer().getPipeline().getFirst().invoke(request, response); 

connector.getContainer().getPipeline().getFirst().invoke(request, response);
getContainer()返回一个Host对象,然后得到Host对象的Pipeline,在调用Pipeline中第一个Valve对象的invoke方法。在Host对象的Pipeline中的最后一个Valve是StandardHostValve。

在StandardHostValve里,invoke函数中有:
Java代码
context.getPipeline().getFirst().invoke(request, response); 

context.getPipeline().getFirst().invoke(request, response);
这句函数就开始进入Context的范围了。同样的,在Context对象的Pipeline中的最后一个Valve是StandardContextValve。

在StandardContextValve里,invoke函数中有:
Java代码
wrapper.getPipeline().getFirst().invoke(request, response); 

wrapper.getPipeline().getFirst().invoke(request, response);
这句函数就进入Wrapper的范围了。
Wrapper是这里面最小的容器,其内部就没有其它子容器了。当执行到Wrapper对象的Pipeline中最后一个Valve(StandardWrapperValve)时,会有下面的语句:
Java代码
filterChain.doFilter(request.getRequest(),   
                                response.getResponse()); 

filterChain.doFilter(request.getRequest(),
                                response.getResponse());

在FilterChain里,当最后一个filter被调用后,就会运行下面的语句。
Java代码
servlet.service(request, response); 

servlet.service(request, response);
到这里,一个request就经历了重重考验,到了其目的地。
分享到:
评论

相关推荐

    tomcat启动的时序图

    这是一份tomcat5启动时的时序图,对于理解tomcat的结构很有帮助

    图解 Tomcat 体系结构

    Apache Tomcat 是一款非常著名的开源 Servlet/JSP 容器。 Apache Tomcat 是一款非常著名的开源 Servlet/...让我们先来浏览一下 Tomcat 体系结构中的六个主要概念: Server Service Engine Host Connector Context

    tomcat处理一个http请求的详细过程

    tomcat中server配置文件的结构,以及处理一个http请求的全过程

    SSH+MySQL+Tomcat整合,搭建开发框架成功(原创)

    这是我学习SSH时候做的案例,非常适合学习,这是按照标准的java EE规范写的代码。价值很大。欢迎参考和下载。只需要设计一张数据库表直接导入myeclipse可以直接中。类库齐全。现在和大家分享,共同学习和进步。

    nginx+tomcat服务器配置

    基本结构 首先要明白两个基本知识点: 平时我们在地址栏里面输入http://www.domain.com 访问的是80端口,相当于http://www.domain.com:80 而 https://www.domain.com 使用的是443端口 那么问题就来了,如果多个系统...

    Web开发轻平台-Apache Tomcat

     采用apache->tomcat这样的结构才具有更特出的优点,主要体现在具有更好的可扩展性和安全性。这种类型的站点的主要特点是每一个页面都可能是动态生成的,但这些数据中主要部分还是静态的(比如,各类图像GIF、JPG、...

    调整后的Tomcat配置文件.rar

    《程序猿必须知道的关于 Tomcat 的知识点》博客附件。 博客地址:https://blog.csdn.net/Supreme_Sir/article/details/111027495

    Tomcat6.0_API帮助文档

    类继承图 直接子类 所有已知子接口 所有已知实现类 类/接口声明 类/接口描述 嵌套类摘要 字段摘要 构造函数摘要 方法摘要 字段详细信息 构造函数详细信息 方法详细信息 每个摘要条目都包含该项目的详细描述的第...

    Tomcat系统架构与设计模式,第1部分:工作原理

    简介:这个分为两个部分的系列文章将研究ApacheTomcat的系统架构以及其运用的很多经典设计模式。本文是第1部分,将主要从Tomcat如何分发请求、如何处理多用户同时请求,还有它的...下面是Tomcat的总体结构图:图1.Tomca

    Tomcat工作原理祥解.doc

    Tomcat背景.Tomcat目录.server.xml配置简介.web.xml配置简介

    how-tomcat-works

    catalina结构图 1 tomcat的版本4和版本5 2 章节简介 2 第1章 一个简单的Web服务器 3 1.1 The Hypertext Transfer Protocol (HTTP) 3 1.2 HTTP Request 3 1.3 HTTP Response 4 1.4 Socket类 4 1.5 ServerSocket类 5 ...

    BBS-CS_3_Tomcat4.rar

    BBS-CS文件结构: 在BBS-CS的文件包中有home、src、jar、doc四个目录。 其中:home下是程序文件,src下是源码,jar下是工具文件包,doc下是文档。 Home |---admin(管理目录) | |---images(图像文件) | |---upload...

    基于Java个人博客系统的毕业设计,采用java ee、数据库使用开源的Mysql、服务器采用Tomcat

    接着对系统中的数据库进行模型设计,包括数据流图、实体联系图及数据表结构。在系统的设计与实现中,确定系统的开发思想以及开发环境,并对系统中的Java Bean和Controller代码进行设计。最后给出了系统中模块的详细...

    Tomcat源码分析

    总体架构:1、面向组件架构2、基于JMX3、事件侦听tomcat代码看似很庞大,但从结构上看却很清晰和简单,它主要由一堆组件组成,如Server、Service、Connector等,并基于JMX管理这些组件,另外实现以上接口的组件也...

    Tomcat8-Source-Read:tomcat8源码解析

    Tomcat8-源代码-阅读 :flexed_biceps: Tomcat8-源代码读取 当你Tomcat8-Source-Read以下类似问题时, Tomcat8-Source-Read可以帮你: 想系统的读一个开源软件的...以及持续更新类结构图和关键逻辑的流程图。 ☞微型

    tomcat-sr:Tomcat启动脚本,配置文件,源码剖析

    requestProcess.pdf-Tomcat请求处理流程序列图(2014.10.28-2014.10.29) 架构/-Tomcat服务器的架构结构和设计(2014.10.29-2014.10.29) server.xml-Tomcat容器配置文件(2014.10.29-) config /-Tomcat配置引用...

    微信小程序配置服务端https协议《二》nginx+tomcat服务器配置

    基本结构 首先要明白两个基本知识点: 平时我们在地址栏里面输入http://www.domain.com 访问的是80端口,相当于http://www.domain.com:80 而 https://www.domain.com 使用的是443端口 那么问题就来了,如果多个系统...

    How Tomcat Works: A Guide to Developing Your Own Java Servlet Container

    catalina结构图 1 tomcat的版本4和版本5 2 章节简介 2 第1章 一个简单的Web服务器 3 1.1 The Hypertext Transfer Protocol (HTTP) 3 1.2 HTTP Request 3 1.3 HTTP Response 4 1.4 Socket类 4 1.5 ServerSocket类 5 ...

Global site tag (gtag.js) - Google Analytics