Tomcat结构(转)
资料: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> 顶层类元素:一个配置文件中只能有一个<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结构(转)的更多相关文章
- tomcat(二)--tomcat结构
Tomcat结构及组件介绍 上面的层次结构在server.xml中有体现 <Server> <Service> <Connector> <Engine> ...
- Tomcat结构、启动过程、关键组件简单分析
Tomcat 结构: Tomcat最顶层容器叫Server,代表整个服务器,Server中包含至少一个Service,用于具体提供服务,Serv ...
- Tomcat结构
Tomcat结构 Server(服务器) 服务器代表整个Tomcat容器. Tomcat提供了服务器接口的默认实现(很少由用户定制). Service(服务) 服务是位于服务器内部的中间组件,将一个或 ...
- tomcat#结构
下面是一个tomcat的配置文件,通过分析tomcat配置文件的结构,和相关注释,可以大致了解tomcat的结构 <?xml version="1.0" encoding=& ...
- Tomcat【介绍Tomcat、结构目录、虚拟目录、临时域名、虚拟主机、体系结构】
什么是Tomcat Tomcat简单的说就是一个运行JAVA的网络服务器,底层是Socket的一个程序,它也是JSP和Serlvet的一个容器. 为什么我们需要用到Tomcat 如果你学过html,c ...
- 浅入tomcat
前言:学习笔记,以供参考 1.什么是服务器 所谓的服务器其实就是一段别人写好的程序,服务器有两个能力. a.可以帮助我们来管理资源. b.可以将资源向外界发布以便于外界来访问这个资源. 2.资源有哪些 ...
- Eclipse导入Tomcat源码(转)
想要研究下Tomcat的体系结构或者源码,最好将Tomcat的源码导入到ide中,编写实例进行代码跟踪(debug). 这里参考了网上一些资料,将自己操作过程记个流水账. 准备: 1.Tomcat源码 ...
- Tomcat源码导入Eclipse测试
想要研究下Tomcat的体系结构或者源码,最好将Tomcat的源码导入到ide中,编写实例进行代码跟踪(debug). 这里参考了网上一些资料,将自己操作过程记个流水账. 准备: 1.Tomcat源码 ...
- Tomcat 原理篇
TOMCAT 原理篇一.Tomcat 组成(Tomcat 由以下组件组成) 1.server a) Server是一个Catalina Servlet容器: b) Server 可以包含一个或多个se ...
随机推荐
- 带着问题写React Native原生控件--Android视频直播控件
最近在做的采用React Native项目有一个需求,视频直播与直播流播放同一个布局中,带着问题去思考如何实现,能更容易找到问题关键点,下面分析这个控件解决方法: 现在条件:视频播放控件(开源的ijk ...
- 一道C语言安全编码题目
1.前言 最近在网上看到一道C语言题目,用C语言实现一个函数,给定一个int类型的整数,函数输出逆序的整数,例如输入123,则输出字符串"321",,输入-123,则输出字符串&q ...
- C++实现密码强度测试
最近在博客中看到许多用js写的密码强度检测,我觉得挺有意思的,所以呢我打算自己也写个来玩玩,最可悲的是我还没学js,当然这不重要,所以呢打算用C++来写一个密码强度检测,这里我来给大家说说用JS写的和 ...
- html <input type="text" />加上readonly后在各种浏览器的差异。
<html> <body> <p>Name:<input type="text" name="email" /> ...
- flask 扩展之 -- flask-sqlalchemy
flask-sqlalchemy.md 一. 安装 $ pip install flask-sqlalchemy 二. 配置 配置选项列表 : 选项 说明 SQLALCHEMY_DATABASE_UR ...
- v9更新栏目缓存提示PHP has encountered a Stack overflow解决方法
原因: 客户在把一些栏目删除或者新增栏目时没更新栏目缓存导致v9_category表里有原来的垃圾信息,多余的表. 解决方法:通过phpmyadmin找到栏目表出错的条目,修改错误信息. 具体步骤: ...
- Spring Mvc Url和参数名称忽略大小写
在开发过程中Spring Mvc 默认 Url和参数名称都是区分大小写的 比如:www.a.com/user/getUserInfo?userId=1 www.a.com/user/getuserIn ...
- 【解决】使用compass watch xxx.scss 失败
原始日期:2016-01-25 16:49 在上一篇博客,我们终于安装好了compass,不过紧接着使用compass watch app.scss 结果失败,经过查询资料,是compass的版本问题 ...
- jq和js插件的各个文件夹里放置的内容
1. demo文件夹,存放各种实例. 2. dist文件夹,全称是distribution.在某些框架中,因为开发和发布的内容或者代码形式是不一样的(比如利用Grunt压缩等等),这时候就需要一个存放 ...
- canvas学习总结五:线段的端点与连接点
我们在第三节中描述了线段的绘制,其中线段的属性lineWidth是用来改变线段的宽度.让我们来回忆下线宽的用法 function drawLine(){ cxt.lineWidth = 3; cxt. ...