Tomcat的启动详解

本来,受Oracle面试官的指导。从年前就开始阅读Tomcat的源代码了,在这边就准备把自己的阅读心得拿出来共享下。 作为这个系列的第一篇文章,我们先从如何在Eclipse中运行开始。这一点上, 我是借鉴了I’m Tiger这篇文章。所以在这边,如果希望跳过这一步骤,可以参考他的和我的已经编译好的Tomcat版本。 地址是:I’m Tiger’s Tomcat或者是使用我组织好的Tomcat, Mike’s Tomcat 下载好之后,只需按照一般的Maven项目导入Eclipse就可以了。过程比较简单。 然后可以进入文章的正题了,就是Tomcat的启动过程。 首先,在Eclipse中导入工程之后会看到这样的画面: 这里面,我们可以看到两个目录,一个是tomcat-study,一个是Tomcat7.0,但是我们这边主要是阅读后者的源代码, 上一个项目其实是Tomcat7.0的上级目录,没有什么太大的意义。 然后,我们进入org.apache.catalina.startup.BootStrap类,因为这边有我们亲爱的Main函数。 在这边,我们看到的代码是Tomcat的配置代码,简单的说,就是在Tomcat启动之前去加载那些必须的类库。 在这边加一个断点,然后一步一步走下去。进入init()方法。 这边就是BootStrap函数的init().可以看到,首先就是设置CatalinaHome,CatalinaBase,这两个函数主要的 作用,就是将Catalina的路径找到,方便之后的ClassLoader进行加载。 然后进入的就是initClassLoaders(),这边不得不提一下,Java中的双亲委托模型。…