您的位置:首页 > 运维架构 > Tomcat

Tomcat源码阅读

2016-06-25 15:20 429 查看
Tomcat是一款非常优秀的servlet容器或者说是服务器,相信很多人都能非常熟练的使用它。但是对于技术有基情的人是不会仅仅停留在熟练使用的阶段的。为了不只当一个熟练工,那么我们就要去研究它运行的原理。研究运行原理最好的办法当然就是去阅读tomcat的源码。当然,阅读源码必须得讲究方式方法了,每个人的理解方式不同,阅读的方法也就不一样了。比如把tomcat拆分成不同的组件,一个一个的剖析,这是最典型的阅读方法。不过我个人更加倾向于根据运行阶段来分析。tomcat既然是一个服务器,那么就会有最基本的初始化(init),加载(load),启动(start),运行(run),还有停止(stop)这几个阶段。通过对每个阶段的分析,了解每个组件在不同的阶段都干了些什么,相比零散的研究每个组件,显得更加的动态化,并且贴合场景来阅读源码我相信收获会更多。那么接下里就简单阅读下tomcat6的源码。

先来看看tomcat大致是由哪些组件组成的。



这张图应该很熟悉了吧,网上tomcat架构图基本都长这样。

图中虽然很清晰的展示了tomcat有哪些主要组件和组件之间的关系,但这里也要简单的罗列下每个组件的基本功能,为后面的代码阅读做个引子。

最外面也就是绿色虚线框起来的是Server组件,它代表整个tomcat服务器,即其它组件运行的基础,囊括了其它所有的组件,通过Server组件可以启动和关闭tomcat。

蓝色虚线框起来的是Service组件,它的作用是负责向外提供服务。那么它是如提供服务的呢,这就涉及到了Connector组件和Container组件。一个Server组件可以包含多个Service组件,道理很简单,tomcat可以提供多个服务,并且可以在Server组件中增加和删除Service组件。

既然Service组件能向外提供服务,那么首先就要和外界取得联系,即要建立连接,这个时候就需要Connector组件。

建立连接之后还要进行相应的逻辑处理,比如查找某些静态资源,这个时候就需要Container组件。一个Service组件可以包含多个Connector组件和一个Container组件。一个Connetor组件只能处理一种请求协议,例如一个Connector组件不能既处理http方式的请求又能处理https请求,因此需要多个Connector组件。

Container组件中又包含了Engine,Host,Context,Wrapper四个组件,负责处理请求相关的逻辑。

这里大致介绍了下tomcat的基本组成,接下来便通过阅读源码的方式去了解tomcat的运行原理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: