二:Tomcat源码之整体架构与启动流程

Posted PoetryAndTheDistance

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二:Tomcat源码之整体架构与启动流程相关的知识,希望对你有一定的参考价值。

目录

整体架构

Tomcat各个组件对应的实现类

Tomcat整体启动流程


Tomcat流程图

整体架构

  我们想要了解一个框架,首先要了解它是干什么的,Tomcat我们都知道,是用于处理连接过来的Socket请求的。那么Tomcat就会有两个功能:

    • 对外处理连接,将收到的字节流转化为自己想要的Request和Response对象
    • 对内处理Servlet,将对应的Request请求分发到相应的Servlet中

  那么我们整体的骨架就出来了,Tomcat其实就分为两大部分,一部分是连接器(Connnector)处理对外连接和容器(Container)管理对内的Servelet。

  大体的关系图如下:

0

描述:

    最外层的大框就是代表一个Tomcat服务,一个Tomcat服务可以对应多个Service。每个Service都有连接器和容器。

    这些对应的关系我们也可以打开在Tomcat目录配置文件中 server.xml中看出来。

<Server port="8006" shutdown="SHUTDOWN">  
    <Service name ="Catalina">    
        <Connector port ="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>     
        <Connector port="8010" protocol="AJP/1.3" redirectPort="8443"/>
        <Engine name="Catalina" defaultHost="localhost">
            <Realm className="org.apache.catalina.realm.LockOutRealm">            
                <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
            </Realm>          
            <Host name="localhost" appBase="webapps"></Host>
        </Engine>
    </Service>    
</Server>

 

Tomcat各个组件对应的实现类

0

更多

0

Tomcat整体启动流程

蓝线部分是各个组件的初始化,在Catalina对象中创建了server.xml的解析器,一步到位创建出大部分的组件

红线部分是责任链模式的启动流程

绿线部分是热加载和热部署的过程(war包的解压和web.xml的解析,解析出listener filter servlet等)

0

以上是关于二:Tomcat源码之整体架构与启动流程的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat源码分析-Tomcat整体架构

Tomcat卷一 ----架构和初始化源码分析

Tomcat源码分析二:先看看Tomcat的整体架构

Tomcat组件架构图梳理

Tomcat组件架构图梳理

Android 逆向整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )(代码片段