如何走进Tomcat源码的探究

Tomcat架构庞大而灵活,如果要研究源码,开头没有一个好的方法总会感觉越搞越乱,本文就笔者阅读tomcat源码的一些经验分享给大家。

根据经验,要想全局把握源码,第一步总是应该找到main方法(有的容器没有给出main方法,很有可能启动方式是在静态初始化块里)。如下图startup.sh文件中会启动org.apache.catalina.startup.Bootstrap的main方法,main方法参数为start

如何走进Tomcat源码的探究如何走进Tomcat源码的探究

在org.apache.catalina.startup.Bootstrap的main方法中加载Catalina的loard方法

如何走进Tomcat源码的探究

其中daemon就是Catalina的实例,Catalina会在loard方法中根据server.xml中的配置生成所t需要的对象如Server、Service、Connector等,这里使用了一款能够将xml转换为Java对象的事件驱动工具Digester。在loard方法中我们看到,首先生成Digester驱动工具,再将server.xml文件的配置转换为对象树

如何走进Tomcat源码的探究

下面我们再看看创建Digester的过程,也就是上图中的createStartDigester方法

如何走进Tomcat源码的探究

我们看到Digester加载了tomcat架构所需要的所有类信息,接下来就是具体组件的启动问题了