Tomcat的启动过程

平时我们通过bin目录下的startup.bat来启动tomcat,startup.bat又调用了catalina.bat,catalina.bat从命令行启动org.apache.catalina.startup.Bootstrap,这个类有main方法,所以可以从命令行执行。

          Bootstrap执行后,首先执行init()方法进行初始化,然后调用load()和start()方法。下面具体介绍init()方法、load()、start()方法。

        一、init()

         1、首先设置catalina.home,catalina.base这两个环境变量;

         2、创建了三个类加载器

         根据conf/catalina.properties中的配置,初始化了三个ClassLoader:commonLoader、catalinaLoader、sharedLoader;并且把catalinaLoader设置为当前线程上下文的类加载器;

然后通过下面的语句创建Catalina类的对象(变量名是catalinaDaemon):

       Class startupClass =catalinaLoader.loadClass ("org.apache.catalina.startup.Catalina");
        Object startupInstance = startupClass.newInstance();    

      二、load()

      通过反射机制,调用catalina对象的load()方法------在该方法中,初始化一些目录,比如temp目录,初始化名称空间,如java:env;然后使用Digester的方式,根据server.xml的配置来装配tomcat的各个组件,这里暂时提一下tomcat的结构,tomcat顶层组件是Server,Server下面有多个Service组件,还有Connector、Engin、Host等。装配组件的过程中,生成了各个组件的对象,并设置了他们之间的关联关系。

       三、start()

        该方法里面,通过反射机制,调用了Catalina对象的start()方法。Catalina对象的start()方法又调用了Server对象的Start()方法,并设置关闭Server的回调方法。

     上面简单说明了一下tomcat的启动过程,下一次会给出tomcat的类图、序列图等来说明各个组件之间的关系。


你可能感兴趣的:(Tomcat的启动过程)