读书人

Tomcat源码系列1-Tomcat起步流程1

发布时间: 2012-09-07 10:38:15 作者: rapoo

Tomcat源码系列1--Tomcat启动流程1

最近在看Tomcat的源码,下面用博客记下看源码的一些心得。

Tomcat是从org.apache.catalina.startup.Bootstrap#main()开始启动. 大致分为三个步骤,即init、load和start。代码如下:?


?
(1) 从上面的时序图可以看出首先调用Catalina类的load()方法,具体代码如下:
(org.apache.catalina.startup.Catalina)。

?
(2) 在上面的load()方法中需要进行server的初始化工作,下图为Catalina.initialize的时序图,从图中可以看出server初始化所完成的工作。

Tomcat源码系列1-Tomcat起步流程1
?

至此,load方法结束,初期化的工作结束,下面开始进入start方法。

★3 容器启动
容器启动时,会调用Catalina.start(),下图为它的时序图。从图中可以看出StandardService的start方法被调用后会分别对Container和Connector进行start方法的调用。


Tomcat源码系列1-Tomcat起步流程1
?

1. Bootstrap调用Catalina的start方法
Catalina.start()方法(org.apache.catalina.startup.Catalina.start())

org.apache.catalina.core.StandardService.start() )         public void start() throws LifecycleException {                   if (container != null) {             synchronized (container) {                 if (container instanceof Lifecycle) {               //  standardEngine的启动                     ((Lifecycle) container).start();                 }             }        //两个connector的启动,8080和8009          synchronized (connectors) {              for (int i = 0; i < connectors.length; i++) {                  if (connectors[i] instanceof Lifecycle)                      ((Lifecycle) connectors[i]).start();                     }          }   } 

?
以上StandardService.start()方法主要实现了两个功能,standardEngine的启动和connector的启动,下面分别来介绍。

?

1 楼 xuhang1128 2011-03-20 学习了,看完您的文章自己再去看看能够更清晰点

读书人网 >软件架构设计

热点推荐