资料:http://wenku.baidu.com/view/20720e78a26925c52cc5bfd6.html Tomcat系统架构

http://wenku.baidu.com/view/9a9a8f0102020740be1e9bbc.html  Tomcat源码研究

http://wenku.baidu.com/view/0792cd264b35eefdc8d33343.html  Tomcat工作原理深入详解

Tomcat是一个基于组件的服务器,它的构成组件都是可配置的,其中最外层的组件是Catalina Servlet容器,其他的组件按照一定的格式要求配置在这个顶层容器中。
Tomcat的各个组件是在<TOMCAT_HOME>\conf\server.xml文件中配置的,Tomcat服务器默认情况下对各种组件都有默认的实现,下面通过分析server.xml文件来理解Tomcat的各个组件是如何组织的。

server.xml文件的基本组成结构如下。

<Server>                       顶层类元素:一个配置文件中只能有一个<Server>元素,可包含多个Service。
    <Service>                  顶层类元素:本身不是容器,可包含一个Engine,多个Connector。
        <Connector/>        连接器类元素:代表通信接口。
           <Engine>           容器类元素:为特定的Service组件处理所有客户请求,可包含多个Host。
              <Host>           容器类元素:为特定的虚拟主机处理所有客户请求,可包含多个Context。
                 <Context>   容器类元素:为特定的Web应用处理所有客户请求。
                 </Context>
               </Host>
              </Engine>
     </Service>
</Server>
以上的类XML的代码就是server.xml文件的基本组成结构,一个元素代表一个组件。下面分别介绍这些组件。
1 . Server组件
Server组件对应<Server>元素,它是配置文件的最顶层元素,代表一个服务器。一个配置文件中只能有一个<Server>元素。
2 . Service组件
Service组件是一些Connector组件的集合,它本身不是一个容器,所以在这里不能定义日志等组件。一个Service组件中只能有一个Engine组件,可以包含多个Connector组件。
3 Connector组件
Connector组件表示一个接口,通过这个接口接收客户的请求,然户发送给其他的容器组件,最后再把服务器的响应结果传递给客户。
4 容器类元素
上面介绍的3个组件本身并不能处理客户请求,也不能生成响应。在Tomcat中只有3个组件是可以处理客户请求并生成响应的,这3个组件分别是Engine、Host和Context组件。这3个组件分别代表了不同的服务范围,通过嵌套关系可以知道3个组件的范围有如下的关系:Engine>Host>Context。
    Engine组件下可以包含多个Host组件,它为特定的Service组件处理所有客户请求。
    一个Host组件代表一个虚拟主机,一个虚拟主机中可以包含多个Web应用(Context组件)。
    Context组件代表一个Web应用。
Tomcat的各个组件关系,可以用下图描述。

一个Java Web application在Tomcat中与一个Context元素对应,也就是说一个Context元素定义了一个Java Web application,它们是一一对应的关系。
在一个Java Web应用中可以包含如下内容:
    Servlet
    JSP页面
    Java类
    静态资源(HTML文档、图片等)
    描述Web应用的描述文件
客户每次提出请求时指定要访问的资源,如果客户没有指定具体资源,Tomcat使用默认的资源响应客户,显示文件夹中的资源列表或者提示错误。

Tomcat结构(转)的更多相关文章

  1. tomcat(二)--tomcat结构

    Tomcat结构及组件介绍 上面的层次结构在server.xml中有体现 <Server> <Service> <Connector> <Engine> ...

  2. Tomcat结构、启动过程、关键组件简单分析

                            Tomcat   结构:   Tomcat最顶层容器叫Server,代表整个服务器,Server中包含至少一个Service,用于具体提供服务,Serv ...

  3. Tomcat结构

    Tomcat结构 Server(服务器) 服务器代表整个Tomcat容器. Tomcat提供了服务器接口的默认实现(很少由用户定制). Service(服务) 服务是位于服务器内部的中间组件,将一个或 ...

  4. tomcat#结构

    下面是一个tomcat的配置文件,通过分析tomcat配置文件的结构,和相关注释,可以大致了解tomcat的结构 <?xml version="1.0" encoding=& ...

  5. Tomcat【介绍Tomcat、结构目录、虚拟目录、临时域名、虚拟主机、体系结构】

    什么是Tomcat Tomcat简单的说就是一个运行JAVA的网络服务器,底层是Socket的一个程序,它也是JSP和Serlvet的一个容器. 为什么我们需要用到Tomcat 如果你学过html,c ...

  6. 浅入tomcat

    前言:学习笔记,以供参考 1.什么是服务器 所谓的服务器其实就是一段别人写好的程序,服务器有两个能力. a.可以帮助我们来管理资源. b.可以将资源向外界发布以便于外界来访问这个资源. 2.资源有哪些 ...

  7. Eclipse导入Tomcat源码(转)

    想要研究下Tomcat的体系结构或者源码,最好将Tomcat的源码导入到ide中,编写实例进行代码跟踪(debug). 这里参考了网上一些资料,将自己操作过程记个流水账. 准备: 1.Tomcat源码 ...

  8. Tomcat源码导入Eclipse测试

    想要研究下Tomcat的体系结构或者源码,最好将Tomcat的源码导入到ide中,编写实例进行代码跟踪(debug). 这里参考了网上一些资料,将自己操作过程记个流水账. 准备: 1.Tomcat源码 ...

  9. Tomcat 原理篇

    TOMCAT 原理篇一.Tomcat 组成(Tomcat 由以下组件组成) 1.server a) Server是一个Catalina Servlet容器: b) Server 可以包含一个或多个se ...

随机推荐

  1. (转)CSS颜色及<a>标签超链接颜色改变

    CSS颜色大全 <a>标签超链接颜色改变 A:hover   {BACKGROUND-COLOR:   #ffccff;   COLOR:   #0080ff}     (hover表示鼠 ...

  2. cal日历工具的用法

    cal的基本语法:$ cal [month] [year] 1.显示当前月的日历 $ cal 2.显示某年的日历 $ cal 2015 3.显示某年某月日历 $ cal 12 2015 =-=-=-= ...

  3. 配置IIS让网站可以播放mp4文件

    最近遇到这么一个问题,网站当中的mp4不能播放了--每次点击播放的时候都会产生404的错误(如下图).这个问题来得有些蹊跷,因为在这台服务器上其他的文件都能正常执行,比如xml.jpg.aspx等文件 ...

  4. php中常用的处理字符串的函数

    1.将字符串转换为数组的函数:str_split() array str_split ( string $string [, int $split_length = 1 ] ) string:输入字符 ...

  5. PHPStorm中的快捷键

    1.Ctrl+Alt+L 格式化代码 2.windows下按下快捷`Ctrl`+`Shift`+`-`,这样就能折叠所有代码了. 3.windows下按下快捷`Ctrl`+`Shift`+`+`,这样 ...

  6. Testlink研究小结

    1.Redmine与Testlink的关联 (1)redmine中的项目对应testlink的测试项目 (2)testllink执行用例时发现的问题可以记录到redmine中 2.Testlink优点 ...

  7. Swift json字典转模型 项目记录

    背景 最近项目开始转用Swift3开发,由于Swift中json(字典)转模型的选择方案较多,笔者最开始选择了HandyJSON的方案,在使用一段时间后发现当要进行某个字段取值使用时需要进行各种的转化 ...

  8. app 选项卡代码

    <div id="segmented" class="mui-segmented-control"> <a class="mui-c ...

  9. AutoMapper 6.x 扩展方法

    简介 很多时候我们使用AutoMapper的时候,都需要进行一个配置才可以使用Mapper.Map<Source,Target>(entity);.如果不进行配置则会报错. 如果实体过多, ...

  10. 以芯片直读方式得到的全盘镜像解析及ext4日志区域解析

    之前在centos中分析了/dev/sda1下的结构,但当对象是一块以芯片直读方式作出来的全盘镜像呢? 这次以安卓手机的全盘镜像为对象,尝试按照ext4文件系统结构手动解析,加强对ext4文件系统.E ...