tomcat启动鸟瞰

tomcat启动鸟瞰描述:

    因为只要是java的一个进程(不是进程,目前jdk8版本还没有提供java能自己搞进程,不知道Oracle【勇士的球馆好像就是叫Oracle(甲骨文球馆)】推出来的jdk9是否可以自己搞进程)的启动都是需要从main函数开始的,没有特殊的存在。

   tomcat8的启动如下:

         Bootstrap开始运行main---》反射调用Catalina(远程轰炸机)--》Server的启动--》Service启动--》Connector启动---》


启动的过程是一个接着一个的,顺序是从Connector倒过来启动的,因为,tomcat是一种组件的设计模式。

port="9526" shutdown="SHUTDOWN">
    className="org.apache.catalina.startup.VersionLoggerListener"/>
    
    
    className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on"/>
    
    className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
    className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
    className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>

    
        name="UserDatabase" auth="Container"
                  type="org.apache.catalina.UserDatabase"
                  description="User database that can be updated and saved"
                  factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
                  pathname="conf/tomcat-users.xml"/>
    
    name="Catalina">
        port="9527" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443"/>
        port="9528" protocol="AJP/1.3" redirectPort="8443"/>
        name="Catalina" defaultHost="localhost">
            className="org.apache.catalina.realm.LockOutRealm">
                className="org.apache.catalina.realm.UserDatabaseRealm"
                       resourceName="UserDatabase"/>
            

            name="localhost" appBase="webapps"
                  unpackWARs="true" autoDeploy="true">
                className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                       prefix="localhost_access_log" suffix=".txt"
                       pattern="%h %l %u %t "%r" %s %b"/>

            
        
    
    name="liuxu">
        port="12306" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443"/>
        port="12307" protocol="AJP/1.3" redirectPort="8443"/>
        name="Catalina" defaultHost="localhost">
            className="org.apache.catalina.realm.LockOutRealm">
                className="org.apache.catalina.realm.UserDatabaseRealm"
                       resourceName="UserDatabase"/>
            

            name="localhost" appBase="webapps"
                  unpackWARs="true" autoDeploy="true">
                className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                       prefix="localhost_access_log" suffix=".txt"
                       pattern="%h %l %u %t "%r" %s %b"/>

            
        
    

   就是按照上面的顺序,从外层朝向内层启动,但是,内层是外层的组件,只有组件启动完成了,外部才算是启动完成

你可能感兴趣的:(tomcat源码阅读)