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如此博大精深,少年还需努力啊!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值