前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tomcat启动分析(4)StandardServer的load和start

tomcat启动分析(4)StandardServer的load和start

作者头像
平凡的学生族
发布2022-01-07 20:57:15
4080
发布2022-01-07 20:57:15
举报
文章被收录于专栏:后端技术后端技术

参考

http://www.iocoder.cn/Tomcat/yuliu/Start-analysis-4-components-int-and-start-method/

LifecycleBase

上回讲到,catalina的load和start会调用StandardServer的load和start。我们看到StandardServer的继承链:

  1. LifecycleBase中实现了initstart的方法。 initstart 方法的定义可以看到这两个方法最终将会调用子类中定义的 initInternalstartInternal
  2. initInternalstartInternal在StandardServer中有定义。它们将循环调用Server类里内置的Service数组的init方法和start方法。
  3. 按上面的分析,接下来将会调用 StandardService 类的 init 和 start 方法,实际上这个类也是 LifecycleBase 类的子类,所以最终的也会调用本类中的initInternalstartInternal方法。

别的组件也是类似,层层向里调用

总结

附上一个结构图:

org.apache.catalina.core.StandardServer、org.apache.catalina.core.StandardService、org.apache.catalina.connector.Connector、org.apache.catalina.core.StandardEngine、org.apache.catalina.core.StandardHost、org.apache.catalina.core.StandardContext 等等组件都维护了成员变量,进行引用。关系为1对1,或者1对多。

一个组件调用init方法时,会进而调用initInternal。在initInternal内部会对其包含的子组件依次调用init方法。形成层层调用,最终完成每个组件的生命周期。

说到生命周期,我们发现上述组件都是LifecycleBase的子类,而LifecycleBase又是Lifecycle的子类。Lifecycle顾名思义,就是生命周期,说明组件都遵循生命周期运作。

这就是Lifecycle的核心概念了,后文会讲述。

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.04.10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考
  • LifecycleBase
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com