当前位置:   article > 正文

Tomcat源码分析-StandardServer类_tomcat standardserver 源码分析

tomcat standardserver 源码分析

类概况

StandardServer类是Tomcat初始化流程中的第一个组件,本章需要结合“Tomcat源码分析-初始化流程” 的时序图继续看。时序图中Catalina类调用了StandardServer类的init方法,而这个模版方法是调用子类的initInternal类的,所以该类着重关注这个方法即可。

类图绘制如下:

这里写图片描述

主要流程

初始化流程主要通过该类的initInternal方法完成的,而它的startInternal方法,仅仅是依次调用子组件的init方法,可略过不看。
整理initInternal和destroyInternal方法的流程图如下:

这里写图片描述

initInternal和destroyInternal是一对方法,在StandardServer类中主要是对当前组件的注册和注销。
此外,关注类图中最后几个属性,包含一个ServerSocket,是用来监听shutdown的命令的,这个逻辑还是比较容易理解的。

启示录

首先,这个类里面有一个比较难懂的概念就是GlobalNamingResources是支持JNDI资源配置的类,具体这个配置是怎么回事,还需要深究一下JavaEE的JNDI的知识。

其次,这个类的有两个文件类型的成员变量catalinaHome和catalinaBase,它们的值是通过Catalina对象获取的,根源就是tomcat配置的两个系统变量catalina.home和catalina.base,但是这两个配置直接有什么区别呢?它们的注释说明是这样的:

catalina.home : Name of the system property containing the tomcat product installati on path,即tomcat的安装目录。
catalina.base :Name of the system property containing the tomcat instance installation path,即tomcat运行实例的安装目录。

基于这两个变量的用法,找到一篇很有启发性的文章,(参考:http://blog.csdn.net/keda8997110/article/details/21400455)哪天有空可以实践下运行多个tomcat实例的过程。

最后,StandardServer类对MBeanRegistry的实现流程值得分析,这里通过Tomcat定义的Registry类完成的,它就是我下一次要分析的目标了。平时单纯的用Tomcat来部署web应用,而且都是很简单的冰山一角的用法。Tomcat如此博大精深,少年还需努力啊!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/741635
推荐阅读
相关标签
  

闽ICP备14008679号