2. TOMCAT学习——TOMCAT的启动过程

  • TOMCAT的启动过程

    Tomcat的启动入口是 Bootstrap 类的main方法Bootstrap 会初始化一些基础环境,比如设置环境变量和默认类加载器。然后调用 Catalina 的方法来加载和启动Tomcat。
    启动过程总体分为两个步骤:

    load();
    start();
    
  1. load

    load方法会根据配置文件加载整个TOMCAT,将TOMCAT的所有组件按照设计好的结构装配起来。整个load的过程中最重要的地方在Catalina 中。Catalina 的load方法会去解析 Server.xml 文件并且加载文件中包含的组件。

    <!--这里剔除了一些无关的组件内容-->
    <Server port="8005" shutdown="SHUTDOWN">
      <Listener className="org.apache.catalina.core.AprLifecycleListener" 
                SSLEngine="on" />
      <Service name="Catalina">
        <Connector port="8080" protocol="HTTP/1.1" redirectPort="8443" />
        <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
        <Engine name="Catalina" defaultHost="localhost">
          <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="true"
                xmlValidation="false" xmlNamespaceAware="false">
            <Context path="/test" docBase="test"/>
          </Host>
        </Engine>
      </Service>
    </Server>
    

    以上述文件为例。
    TOMCAT解析 Server.xml 的时序图如下
    在这里插入图片描述

     1.  Catalina调用自己的parse方法开始解析Server.xml
     2.  读取到Server标签,实例化Server,将Server关联到Catalina。
     3.  读到Listener标签,将Listener关联到Server。
     4.  读到Service标签,将Service关联到Server。
     5.  读到Connector标签,将Connector关联到Service。
     6.  读到Engine标签,将Engine关联到Service。
     7.  读到Host标签,将HOST关联到Engine。
     8.  读到Context标签,将Context关联到Host。
     实际上整个load的过程就是从外到内,一步步实例化,并将子容器关联到父容器的过程。
    
  2. start

    start方法会一层层的启动TOMCAT,直至整个TOMCAT启动完成或者遇到异常启动失败。

    1. Catalina调用Server的启动方法。
    2. Server遍历自己的Service列表,启动所有的Service。
    3. Service启动Connector列表中所有的Connector。
    4. Service启动默认容器Engine。
    5. Engine启动所有的直接子容器Host。
    6. Host部署并启动所有的Context。
    7. Context解析并启动所有的Wrapper。

    这里比较重要的两个点:

     1. Host的start方法中会部署所有的Context。(在之前的文章中说过,context容器对应的是servlet应用)
     2. Context的start方法中会解析web应用中的web.xml并初始化Wrapper。(Wrapper对应的是具体的servlet)
    

  • TOMCAT启动时序图
    在这里插入图片描述

    这个时序图对应了上面所有的内容(parse方法就是解析Server.xml的过程)。

    这里省略了一些细节的部分,从宏观上描述了TOMCAT启动的大体流程。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值