Tomcat源码分析(7)启动 关闭机制(生命周期)

Tomcat源码分析(7)启动 关闭机制(生命周期)

ID:41116420

大小:33.50 KB

页数:6页

时间:2019-08-16

Tomcat源码分析(7)启动 关闭机制(生命周期)_第1页
Tomcat源码分析(7)启动 关闭机制(生命周期)_第2页
Tomcat源码分析(7)启动 关闭机制(生命周期)_第3页
Tomcat源码分析(7)启动 关闭机制(生命周期)_第4页
Tomcat源码分析(7)启动 关闭机制(生命周期)_第5页
资源描述:

《Tomcat源码分析(7)启动 关闭机制(生命周期)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、智慧人大有能力    诚信・正直・创新有知识的人力上加力Tomcat源码分析(七)--单一启动/关闭机制(生命周期)在前面的大部分文章都是讲连接器和容器的,以后的内容会偏向写一些Tomcat的其他组件以及一些细节的东西。Tomcat有很多组件,要一个一个启动组件难免有点麻烦。由于Tomcat的包含关系是Catalina->Server->Service->容器/连接器/日志器等,于是可通过父组件负责启动/关闭它的子组件,这样只要启动Catalina,其他的都自动启动了。这种单一启动和关闭的机制是通过实现Lifecycle接口来实现的。下面是Lifecycle接口的定义:[java]pu

2、blicinterfaceLifecycle{publicstaticfinalStringSTART_EVENT="start";//生命周期的六个事件类型!publicstaticfinalStringBEFORE_START_EVENT="before_start";publicstaticfinalStringAFTER_START_EVENT="after_start";publicstaticfinalStringSTOP_EVENT="stop";publicstaticfinalStringBEFORE_STOP_EVENT="before_stop";publicst

3、aticfinalStringAFTER_STOP_EVENT="after_stop";publicvoidaddLifecycleListener(LifecycleListenerlistener);//在此组件中添加一个监听器publicLifecycleListener[]findLifecycleListeners();publicvoidremoveLifecycleListener(LifecycleListenerlistener);publicvoidstart()throwsLifecycleException;//组件启动方法publicvoidstop()th

4、rowsLifecycleException;}当组件实现了Lifecycle接口,父组件启动的时候,即调用start方法时,只要在父组件的start方法中也调用子组件的start方法即可(只有实现统一的接口Lifecycle才能实现统一调用,如以下调用方式:(Lifecycle)子组件.start()),下面一步一步来看源代码,首先在Catalina启动start,部分代码如下:[java]//Startthenewserverif(serverinstanceofLifecycle){try{server.initialize();((Lifecycle)server).start

5、();//启动servertry{//RegistershutdownhookRuntime.getRuntime().addShutdownHook(shutdownHook);}catch(Throwablet){HansonTel:15360452825.Mail:hansonjan@163.com智慧人大有能力    诚信・正直・创新有知识的人力上加力//ThiswillfailonJDK1.2.Ignoring,asTomcatcanrun//finewithouttheshutdownhook.}//Waitfortheservertobetoldtoshutdownser

6、ver.await();}catch(LifecycleExceptione){System.out.println("Catalina.start:"+e);e.printStackTrace(System.out);if(e.getThrowable()!=null){System.out.println("-----RootCause-----");e.getThrowable().printStackTrace(System.out);}}}关键看((Lifecycle)server).start();这样便在启动Catalina的时候启动了Server,再看StandardS

7、erver的start方法:[java]publicvoidstart()throwsLifecycleException{//Validateandupdateourcurrentcomponentstateif(started)thrownewLifecycleException(sm.getString("standardServer.start.started"));//NotifyourinterestedLifecycleListe

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。