`
阿Q乱七八糟
  • 浏览: 10458 次
  • 性别: 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请求的全过程

    S19-再看tomcat架构与请求处理流程1

    本文将深入探讨 Tomcat 的架构和请求处理流程。 首先,Tomcat 作为一个 HTTP 服务器,其核心功能之一是通过 Socket 进行网络通信,遵循 TCP/IP 协议。Socket 提供了应用程序之间进行低级别网络通信的接口,使得 ...

    TOMCAT原理详解及请求过程

    #### 五、请求处理流程 1. **客户端**发送HTTP请求到Tomcat服务器。 2. **Connector**接收请求,并将其转换成内部请求对象。 3. **Connector**将请求对象传递给对应的`Engine`。 4. `Engine`根据请求中的虚拟主机名...

    Tomcat的结构和运行机制

    - **Server**:这是Tomcat结构中的最外层容器,代表一个独立的Tomcat实例。它可以包含一个或多个Service组件。 - **GlobalNamingResources**:提供了一种方式来管理服务器范围内的命名资源(如数据源等)。 ##### 2...

    Tomcat 结构概述

    Tomcat 的结构可以分为四个部分:顶层类元素、连接器类元素、容器类元素和嵌套类元素。顶层类元素包括Server元素和Service元素,他们位于整个配置文件的顶层。连接器类元素代表了介于客户与服务之间的通信接口,负责...

    tomcat目录结构解释介绍

    在`server.xml`中,还有一些嵌套组件,如`&lt;Logger&gt;`、`&lt;Valve&gt;`、`&lt;Realm&gt;`等,它们提供了更细粒度的控制,如日志记录、请求处理管道和用户认证。 对于Tomcat 5.x版本,与4.x版本不同的是,不推荐在`common`、`...

    tomcat概述和体系架构

    在结构上,Tomcat的顶层类元素包括`&lt;Server&gt;`和`&lt;Service&gt;`,连接器类元素负责通信接口,而容器类元素则分为`Engine`、`Host`和`Context`,它们分别负责处理请求、特定虚拟主机请求和特定Web应用请求。所有的Tomcat...

    tomcat源码+文档pdf+源码解析

    1. **Catalina**:这是Tomcat的核心组件,负责Servlet容器的主要功能,如容器管理、生命周期管理和请求处理。Catalina包含Context、Host和Engine等层次结构,它们分别对应于Web应用、虚拟主机和整个服务器。 2. **...

    Tomcat 接口文档 API

    7. **Pipeline and Valve**: Tomcat的Pipeline和Valve机制提供了请求处理的链式结构。Valve是处理请求的基本单元,Pipeline则负责串联Valve。通过自定义Valve,可以添加额外的功能,如日志记录、权限检查等。 8. **...

    Tomcat 6.0 -- 9.0 及其源码

    1. 请求处理流程:当客户端发送请求到达Tomcat时,Coyote接收请求并将其转换为内部表示,然后传递给Catalina进行处理。Catalina通过Context、Wrapper和Servlet三级结构,找到对应的Servlet实例,执行其service方法。...

    Tomcat Tomcat Tomcat Tomcat

    1. **Catalina**:这是Tomcat的主要组件,负责处理Servlet和JSP的请求。Catalina实现了Servlet和JSP规范,使得开发者可以使用这些标准来构建Web应用程序。 2. **Jasper**:这是Tomcat中的JSP引擎,用于将JSP页面...

    apache-tomcat-9.0.8-src源码资源

    - `Pipeline`和`Valve`:请求处理流水线,Valve是处理请求的组件,可以串联起来执行。 3. **Jasper**: Jasper是Tomcat的JSP编译器,它将JSP文件转换为Java源代码,再编译成Servlet。在`catalina`模块中可以找到...

    tomcat类库和源码

    对于初学者来说,了解Tomcat的基本结构和工作原理是非常重要的。通过阅读源码,你可以学习到更多关于Web服务器设计的知识,这将有助于你在Java Web开发中提升技能。如果你在安装或使用过程中遇到任何问题,可以通过...

    tomcat7源码下载

    1. catalina:这是Tomcat的核心模块,负责处理Servlet容器的主要功能,如Servlet和Context的生命周期管理,请求处理等。 2. coyote:Coyote是Tomcat的HTTP/HTTPS连接器,负责接收和发送网络请求。 3. common:这个...

    How Tomcat Works 中文版+例程源码

    源码分析部分可能包括Tomcat的启动过程、请求处理流程、线程池管理、容器结构实现以及特定Servlet的生命周期管理等方面。通过阅读源码,开发者可以深入理解Tomcat如何处理网络请求,如何调度线程,以及如何管理和...

    学习tomcat源码+英文《How Tomcat Work》和每一章的相关项目+tomcat6源码依赖jar

    4. **请求处理流程**:从接收到HTTP请求开始,追踪请求如何被Coyote解析,然后如何传递给Catalina进行处理。 5. **会话管理**:Tomcat提供了多种会话跟踪机制,包括基于cookie和URL重写,理解这些实现有助于优化...

    tomcat5.5和tomcat6.0

    6. **错误处理和日志**:增强了错误报告和日志功能,提供了更详细的运行时信息,有助于问题诊断。 **文件名称列表解析** `apache-tomcat-6.0.35-windows-x64.zip` 这个文件是Apache Tomcat 6.0.35版本的64位...

    Tomcat的基础知识

    每个组件在Tomcat的运行机制中扮演着不同的角色,共同协作完成Web应用的请求处理流程。 - **Server**:代表整个Tomcat服务器实例,是最顶层的配置元素,可以包含一个或多个Service元素。 - **Service**:包含一个...

    HowTomcatWorks(书和源码)

    3. **请求处理流程**:当一个HTTP请求到达Tomcat时,Coyote Connector会捕获请求并将其转化为内部格式,然后交给Catalina的Engine进行分发。Engine根据请求的虚拟主机名(Host)和上下文路径(Context)来定位相应的...

    Tomcat8.0.46bin和src免费下载

    如果你想要了解Tomcat的工作原理,或者想要对Tomcat进行定制化修改,你可以查阅这些源码。源代码的结构遵循了Java的模块化设计,如Catalina是核心Servlet容器,Jasper处理JSP,而Common目录下包含了一些通用的类库。...

Global site tag (gtag.js) - Google Analytics