从前看过关于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部署图十分简单易懂,对初学者" 从给定的文件信息中,我们可以提炼出以下几个知识点: 一、MyEclipse+Tomcat+Servlet 开发环境的搭建 * 安装 JDK 和 Tomcat,确保 Tomcat 安装之前安装了 JDK * 在 ...
**Tomcat结构图** Tomcat的结构包括了几个主要组件,如Catalina(核心服务)、Common、Server、Shared以及Web应用程序本身。理解这些组件的作用和相互关系有助于更好地管理和配置Tomcat。 **Tomcat HTTPS** ...
Apache Tomcat 是一款非常著名的开源 Servlet/JSP 容器。 Apache Tomcat 是一款非常著名的开源 Servlet/...让我们先来浏览一下 Tomcat 体系结构中的六个主要概念: Server Service Engine Host Connector Context
其次,书中可能会详细介绍Tomcat的目录结构和文件系统布局,包括`conf`、`webapps`、`logs`和`temp`等目录的作用。此外,还会涉及部署应用程序的各种方式,如WAR文件的自动解压、目录部署和上下文配置。 接下来,...
1. **Apache Tomcat基础**:首先,理解Tomcat的基本结构和功能至关重要。它是Apache软件基金会的一个项目,用Java编写,作为Servlet和JSP容器运行Web应用。了解其工作原理、配置文件(如server.xml、web.xml)以及...
Apache Tomcat 8.0.33 是一个广泛使用的开源软件,它是一个实现了Java Servlet、JavaServer Pages(JSP)和Java EE的Web应用...通过了解其结构和配置,我们可以有效地管理和优化服务器性能,满足各种开发和生产需求。
6. `webapps`:Web应用程序部署的目录,解压后的WAR文件或已创建的目录结构都可以放在这里。 7. `work`:存放JSP编译后的类文件和Servlet生成的临时文件。 为了运行Tomcat,你需要配置`conf/server.xml`,根据你的...
此外,安装版还会将必要的文件和目录结构部署到预定义的系统位置,如`C:\Program Files`(默认情况下)。用户可以根据需要选择安装路径、端口号、服务启动选项等。 相比之下,"apache_tomcat-7.0.11.zip"是免安装版...
Apache Tomcat 是一个开源的Java Servlet容器,它实现了Java EE Web应用程序规范,特别是Servlet和JavaServer Pages (JSP)。...正确配置和理解Tomcat的内部结构和配置文件对于优化性能和稳定性至关重要。
【标题】:“Tomcat安装包和压缩包” 【正文】: Tomcat,全名Apache Tomcat,是一款开源的Java Servlet容器,由Apache...无论哪种方式,理解Tomcat的基本结构和工作原理对于管理和优化Java Web应用都是至关重要的。
Tomcat的结构图直观展示了各个组件的层次关系和数据流向,从Server到Service,再到Connector、Engine、Host和Context,形成一个完整的请求处理链路。 3. 配置文件$CATALINA_HOME/conf/server.xml server.xml是...
2. **目录结构**:Tomcat的目录结构包括`bin`(存放可执行文件和脚本)、`conf`(配置文件)、`lib`(共享库)、`webapps`(部署的Web应用程序)、`logs`(日志文件)等。 3. **部署应用**:将WAR文件或解压后的...
3. **Tomcat目录结构**:详述每个目录的作用,如WEB-INF、conf、logs、temp等,理解这些目录对于管理和维护Tomcat至关重要。 4. **Servlet与JSP基础**:讲解Servlet和JSP的基本概念,包括生命周期、请求响应处理...
根据提供的文件信息,下面详细介绍在Tomcat7上部署多个Web项目的方法,这些知识点包括了配置文件的编辑、部署路径的管理以及特定开发环境下的项目结构调整。 首先,Tomcat作为一个应用服务器,用于托管Java Web应用...
2. 设计阶段:制定数据库结构,设计页面布局,规划系统架构。 3. 编码实现:利用JSP编写前端页面,结合Servlet处理业务逻辑,与Oracle数据库交互。 4. 测试调试:进行单元测试、集成测试,确保各模块功能正常。 5. ...
首先,让我们深入了解Tomcat的结构和核心组件: 1. **bin目录**:这个目录包含了启动和停止Tomcat的脚本,如`catalina.sh`或`catalina.bat`,以及用于管理Tomcat服务的其他工具,如`startup.sh`和`shutdown.sh`。 ...
Apache Tomcat 6.0.33 是一个广泛使用的开源软件,它是一个实现了Java Servlet和JavaServer Pages(JSP)规范的...在实际操作中,理解Tomcat的基本结构和配置,以及如何部署和管理Web应用程序,是提升工作效率的关键。
Tomcat的结构图通常显示了这些组件之间的层次关系,即Server包含一个或多个Service,Service包含一个Engine,Engine下面有多个Host,每个Host管理多个Context。 3. 配置文件`$CATALINA_HOME/conf/server.xml`详解 ...
【标题】"Tomcat 6.0.3"是一个经典的Java应用服务器,它主要用于部署和运行Java Servlets和JavaServer Pages(JSP)。这个版本发布于2010年,虽然现在已经较为老旧,但对于学习基础的Web应用部署和理解Servlet容器的...