tomcat8源码教程之Lifecycle生命周期_IT学习者—关注程序员的就业、工作和生活 

您现在的位置:主页 > 源码解读 > >

tomcat8源码教程之Lifecycle生命周期



时间: 2015-06-13 11:02     来源 : IT学习者      点击:

关键词: tomcat8    tomcat8源码    tomcat8教程   


目录页:《tomcat8源码分析


上一篇提到了StandardServer类,这个类实现了Lifecycle接口,Lifecycle是tomcat中关于组件生命周期状态监控操作监听的接口,下面我们就看一下这个接口有什么作用。 本文来自www.itxxz.com

打开 org.apache.catalina.Lifecycle 接口,首先看一下官方给出的流程示意图:



可以看到一个http请求的所有过程,这里基本都有涉及,而且这是一个监听接口,也就是后续执行开始(start)、结束(stop)或者销毁(destroy)操作的时候,都需要来根据自己的service进行实现,如果上述流程图看着有些混乱,可以看下下螃蟹简单梳理出来的流程图:




这样一个完整的流程图就呈现了出来,下面开始简单讲解一下:

1、当创建一个组件或实例的时候,将会执行inti方法进行初始化操作,紧接着服务开始启动(start)了。

2、如果当前组件处于STARTING_PREP, STARTINGSTARTED 这几个状态的时候,start方法将不会对其造成影响,可参考官方给出的流程图(第一张图)。 本文来自www.itxxz.com

3、如果当前组件启动失败(也就是执行start方法失败)或者是它的子组件启动失败时,将会执行stop方法。一旦当前组件执行了stop方法,无论它的子组件是否启动,都会执行stop方法。

4、同第二点,如果当前组件处于STOPPING_PREPSTOPPING 或 STOPED 这几个状态的时候,stop方法将不会对其造成影响

5、在某些情况下我们需要立即停止一个组件,也就是第一幅流程图中的must_stop,主要用于启动失败的情况,也就是启动不成功的情况下会强行调用stop方法。

6、最后还有一个销毁方法。按正常流程,在调用了stop方法后,在stopped时,会调用destroy。但有些情况例外,也就是需要我们强行must_destroy,比如:当我们重启失败的情况。 本文来自www.itxxz.com

以上就是对这个流程的简单解读,后面我们会通过实例来看到http请求在这些过程中的状态改变。
  itxxz.com






文章除注明转载外,均为IT学习者原创或编译
欢迎任何形式的转载,但务必请以超链接形式注明出处
本文出自:IT学习者
链接地址:http://www.itxxz.com/a/code/2015/0612/811.html



微信公众号:喝咖啡的螃蟹

喝咖啡的螃蟹
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-->