2、catalina 读取tomcat内置的用户管理界面,读取配置tomcat-user.xml。
3、读取server.xml,根据层级关系设置到services对象中。每个节点都有自己的listener(用来根据配置,不同节点执行不同的代码)。
4、执行service下配置的Listener
5、执行Connector初始化
6、初始化流程结束,开始启动流程,注册MBean到JMX
7、StandardService start 执行本身listener
8、StandardEngine start 执行本身listener .读取/conf/tomcat5-mbeans.xml
9、StandardHost start 执行本身listener
10、StandardPipeline start 执行本身listener
11、HostConfig读取host-manager.xml, manager.xml
12、发布war工程文件
13、启动webapp的工程
14、listeners->filter->servlet,代码如下:
try { // Create context attributes that will be required if (ok) { postWelcomeFiles(); } // Set up the context init params mergeParameters(); if (ok) { // Notify our interested LifecycleListeners lifecycle.fireLifecycleEvent(AFTER_START_EVENT, null); } // Configure and call application event listeners if (ok) { if (!listenerStart()) { log.error( "Error listenerStart"); ok = false; } } try { // Start manager if ((manager != null) && (manager instanceof Lifecycle)) { ((Lifecycle) getManager()).start(); } // Start ContainerBackgroundProcessor thread super.threadStart(); } catch(Exception e) { log.error("Error manager.start()", e); ok = false; } // Configure and call application filters if (ok) { if (!filterStart()) { log.error( "Error filterStart"); ok = false; } } // Load and initialize all "load on startup" servlets if (ok) { loadOnStartup(findChildren()); } } finally { // Unbinding thread unbindThread(oldCCL); }