Tomcat源码阅读之初始化Server组件

组件都实例化完之后,便进入到了组件的初始化过程,进行initialize操作,注意这里的初始化跟前面的实例化是两个不同的操作。
首先初始化的是Server组件。

public void initialize()
        throws LifecycleException
    {

        lifecycle.fireLifecycleEvent(INIT_EVENT, null);
        initialized = true;
                             。
                             。
                             。
                             略
        // Initialize our defined Services
        for (int i = 0; i < services.length; i++) {
            services[i].initialize();
        }
    }

中间省略了部分JMX的代码,Tomcat中关于JMX的代码比较多,感兴趣的同学可以自行研究下哇。
执行初始化操作的时候,首先触发了init事件,那么先来看看监听器模式在Tomcat中的运用。平常我们使用的监听者模式一般都有三个必须元素,分别是事件源,事件和监听者。事件源是产生事件的地方,即被监听者,对于事件一般都会定义成相应的事件类型,监听者一般封装了产生事件之后的处理逻辑。一个使用监听器模式的完整流程就是在事件源上绑定相应的事件,触发了监听的事件的时候调用监听器里的方法进行处理。比如进行web开发的时候,一般会在按钮上绑定click事件,点击按钮的时候触发click事件,这时便会调用监听者的方法进行处理。
Tomcat中的事件一般由组件产生,而组件都实现了Lifecycle接口,因此可以把Lifecycle接口看成事件源。组件上注册的事件类型一般为init,start,before_start等,事件由LifecycleEvent接口表示。注册的事件触发之后,会调用LifecycleListener接口的实现类去处理,LifecycleListener接可以看做监听器。一般一个组件上都会注册若干个监听器,为了方便管理监听器,Tomcat提供了个工具类LifecycleSupport。LifecycleSupport提供了一个listeners数组和addLifecycleListener,findLifecycleListeners,removeLifecycleListener三个方法用于管理监听器,组件中增加和移除监听器,实质都是调用LifecycleSupport类的相关方法,对listeners数组进行增加和删除,这样所有组件增加和移除监听器的操作都在一个listeners数组中完成,使监听器的管理变的简单。当组件中有事件产生的时候,就会调用LifecycleSupport类的fireLifecycleEvent方法,将事件交给监听器处理。
顺着这个思路,不难理解init事件的处理过程,首先产生init事件,接着调用监听init事件的监听器进行处理,处理完之后将StandardServer中的initialized属性设置为true,表示Server已经执行了初始化操作。
接着就该初始化Service组件了,由于一个Server组件中可能有多个Service组件,因此需要将Service组件一个一个的初始化。那么接下来就该阅读Service组件初始化部分的源码了。未完待续。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值