Tomcat 6 启动过程分析 (2) - Catalina

package org.apache.catalina.startup;
public class Catalina extends Embedded

Embedded 类主要负责Catalina 的 Startup/Shutdown。 它继承自Embedded, Embedded又继承自StandardService,并实现Lifecycle接口,StandardService实现了 Lifecycle, Service 和MBeanRegistration 接口。它和Embedded做一样的事情,只不过要用到"conf/server.xml"。

主要方法:

start()
Bootstrap的start方法最后调用了Catalina 的start方法来启动Tomcat。先判断server (org.apache.catalina.Server)是不是null,是的话调用load()方法。
然后启动server: ((Lifecycle) server).start();
然后注册shutdown守护进程。Runtime.getRuntime().addShutdownHook(shutdownHook);
最后调用await()方法,监听指定的端口(8080),等待shutdown命令的到来,以关闭tomcat。
至此,server就启动起来了。

load()
load 方法 开启一个新的 server 实例。server实例是单例的,代表整个JVM, 首先,调用父类 Embedded 的 initDirs() 方法来设置目录:
System.setProperty("catalina.home", catalinaHome);
System.setProperty("catalina.base", catalinaBase);
然后,initNaming();
然后, 构建并执行server.xml解析器 Digester,
       Digester digester = createStartDigester();
       Digester 用来处理XML输入流,也就是解析server.xml。
然后, 装载配置文件server.xml (file = configFile();), 用 digester.parse(inputSource)来构建Server (StandardServer),

最后初始化server, server.initialize()。


你可能感兴趣的:(apache,jvm,tomcat,xml)