我们在流程图上可以知道,当HttpConnector初始化完之后,那么程序将返回到Catalina类,开始调用standardServer的start方法,开始standardServer的启动流程了,所以我们返回到standardServer的start方法中进一步探究,源码如下:
public void start() throws LifecycleException{
// Validate and update our current component state
if (started)
throw new LifecycleException
(sm.getString("standardServer.start.started"));
// Notify our interested LifecycleListeners
lifecycle.fireLifecycleEvent(BEFORE_START_EVENT, null);
lifecycle.fireLifecycleEvent(START_EVENT, null);
started = true;
// Start our defined Services
synchronized (services) {
for (int i = 0; i < services.length; i++) {
if (services[i] instanceofLifecycle)
((Lifecycle)services[i]).start();
}
}
// Notify our interested LifecycleListeners
lifecycle.fireLifecycleEvent(AFTER_START_EVENT, null);
}
从这个方法里边,我们有如下几个关键地方需要细致分析下:
1,在这个方法里边,我们看到了一个属性lifecycle,查看这个属性的代码: