`
阿Q乱七八糟
  • 浏览: 10028 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Tomcat的结构和对请求的处理

阅读更多

再转一篇关于tom猫的文章,此文出自http://blog.csdn.net/nanjingjiangbiao/article/details/7711923

 

 

1.    Tomcat的大结构

 

tomcat启动之后,将作为一个运行于JVM上的进程存在。

 

tomcat从层次上,最外围是server本身。

然后server里可以有多个service。每个service可以监听几个不同的端口号。

接下来,每个service里有多个connector。不同的connector监听不同的端口号,使用不同的通信协议。多个connector连接同一个container,container管辖多个webapp。

所有的这一切都定义在server.xml中。

  1. <!—最高节点 8005端口是shudown shell用端口号-->  
  2. <Server port="8005" shutdown="SHUTDOWN">  
  3. //JNDI全局资源  
  4. <GlobalNamingResources>  
  5. //service,可以有多个  
  6. <Service name="Catalina">  
  7. //connector 我们一般都是用8080端口的http请求  
  8. <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>  
  9. //每个connector都可以定义自己的线程池  
  10. <Connector executor="tomcatThreadPool"  
  11.                port="8080" protocol="HTTP/1.1"   
  12.                connectionTimeout="20000"   
  13.                redirectPort="8443" />  
  14. //处理请求的容器  
  15. <Engine defaultHost="localhost" name="Catalina">  
  16. //cluster配置  
  17. <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>  
  18. //虚拟主机,可以定义多个虚拟主机。比如www.aaa.com,www.bbb.com,全部映射到同一个容器中。(用于实现SSO)  
  19. <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">  
  20. //具体的context,用来指明webapp的路径  
  21. <Context docBase="xxx" path="/xxx" reloadable="true" source="xxx"/>  

 

作为tomcat的启动而言,一般来说

①    根据conf/server.xml启动所有必要组建

②    加载conf/web.xml中所有配置

③    依次加载所有webapp中的web.xml

 

2.    Tomcat中请求的处理

 

假设来自客户的请求为:http://www.xxx.com/test/index.jsp

a.     请求被发送到该物理机器的默认端口80,被在那里侦听的Coyote HTTP/1.1 Connector获得 (没有考虑apache)

b.     Connector封装http请求,并且从线程池中唤醒一个线程,将任务调度给该线程

  1. 被唤醒线程在Engine中寻找www.xxx.com匹配的虚拟主机
  2. 被找到的Host获得请求/test/index.jsp,匹配它所拥有的所有Context
  3. Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为""的Context去处理)
  4. path="/test"的Context获得请求/index.jsp
  5. Context开始解析http请求,首先由filter处理,再次交给servlet。现行的Web框架都是由filter拦截,顺便提一下,这也就是为什么很多人说servlet不是线程安全的。
  1. Context把执行完了之后的HttpServletResponse对象返回给Host
  2. Host把HttpServletResponse对象返回给Engine
  3. Engine把HttpServletResponse对象返回给Connector
  4. Connector把HttpServletResponse对象返回给客户browser
  5. 线程重回wait状态
分享到:
评论

相关推荐

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

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

    tomcat6、7、8、9, maven3.5

    3.3版本提供了更多的模块化设计,允许通过添加和删除控制servlet请求处理的模块来定制servlet容器。此版本还包含许多性能改进。 的Apache Tomcat 3.2.X。版本3.2自3.1以来增加了几个新功能; 主要的努力是重构内部以...

    《深入剖析Tomcat(中文版+英文版)》.rar

    《深入剖析Tomcat》深入剖析Tomcat 4和Tomcat 5中的每个组件(如果TOMCAT版本有点老,不过现在的Tomcat6和7同样可以借鉴参考),并揭示其内部工作原理。通过学习《深入剖析Tomcat》,你将可以自行开发Tomcat组件,或者...

    apache-tomcat-9.0.31-windows-x64.zip

    Tomcat的目录结构: bin: startup.bat shutdown.bat startup.sh shutdown.sh conf: tomcat运行时所需要的配置文件。 注意: server.xml (配置tomcat端口) connectionTimeout="20000" ...

    Tomcat整体结构简单介绍

    主要介绍了Tomcat整体结构简单介绍,Tomcat的本质是一个Servlet容器。一个Servlet能做的事情是:处理请求资源,并为客户端填充response对象,需要的朋友可以参考下

    Tomcat体系结构与插件配置教程图解

    二、tomcat服务器体系结构  1.Server整个Servlet容器组合,可以包含一个或多个  2.service:它由一个或者多个Connector组成,以及一个Engine,负责处理所有Connector所获得的客户请求。  3.Connector:客户端与...

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

    本文是第1部分,将主要从Tomcat如何分发请求、如何处理多用户同时请求,还有它的多级容器是如何协调工作的角度来分析Tomcat的工作原理,这也是一个Web服务器首要解决的关键问题。本文以Tomcat5为基础,也兼顾最新的...

    初识SpringMVC以及springmvc基本应用入门案例彩色PPT版本.pptx

    定义处理请求的功能类(UserServlet) 设置请求映射(配置映射关系) 使用SpringMVC技术开发web程序流程 创建web工程(Maven结构) 设置tomcat服务器,加载web工程(tomcat插件) 导入坐标(SpringMVC+Servlet) ...

    how-tomcat-works

    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 1.6 应用举例 5 第2...

    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配置引用...

    入门案例-SpringMVC技术架构图

    本文会对Spring MVC整体结构做简单介绍。 Spring MVC结构图 Spring MVC是一个基于Servlet容器的Web应用框架,这里的Servlet容器通常指Tomcat等服务容器。Servlet容器会负责监听端口消息并映射为Request/Response...

    jsp + servlet + javaben实现springmvc

    C:Controller,控制层,指工程中的Servlet,作用是接受请求和响应请求 MVC的工作流程: 用户通过视图层发送请求到服务器,在服务器中请求被Controller接受,Controller调用相应的Model层处理请求,处理完毕将结果...

    看透springMvc源代码分析与实践

    22.2.3 WebAsyncTask和Callable类型异步请求的处理过程及用法301 22.2.4 DeferredResult类型异步请求的处理过程及用法303 22.2.5 ListenableFuture类型异步请求的处理过程及用法305 22.3 小结309

    看透Spring MVC:源代码分析与实践 计算机与互联网

    第四篇(第21章和第22章)总结整个SpringMVC架构知识并补充了异步请求相关的内容,涉及从更高层次分析SpringMVC的设计理念以及具体请求的处理过程,同时对异步请求进行了详细解析,帮助读者深入理解请求的实现方式。

    大厂学院SVIP十门合集|完结无秘

    Web请求处理原理 数据访问层框架原理 架构与设计思维模式 程序中的数学 数据分析 机器智能算法剖析与应用 云原生 自动化DevOps 流量治理 链路监控 弹性扩容 分布式存储Redis6.0 深入云原生 高并发开发基石-JUC 全...

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

    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 1.6 应用举例 5 第2...

Global site tag (gtag.js) - Google Analytics