在前几篇文章中已说到整个服务器的启动已托管给该类的initialize及start方法,下面我们来看一下这两个方法的内容
一.initialize
内容有三
1.lifecycle.fireLifecycleEvent(INIT_EVENT, null);
触发Lifecycle事件,将调用其LifecycleListener的相应方法,这里需要在XML文件里有配置,这里不细讲了
2.Registry.getRegistry(null, null).registerComponent(this, oname, null );
将该实例注册到MBeanFactory
3.services[i].initialize()
这里又将初始化的动作妥托给StandardService类的initialize进行
二.start()
内容有三
1.lifecycle.fireLifecycleEvent
触发Lifecycle.BEFORE_START_EVENT及Lifecycle.START_EVENT
2.((Lifecycle) services[i]).start();
妥拒给StandardService.start
3.lifecycle.fireLifecycleEvent
触发Lifecycle.AFTER_START_EVENT
StandardServer的默认Listener有如下几个
org.apache.catalina.core.AprLifecycleListener
org.apache.catalina.core.JasperListener
org.apache.catalina.mbeans.ServerLifecycleListener
org.apache.catalina.mbeans.GlobalResourcesLifecycleListener
这几个监听器的工作无非就是初化一些类如JspRuntimeContext,将之前解析XML得到的对象以MBean方式进行注册及取消注册等
下一篇我们分别来看StandardService.initialize,start