再转一篇关于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中。
- <!—最高节点 8005端口是shudown shell用端口号-->
- <Server port="8005" shutdown="SHUTDOWN">
- //JNDI全局资源
- <GlobalNamingResources>
- //service,可以有多个
- <Service name="Catalina">
- //connector 我们一般都是用8080端口的http请求
- <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
- //每个connector都可以定义自己的线程池
- <Connector executor="tomcatThreadPool"
- port="8080" protocol="HTTP/1.1"
- connectionTimeout="20000"
- redirectPort="8443" />
- //处理请求的容器
- <Engine defaultHost="localhost" name="Catalina">
- //cluster配置
- <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
- //虚拟主机,可以定义多个虚拟主机。比如www.aaa.com,www.bbb.com,全部映射到同一个容器中。(用于实现SSO)
- <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
- //具体的context,用来指明webapp的路径
- <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请求,并且从线程池中唤醒一个线程,将任务调度给该线程
- 被唤醒线程在Engine中寻找www.xxx.com匹配的虚拟主机
- 被找到的Host获得请求/test/index.jsp,匹配它所拥有的所有Context
- Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为""的Context去处理)
- path="/test"的Context获得请求/index.jsp
- Context开始解析http请求,首先由filter处理,再次交给servlet。现行的Web框架都是由filter拦截,顺便提一下,这也就是为什么很多人说servlet不是线程安全的。
- Context把执行完了之后的HttpServletResponse对象返回给Host
- Host把HttpServletResponse对象返回给Engine
- Engine把HttpServletResponse对象返回给Connector
- Connector把HttpServletResponse对象返回给客户browser
- 线程重回wait状态
相关推荐
tomcat中server配置文件的结构,以及处理一个http请求的全过程
3.3版本提供了更多的模块化设计,允许通过添加和删除控制servlet请求处理的模块来定制servlet容器。此版本还包含许多性能改进。 的Apache Tomcat 3.2.X。版本3.2自3.1以来增加了几个新功能; 主要的努力是重构内部以...
《深入剖析Tomcat》深入剖析Tomcat 4和Tomcat 5中的每个组件(如果TOMCAT版本有点老,不过现在的Tomcat6和7同样可以借鉴参考),并揭示其内部工作原理。通过学习《深入剖析Tomcat》,你将可以自行开发Tomcat组件,或者...
Tomcat的目录结构: bin: startup.bat shutdown.bat startup.sh shutdown.sh conf: tomcat运行时所需要的配置文件。 注意: server.xml (配置tomcat端口) connectionTimeout="20000" ...
主要介绍了Tomcat整体结构简单介绍,Tomcat的本质是一个Servlet容器。一个Servlet能做的事情是:处理请求资源,并为客户端填充response对象,需要的朋友可以参考下
二、tomcat服务器体系结构 1.Server整个Servlet容器组合,可以包含一个或多个 2.service:它由一个或者多个Connector组成,以及一个Engine,负责处理所有Connector所获得的客户请求。 3.Connector:客户端与...
本文是第1部分,将主要从Tomcat如何分发请求、如何处理多用户同时请求,还有它的多级容器是如何协调工作的角度来分析Tomcat的工作原理,这也是一个Web服务器首要解决的关键问题。本文以Tomcat5为基础,也兼顾最新的...
定义处理请求的功能类(UserServlet) 设置请求映射(配置映射关系) 使用SpringMVC技术开发web程序流程 创建web工程(Maven结构) 设置tomcat服务器,加载web工程(tomcat插件) 导入坐标(SpringMVC+Servlet) ...
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...
requestProcess.pdf-Tomcat请求处理流程序列图(2014.10.28-2014.10.29) 架构/-Tomcat服务器的架构结构和设计(2014.10.29-2014.10.29) server.xml-Tomcat容器配置文件(2014.10.29-) config /-Tomcat配置引用...
本文会对Spring MVC整体结构做简单介绍。 Spring MVC结构图 Spring MVC是一个基于Servlet容器的Web应用框架,这里的Servlet容器通常指Tomcat等服务容器。Servlet容器会负责监听端口消息并映射为Request/Response...
C:Controller,控制层,指工程中的Servlet,作用是接受请求和响应请求 MVC的工作流程: 用户通过视图层发送请求到服务器,在服务器中请求被Controller接受,Controller调用相应的Model层处理请求,处理完毕将结果...
22.2.3 WebAsyncTask和Callable类型异步请求的处理过程及用法301 22.2.4 DeferredResult类型异步请求的处理过程及用法303 22.2.5 ListenableFuture类型异步请求的处理过程及用法305 22.3 小结309
第四篇(第21章和第22章)总结整个SpringMVC架构知识并补充了异步请求相关的内容,涉及从更高层次分析SpringMVC的设计理念以及具体请求的处理过程,同时对异步请求进行了详细解析,帮助读者深入理解请求的实现方式。
Web请求处理原理 数据访问层框架原理 架构与设计思维模式 程序中的数学 数据分析 机器智能算法剖析与应用 云原生 自动化DevOps 流量治理 链路监控 弹性扩容 分布式存储Redis6.0 深入云原生 高并发开发基石-JUC 全...
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...