1 / 34
文档名称:

Tomcat7源码分析.doc

格式:doc   大小:1,432KB   页数:34页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Tomcat7源码分析.doc

上传人:文库旗舰店 2019/11/16 文件大小:1.40 MB

下载得到文件列表

Tomcat7源码分析.doc

相关文档

文档介绍

文档介绍:目 录一、背景  2二、Tomcat源码目录结构  3三、Tomcat体系结构  4四、Tomcat源码解析                257、Tomcat所涉及的设计模式  32一、背景Tomcat作为JavaWeb领域的Web容器,目前在淘宝上也使用的也非常广泛,现在基本上所有线上业务系统都是部署在Tomcat上的。为了对平时开发的Web系统有更深入的理解,于是开始仔细研究了Tomcat的源码。大家都知道Servlet规范是Java领域中为服务端编程制定的规范,对于我们开发者只是关注了Servlet规范中提供的编程组件(ServletContextListener,Filer,Servlet) 等 ,但是规范中还有一些我们经常使用的接口(ServletContext,ServletRequest,ServletResponse,FilterChain)等都是由Tomcat去实现的,并且我们开发者实现的编程组件只是被Tomcat去回调而已。所以看Tomcat源码实现也有助于我们更好的理解Servlet规范及系统如何在容器中运行(一些开源的MVC框架如Struts2,Webx,SpringMVC本质无非就是这个)。  二、Tomcat源码目录结构三、Tomcat体系结构仔细查看下图(网络上描述Tomcat架构比较清晰的一张图),不难发现其中的Connector组件以及与Container组件是Tomcat的核心。一个Server可以有多个Service,而一个Service可以包含了多个Connector组件和一个Engine容器组件,一个Engine可以由多个虚拟主机Host组成,每一个Host下面又可以由多个Web应用Context构成,每一个的Context下面可以包含多个Wrapper(Servlet的包装器)组成。Tomcat将Engine,Host,Context,Wrapper统一抽象成Container。一个抽象的Container模块可以包含各种服务。例如,Manager管理器(Session管理),Pipeline管道( 维护管道阀门Value )等。Lifecycle接口统一定义了容器的生命周期,通过事件机制实现各个容器间的内部通讯。而容器的核心接口Container的抽象实现中定义了一个Pipeline,一个Manager,一个Realm以及ClassLoader统一了具体容器的实现规范。连接器(Connector)组件的主要任务是为其所接收到的每一个请求(可以是HTTP协议,也可以AJP协议),委托给具体相关协议的解析类ProtocolHandler,构造出Request对象和Response对象。然后将这两个对象传送给容器(Container)进行处理。容器(Container)组件收到来自连接器(Connector)的Request和Response对象后,负责调用Filter,最后调用Servlet的service方法(进入我们开发的Web系统中)。四、Tomcat源码解析Servlet规范由一组用Java编程语言编写的类和接口组成。Servlet规范为服务端开发人员提供了一个标准的API以及为服务器厂商制定了相关实现规范,开发人员只需要关心Servlet规范中的编程组件(如Filter,Servlet等),其他规范接口由第三方服务器厂商(如Tomcat)去实现,三者的关系如下图,Servlet规范之于Tomcat的关系,也类似于JDBC规范与数据库驱动的关系,本质就是一套接口和一套实现的关系。对于一个Web服务器主要需要做的事情,个人认为基本由以下组件组成: [TCP连接管理]-->[请求处理线程池管理]-->[HTTP协议解析封装]-->[Servlet规范的实现,对编程组件的回调]-->[MVC框架,Web系统业务逻辑]。Tomcat的源码及功能点因为实在过于庞大,下面的源码解析不可能全部功能模块都涉及到,接下来我们主要会根据Tomcat的启动、请求处理、关闭三个流程来梳理Tomcat的具体实现,尽可能把各个模块的核心组件都展示出来。 最后还会分析下Tomcat的Connector组件及Tomcat运行过程中的线程概况及线程模型及Tomcat的类加载机制及Tomcat所涉及的设计模式。       Tomcat在启动时的重点功能如下:初始化类加载器:主要