浅读Tomcat源码(一)---大体结构

 

Tomcat,对于所有的java开发人员都是不会陌生的东西,实现了J2EE规范的HTTP容器,出于好奇或者说出于对底层实现的了解,最近在读Tomcat的源码,下面就开始一起来读一下这段代码吧。

 

首先列举出我在阅读过程中的一些主要参考:

http://blog.csdn.net/beliefer/article/category/6154740

http://blog.csdn.net/x87648510


首先我们要搞懂如何获取Tomcat的源代码,在登录tomcat官网之后,可以看到获取源代码的链接,选择一个下载下来,我所下载的是7.0.10版本

在下载完Tomcat源码以后,我们第一步想做的自然是将其导入eclipse等IDE中了,Tomcat源码采用的是ant编译,但是不知为什么我下的版本在编译过程中都会报错,所以我选择采用了一种蠢办法:新建一个工程,然后把源码中的包全部复制进新的工程中,将java、conf、test三个文件设置为source folder,然后将所需要的jar包全部下载并配置,一般我下载jar包都选择到maven的库中去下载,免费且资源完整。


我们找到org.apache.catalina.startup包中的bootstarp类,run as java application,可以看到熟悉的场景:


这样我们的tomcat源码算是导入成功了,当然我的源码中依然有一两处报错,但是不影响我的运行和断点调试,接下来就要开始我们的源码阅读之旅啦。

 

tomcat的包很多,在阅读过程中读到最多的应该算是catalina下的startup、core、connector等包了

 

这里要说明的一点是,tomcat有一系列的组件,这些组件都实现org.apache.catalina.Lifecycle接口,这个接口顾名思义就是生命周期的意思,而Tomcat的组件都必须要实现生命周期。而且其中大部分都是继承了LifecycleMBeanBase类的

 

先来介绍下tomcat的组件,tomcat的组件是父子关系的,父子之间以引用形式关联,最高层的组件是Server,Server所代表的是整个tomcat服务,其下有多个Service(事实上默认是一个),Service是Tomcat服务的总集合,下面包含了多个Connector,Connector默认有两个,分别是8080端口的HTTP/1.1协议的连接和8009端口的AJP/1.3协议的连接。

 

上述组件(Server、Service、Connector)都是属于启动Tomcat自身一些对象的组件,此外还有专门用来加载WebApp下web应用的组件,我们称为容器,主要的容器有四件:Engine、Host、Context、Wrapper,其中Engine是Service中包含的,其代表的是一个Tomcat服务的最外层容器,Engine中包含了一个或多个Host,这是在server.xml中定义的,代表的是一个服务的主机,Host包含了多个Context,一个Context代表的是一个web应用,Context下有多个Wrapper,一个Wrapper包含了一个Servlet类,每次请求都是依次向下访问到对应的Wrapper之后加载对应的Servlet对象的。


在Tomcat启动之初,各个组件会以父组件启动子组件的方式依次启动,我们下一篇着重讲解Tomcat的启动流程



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值