本文中只是提取了每个模块的关键部分,具体技术细节只能通过看代码来掌握。

1、socket 、serversocket

tcp通信

2、servlet

init

destory

process(req,resp)

3、connector processor

单请求单响应模型、阻塞

4、connector processor container

单请求多响应模型、非阻塞

5、主要讲container

wrapper - 1*servlet

context - n*wrapper

connector

processor

6、生命周期管理

Lifecycle 管理器

LifecycleEvent 监听事件

LifecycleListener 监听器

7、日志记录器

8、类加载器

为什么tomcat需要自己的类加载器

定制加载规则
缓存加载过的类
预加载类

9、session管理

10、安全管理

11、StandardWrapper

代码调用序列如下:

12、StandardContext

13、Engine和Host

14、server 和 service

Catalina主要包括connector和container两个模块,connector负责接收请求,传递给container,而container负责处理请求。
service的作用是统一管理connector和container,一个service可以包括多个connector和一个container。而server的作用是,管理所有的service,一个server可以包括多个service。server负责管理所有service的生命周期,这样就管理了所有的connector和container,以及connector和container的所有内部组件。这样就不需要单独对connector和container单独进行开启或关闭了。

15、Digester

Tomcat是利用Digester解析server.xml。Digester是Apache下的开源项目

16、关闭钩子

非正常退出时,执行特定逻辑

17、启动tomcat

catalina 和 bootstrap

18、部署

参考文档:

github地址 :https://github.com/Aresyi/HowTomcatWorks

http://blog.csdn.net/u013159433/article/details/47415407

https://yuedu.baidu.com/ebook/ac92f0d35122aaea998fcc22bcd126fff7055d60

https://www.ibm.com/developerworks/cn/java/j-lo-tomcat1/index.html

http://blog.csdn.net/qq_24451605/article/details/51289519

四张图带你了解Tomcat系统架构 https://www.dengxiangxing.com/post/57507

一头扎进tomcat https://www.dengxiangxing.com/post/57720

how tomcat works的更多相关文章

  1. 攻城狮在路上(肆)How tomcat works(零) 前言说明

    最近几篇是关于How tomcat works一书的读书笔记. 通过数个章节逐渐实现一个tomcat的功能. 源码下载地址:http://zhidao.baidu.com/share/7007af0f ...

  2. How Tomcat works — 四、tomcat启动(3)

    上一节说到StandardService负责启动其子组件:container和connector,不过注意,是有先后顺序的,先启动container,再启动connector,这一节先来看看conta ...

  3. How Tomcat Works(十四)补充

    在How Tomcat Works(十四)中,本人并没有对javax.servlet.Filter及javax.servlet.FilterChain做详细的描述,本文在这里做一下补充 FilterC ...

  4. How Tomcat Works(十八)

    在前面的文章中,如果我们要启动tomcat容器,我们需要使用Bootstrap类来实例化连接器.servlet容器.Wrapper实例和其他组件,然后调用各个对象的set方法将它们关联起来:这种配置应 ...

  5. How Tomcat Works(十七)

    在前面的文章中,已经学会了如何通过实例化一个连接器和容器来获得一个servlet容器,并将连接器和容器相关联:但在前面的文章中只有一个连接器可用,该连接器服务8080端口上的HTTP请求,无法添加另一 ...

  6. How Tomcat Works(十六)

    本文接下来会介绍Host容器和Engine容器,在tomcat的实际部署中,总是会使用一个Host容器:本文介绍Host接口和Engine接口及其相关类 Host容器是org.apache.catal ...

  7. How Tomcat Works(十五)

    本文接下来分析Context容器,Context容器实例表示一个具体的Web应用程序,其中包括一个或多个Wrapper实例:不过Context容器还需要其他的组件支持,典型的如载入器和Session管 ...

  8. How Tomcat Works(十四)

    我们已经知道,在tomcat中有四种类型的servlet容器,分别为Engine.Host.Context 和Wrapper,本文接下来对tomcat中Wrapper接口的标准实现进行说明. 对于每个 ...

  9. How Tomcat Works(十三)

    本文分析tomcat容器的安全管理,servlet技术支持通过配置部署描述器(web.xml文件)来对受限内容进行访问控制:servlet容器是通过一个名为验证器的阀来支持安全限制的,当servlet ...

  10. How Tomcat Works(十二)

    tomcat容器通过一个称为Session管理器的组件来管理建立的Session对象,该组件由org.apache.catalina.Manager接口表示:Session管理器必须与一个Contex ...

随机推荐

  1. 画caffe训练loss曲线

    Linux下操作 1. 将loss值存储到lossInf.txt中 fName1='loss.txt' cat loss.log | grep "solver.cpp:218] Iterat ...

  2. 最大获利 HYSBZ - 1497 (最大权闭合图)

    最大权闭合图: 有向图,每个点有点权,点权可正可负.对于任意一条有向边i和j,选择了点i就必须选择点j,你需要选择一些点使得得到权值最大. 解决方法: 网络流 对于任意点i,如果i权值为正,s向i连容 ...

  3. Leetcode 29.两数相除 By Python

    给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符. 返回被除数 dividend 除以除数 divisor 得到的商. 示例 1: 输 ...

  4. sql server 小技巧(2) 删除sql server中重复的数据

    with list_numbers as ( select Name, AuthorOrTime, Url, Price, EstimatePrice, Size, Category, ROW_NUM ...

  5. activity中访问内部fragment的函数

    @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCod ...

  6. (转)Maven pom.xml 配置详解

    背景:maven一直感觉既熟悉又陌生,归根结底还是自己不太熟. 1 什么是pom? pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者 ...

  7. Hash碰撞 & 拒绝服务漏洞

    前段时间在网上看到的: http://www.baidu.com/s?wd=Hash%E7%A2%B0%E6%92%9E+++%E6%8B%92%E7%BB%9D%E6%9C%8D%E5%8A%A1% ...

  8. c/c++ 整形转字符串

    int findex;char instr[10]; sprintf(instr,"%d",findex); 好像ltoa用不了...

  9. MySQL常用辅助语句

    查看索引: mysql> show index from user_info; +-----------+------------+----------+--------------+----- ...

  10. css 实现背景图片不跟着滚动条滚动而滚动

    效果: 只需要在需要背景不跟着动的div里: div{ background:url(); background-attachment:fixed; } 加上background-attachment ...