学习Tomcat(一)之容器概览
Tomcat是Apache软件基金会的一个顶级项目,由Apache、Sun和其它一些公司及个人共同开发,是目前比较流行的Web服务器之一。Tomcat是一个开源的、小型的轻量级应用服务器,具有占用系统资源少、扩展性好、功能丰富等优点。虽然Tomcat是一个轻量级容器,但是其本身实现还比较复杂,包含很多模块,本文会对Tomcat的基本结构和各个模块进行简单介绍。
Servlet容器概念
Servlet容器也叫做Servlet引擎,是Web服务器或应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解码基于 MIME的请求,格式化基于MIME的响应。Servlet没有main方法,不能独立运行,它必须被部署到Servlet容器中,由容器来实例化和调用 Servlet的方法(如doGet()和doPost()),Servlet容器在Servlet的生命周期内包容和管理Servlet。在JSP技术 推出后,管理和运行Servlet/JSP的容器也称为Web容器。
以下为Servlet接口的定义:
public interface Servlet {
void init(ServletConfig var1) throws ServletException;
ServletConfig getServletConfig();
void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
String getServletInfo();
void destroy();
}
Tomcat结构概览
Tomcat是一个成熟的Web服务器,设计和开发都比较优雅,功能结构也是模块化的。Servlet容器应该有三个基本任务:创建Request对象、创建Response对象和Servlet处理请求响应,基于这三个任务Tomcat划分出两个核心模块:连接器和容器。为了优雅的进行容器的生命周期管理,Tomcat又添加了服务器组件模块。各个模块之间的关联关系如下图所示:
![Tomcat容器概览]
服务器组件Server
Server提供了Tomcat的生命周期管理的逻辑,它使用了一种优雅的方式来启动/关闭整个系统,不需要再对连接器和容器分别启动/关闭。
当服务器组件启动的时候,它会启动其中的所有的组件(连接器和容器),然后就开始无限期的等待关闭命令。如果需要关闭系统,可以向指定端口发送一条关闭命令,服务器组件在收到关闭命令后,会关闭其中所有的组件。
服务组件Service
服务器组件使用了服务组件Serivce来包含其它的组件,服务组件主要包含两部分:连接器和容器,这两部分也是Tomcat容器的核心组件。
连接器Connector
Connector的主要职责就是负责接收客户端连接和客户端请求的处理加工。每个Connector都将指定一个端口进行监听,分别负责对请求报文的解析和响应报文组装,解析过程生成Request对象,而组装过程涉及Response对象。
如果将Tomcat整体比作一个巨大的城堡,那么Connector组件就是城堡的城门,每个人要进入城门就必须通过城门,它为人们进出城堡提供了通道。同时,一个城堡还可能有两个或者多个城门,每个城门代表了不同的通道(不同的网络协议)。
容器Container
我们知道Tomcat是Servlet容器的一种实现,servlet又是什么呢?Servlet是javax.servlet 包中定义的接口。它声明了 Servlet 生命周期的三个基本方法:init()、service() 和 destroy()。它们由每个 Servlet Class(在 SDK 中定义或自定义)实现,并由服务器在特定时机调用。
Tomcat容器中的Container的主要功能就是处理连接器Connector解析的到的Request,调用对应的servlet方法,将响应写入Response中。此外Tomcat还对容器添加了管道和域的概念,用于对请求进行预处理。Tomcat中的容器分为四大类,按照包含关系依次为:Engin容器、Host容器、Context容器和Wrapper容器。
生命周期
Tomcat容器的启停实现逻辑,启停操作是如何从Server传播到各个子容器和组件中的。以及Spring容器如何对Tomcat容器实现优雅关闭:等待Tomcat容器中的请求处理完成之后再关闭容器。
总结
本文简要介绍了Tomcat容器中的各个关键组件及其功能,在我的后续博客中会对这些组件一一进行详细介绍。
本文最先发布至微信公众号,版权所有,禁止转载!
学习Tomcat(一)之容器概览的更多相关文章
- tomcat(5)servlet容器
[0]README 0.0)本文部分文字描写叙述转自:"深入剖析tomcat",旨在学习 tomcat(5)servlet容器 的基础知识. 0.1)intro to servle ...
- JSP学习 —— 开篇:JSP,servlet容器,Tomcat,servlet容器之间的关系
JSP(JAVA SERVER PAGE)的缩写,其本身就是servlet的简化,是一种动态网页标准,其特点是在HTML代码中嵌入JAVA代码,JSP标签或用户标签来生成网页.至于它为什么会出现,主要 ...
- 烂泥:学习tomcat之通过shell批量管理多个tomcat
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 公司的业务是使用tomcat做web容器,为了更有效的利用服务器的性能,我们一般部署多个 ...
- Tomcat学习—Tomcat的简介和目录以及配置文件介绍(Windows环境)
tomcat学习(8) 版权声明:本文为博主原创文章,未经博主允许不得转载. 今天学习TOMCAT,主要学习的是Tomcat的目录结构,配置文件! 1:Tomcat简介 Tomcat 服务器是一个免费 ...
- How tomcat works(深入剖析tomcat)servlet容器
How tomcat works (5)servlet容器阅读笔记 第四章阅读了tomcat默认连接器的实现,当时connector中的使用的容器是自定义的容器,也是非常之简单奥,一个人就干完了所有的 ...
- 学习Tomcat(六)之类加载器
通过前面的文章我们知道,Tomcat的请求最终都会交给用户配置的servlet实例来处理.Servlet类是配置在配置文件中的,这就需要类加载器对Servlet类进行加载.Tomcat容器自定义了类加 ...
- 标准模板库(STL)学习探究之vector容器
标准模板库(STL)学习探究之vector容器 C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...
- Tomcat就是个容器,一种软件
1.tomcat就是一个容器而已,一个软件,运行在java虚拟机. 2.tomcat是一种能接收http协议的软件,java程序猿自己也可以写出http解析的服务器啊. 3.tomcat支持servl ...
- Go学习笔记06-内建容器
Go学习笔记06-内建容器 Go语言 数组 *切片(Slice) #F44336 Slice的操作 Map map示例 字符处理 数组 定义数组: //这样定义数组编译器自动初始化每个元素为0 va ...
随机推荐
- QML用同一模版多开主窗口
如何动态地创建多个长的一样的主窗口哪(数据当然不一样), 用QML也是可以实现的. 简单的地说, 就是调用多次load即可. QCoreApplication::setAttribute(Qt::AA ...
- CentOS 永久修改系统时间
1.查看当前系统时间 date 2.修改当前系统时间 date -s "2018-2-22 19:10:30 3.查看硬件时间 hwclock --show ...
- Java面向对象08——继承
继承 package oop.demon01.demon05; // Person 人 ---- 父类 public class Person { //public //prot ...
- 【Android面试揭秘】面试官说“回去等通知”,我到底会不会等来通知?
前言 大部分情况下,面试结束后,面试官都会跟你说:我们会在1-2个工作日内通知你面试结果. 许多人认为:所谓「等通知」其实是面试官委婉地给你「发拒信」.但是,这不是「等通知」的全部真相. 这篇文章,我 ...
- java常见面试题总结2
JAVA必背面试题和项目面试通关要点 简单来讲,equals方法主要是用来判断从表面上看或者从内容上看,2个对象是不是相等. 一 数据库 1.常问数据库查询.修改(SQL查询包含筛选查询.聚合查询和链 ...
- Docker部署Zookeeper部署集群实践(2)
注:本文使用docker for windows模拟构建zookeeper集群,在linux系统下,可使用同样的docker命令构建 参考url:https://github.com/31z4/zoo ...
- MongoDB-02-复制集
复制集(ReplicationSet) 基本原理 基本构成是1主2从的结构,自带互相监控投票机制(Raft(MongoDB) Paxos(mysql MGR 用的是变种)) 如果发生主库宕机,复制集内 ...
- IDEA永久使用!!(很全)
IDEA虽然好用,但是下载后只能试用30天,烦恼呀!所以今天就带来IDEA的激活版来帮助大家摆脱30天的苦恼! 准备工作: 破解所需要的软件和jar都在网盘里,需要的自行下载,在这里idea安装就不带 ...
- noip模拟44[我想我以后会碰见计数题就溜走的]
noip模拟44 solutions 这一场抱零的也忒多了,我也只有45pts 据说好像是把几套题里面最难的收拾出来让我们考得 好惨烈啊,这次的考试我只有第一题骗了40pts,其他都抱零了 T1 Em ...
- NOIP 模拟 6 考试总结
T1 这道题是一道裸的暴力,考场写挂了 \(5pts\) 原因竟是忘了删注释,难受 题解 T2 这道题是一道启发式合并,没想出来,拿了个暴力分跑了 题解 T3 这道题就是一道数学期望,想出来就水得很, ...