文档介绍:智慧人大有能力诚信?正直?创新有知识的人力上加力HansonTel:**********.Mail:******@Tomcat源码分析(七)--单一启动/关闭机制(生命周期)在前面的大部分文章都是讲连接器和容器的,以后的内容会偏向写一些Tomcat的其他组件以及一些细节的东西。Tomcat有很多组件,要一个一个启动组件难免有点麻烦。由于Tomcat的包含关系是Catalina->Server->Service->容器/连接器/日志器等,于是可通过父组件负责启动/关闭它的子组件,这样只要启动Catalina,其他的都自动启动了。这种单一启动和关闭的机制是通过实现Lifecycle接口来实现的。下面是Lifecycle接口的定义:[java]publicinterfaceLifecycle{publicstaticfinalStringSTART_EVENT="start";//生命周期的六个事件类型!publicstaticfinalStringBEFORE_START_EVENT="before_start";publicstaticfinalStringAFTER_START_EVENT="after_start";publicstaticfinalStringSTOP_EVENT="stop";publicstaticfinalStringBEFORE_STOP_EVENT="before_stop";publicstaticfinalStringAFTER_STOP_EVENT="after_stop";publicvoidaddLifecycleListener(LifecycleListenerlistener);//在此组件中添加一个***publicLifecycleListener[]findLifecycleListeners();publicvoidremoveLifecycleListener(LifecycleListenerlistener);publicvoidstart()throwsLifecycleException;//组件启动方法publicvoidstop()throwsLifecycleException;}当组件实现了Lifecycle接口,父组件启动的时候,即调用start方法时,只要在父组件的start方法中也调用子组件的start方法即可(只有实现统一的接口Lifecycle才能实现统一调用,如以下调用方式:(Lifecycle)()),智慧人大有能力诚信?正直?创新有知识的人力上加力HansonTel:**********.Mail:hansonjan@下面一步一步来看源代码,首先在Catalina启动start,部分代码如下:[java]//Startthenewserverif(serverinstanceofLifecycle){try{();((Lifecycle)server).start();//启动servertry{//().addShutdownHook(shutdownHook);}catch(Throwablet){//Thiswillfai