从学习使用到现在接触tomcat的时间也有5、6个年头了。最初使用的时候就觉得使用简单,心中默默想搞清其中原理,结果一拖就拖了好几年,最终还是在2016年实现了诺言。
我本意本是记录下学习过程,记录下其原理,最多3、4篇文章就好了,但是接触下来才发现其复杂精巧的程度真的令人很痴迷。从最初的编译源码到清楚知道tomcat处理请求的流程,整个看源码的过程其实只有两个月左右,但是当我想提笔记录下整个原理过程的时候我才觉得需要写的介绍的实在太多了。于是我就慢慢从头写,介绍基础的概念流程,一如我一开始学习一样,最终用了一年多拖拖拉拉才写完。(其实是懒的)
最终写完整个系列才发现居然都写了20多篇了,这个还是在我略过了很多的说明的情况下,这20来篇文章的书写也让我感悟颇多。最大的感想就是理论重要但是实践更重要,当你认为你理解了一个原理的时候,如果你不去实践,其实是不会有更深入的体会的。就像读源码,你光看代码按照逻辑来一步步查看源码远远没有你debug一次来的印象深刻,所以建议看源码的朋友还是多debug的看。再其次的感悟就是精巧的架构的设计对扩展性的提升是极大的,所以我们平时写代码应该多思考而不是闷头写,更多的感悟就不一一列举了。我也希望如果有的读者对tomcat很有兴趣的话,那么从我第一篇相关文章读起相信一定有所收获。
顺便在这里我需要解释下为什么有的文章会分一二三或者更多篇来写,首先我没有多骗篇幅的意思,其次个人觉得一篇文章如果很长的话很容易让人抓不住重点,所以我一般一个重点分一篇文章,如果说两个重点有很重要的依赖关系必须要在一起说明的话,那么就会写在一起,但是这样也很容易造成篇幅过长。也许会有人问我为什么不把代码折叠下,这样篇幅会显得很短小,我没有折叠代码的原因在于我用的markdown编辑器对折叠的代码不支持,在这里对感觉篇幅大段大段的代码的读者深表歉意。
阅读说明
我刚上手的时候搜索的是网上的文章以及官网资料,其中How tomcat works
这本书在初期给了我很大的帮助,这本书有中文译文版,不过还是推荐看英文原版,而且这本书讲述的是tomcat 4.0,5.0的版本与现在版本相去甚远,所以还是建议大家仅做参考,实际内容还是以具体的代码为准。
题外话:
首先了解某个原理的时候,可以横向多搜索几篇文章看,多对比看就能发现哪些是重点。其次tomcat源码中的方法的命名一般都很清晰,看到一个方法大概就知道这个方法的作用,还有就是如果实在搞不懂,那么debug几次跟着断点走走,基本就能理解代码的含义了。希望大家阅读顺利,有问题多沟通。
最后tomcat系列主要的文章基本就结束了,最后有空的时候会补充一些额外的,例如设计模式,和别的对比的文章。