文档章节

tomcat6.0.x框架结构图-tomcat 6.x 源码阅读

douglaswei
 douglaswei
发布于 2013/09/06 00:51
字数 784
阅读 1398
收藏 77

2013-09-05
昨天搞域名,没有写blog,愧疚蛮久,还好域名搞定了...嘻嘻
继续行程,记录点滴... : tomcat6.0.x已经通过svn导入eclipse运行,接下来就是阅码之旅。,每个人阅读源码方式可能不尽相同,我第一次,没啥经验,凭空想象自己的方式:了解程序结构,运行程序,跟踪源码,设置断点,打印输出,验证假设,弄清楚启动过程,了解数量流向。 我们都知道tomcat调度Servlet来处理来自HTTP的请求,我猜想原理是这样的:Tomcat启动ServerSocket监听网络端口,tomcat分配线程处理来自HTTP的请求,线程负责解析请求,在请求上调用过滤器,使用反射调用Servlet的service方法来处理请求完成响应,tomcat如何实现调度功能?如何实现处理HTTP协议的请求?结构框架如何。
先看看tomcat6.0.x的框架结构图,在网上看到过多种框架图,有记忆的有两种。

图片来自网络
来自Tomcat 系统架构与设计模式

图片来自网络
来自[忘记来自哪个blog了]

第一张图给以的信息很少,只标出了Server,Server下面的多个Service,以及Service中的组件,结构层次很清晰,但是不够细,例如Engine,Host,Context等组件没有画出来,以及他们之间的层次关系也没有,我喜欢第二张图,因为第二张展示了tomcat的结构层次图,从Server到servlet全都画出来,一看就明白他们的层次关系,同时第二张图中还有数据流图,从起点到servlet,再从servlet回来,线路明了,能减少精力在数据流的分析,当然第二张图也有的组件没有画出来,比如Logging,Naming等。
我们都知道tomcat的基本就是容器,通过容器来管理资源,调度信息,控制数据流向,tomcat的框架是由容器构成的,往框架往里面替补容器,容器连起来构成一个处理请求的生产线。图中传递很多信息,容器之间的关系,数据流向,组件结构,tomcat的框架结构直接展现出来。

还有一张必须看的图 图片来自网络
来自Tomcat启动过程原理详解

这张结构图也是描述tomcat框架结构的,他从另一个维度来描述,通过网络端口来源,逐级分解结构,从图上我们可以看出,一个Server可以有多个Service,但一个Service下面只能有一个Engine,一个Engine下面可以有多个Host,一个Host下面可以有多个Context,数据流向也可以从图中获知,请求从Connector中开始,一直通过容器传递到Context中,再有Context传递给Servlet,还有一个就是Server会启动一个ServerSocket来监听8005端口,负责监听是否要关闭Server。
今天就到这里了,欢迎吐槽...

是否每一天都是新,我们要如何改变

© 著作权归作者所有

douglaswei
粉丝 9
博文 61
码字总数 40667
作品 0
珠海
架构师
私信 提问
加载中

评论(1)

MarvinWang
MarvinWang
很受用!
eclipse导入tomcat源码-tomcat 6.x 源码阅读

2013-09-03 : 从大学开始学习java到现在已经有3年多,工作有一年多,起初工作还是java方面的,最近切到python。心理总有一直不踏实的感觉,觉得缺少点东西,没有自己的想法,很少问自己为什么...

douglaswei
2013/09/04
1K
2
tomcat6.0.x启动过程-tomcat 6.x 源码阅读

2013-09-07 周末来啊,宅的日子又到了...我们知道tomcat的基本是容器,通过容器来完成servlet容器的设计。从上一篇blog中看到了tomcat的结构框架图,图中容器嵌套,组件组合,tomcat如何设置...

douglaswei
2013/09/07
397
2
Apache Tomcat多个安全漏洞被公布

多个tomcat安全漏洞被公布,这些漏洞可以绕过安全限制并造成DOS攻击。这些漏洞影响Apache Tomcat 6.x和Apache Tomcat 7.x。 Apache Tomcat 漏洞 CVE-2012-4534 Apache Tomcat denial of serv...

tianpeng91
2012/12/10
4
0
Apache Tomcat 6.0.x 即将结束生命周期

Tomcat 团队宣布 Apache 6.0.x 将于 2016年12月31 结束支持,这意味着这个时间以后,不在考虑仅限于 Tomcat 6.x 的 Bug 、安全漏洞等问题。而在 2017年3月30日后,6.0.x 下载页面将移除,镜像...

红薯
2015/06/04
3.1K
9
MyEclipse 多项目对应配置多个Tomcat

MyEclipse 多项目对应配置多个Tomcat 如果多个项目放在一个Tomcat下,在MyEclipse启动Tomcat时,会把其他项目也一起启动,速度会慢。 现在设置多个项目,分别对应一个Tomcat。 如果你设置多个...

robinjiang
2013/11/21
282
0

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
今天
4
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
6
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
8
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
6
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部