Tomcat源码学习

原创 2008年09月23日 04:20:00

前言·想法

写这个系列最初的想法是,用了那么多的开源产品了,总该回报一下社会。虽然水平有限不能做个开源项目出来,但研究一下开源产品、记录一些心得,或许将来对有能力做开源项目的人有点帮助。毕竟中国对开源世界的贡献实在太小,我写些中文版的tomcat源码资料,就算没人用得着,我也当一种耐心的锻炼吧。因为真的要把这个系列写完整,肯定是相当考验我的耐心和毅力。虽然未来有各种不可预期的变故让这个系列最终虎头蛇尾,然而禅语云:“看脚下”,我就先沿着这条路走下去再说。

哪里写得不妥或者错误之处,还请朋友们及时指正

动手

先八卦一下“tomcat”这个名字的由来,从tomcat的wiki页面可以找到一段“官方说明”:

How did Tomcat get its name?

He (James Duncan Davidson) came up with "Tomcat" since the animal represented something that could take care of itself and fend for itself. That's how he came up with the name.

看来是希望“tomcat”能够自谋生路,其实这也是开源项目最需要关注和解决的问题之一:如何实现良性发展

 

要研究tomcat源码,第一步自然是下载它的源代码,这个可以直接在tomcat官方网站获得源代码和二进制文件

然后,在eclipse中,新建一个普通的java项目,叫TomcatSource,或者将源码解压到TomcatSource的根目录下的src目录(或者你任意命名的目录),然后在项目的buildpath中设置源码的路径:在Source选项卡中“Add Folder”

2008-09-07_134829

导入后,会出现很多编译错误,一般都是相关的ant和junit的包找不到,一般这些包可以下载ant和junit,从里面的lib中拷贝出来,放入项目的libraries中即可;或者在网上搜搜相关的包名。其实这些错误不影响我们查看源代码,因为我们不打算编译源文件,只是太多的红线影响视觉效果

另一种方式,则是直接通过ant自动编译tomcat源代码,方法可以参考这个链接:

 http://blog.ccidnet.com/blog-htm-do-showone-uid-4092-type-blog-itemid-263093.html

参考资料

关于tomcat源码的研究,百度上也有几篇写得很不错的文章,对于了解tomcat的整体架构很有帮助,现收集如下:

tomcat的整体架构、运行机理

http://www.bitscn.com/java/tomcat/200605/23339.html

tomcat的请求处理流程

http://bbs.chinaunix.net/viewthread.php?tid=448117

http://www.chinaitpower.com/A/2002-04-11/19531.html

JMX在tomcat中的运用

http://blog.ccidnet.com/blog-htm-do-showone-uid-4092-type-blog-itemid-384094.html

 

正文·笔记目录

研究tomcat,我打算根据源码中的模块和包名进行分类和学习。为了便于整理和浏览,在这里做一个目录,以后有新文章上来后,会更新这个目录

由于tomcat的代码量对我等凡人来说实在不小,研究起来难免顾此失彼,研究模式也可以是深度优先或者广度优先或是跳跃式思维,加上个人心情和时间因素,因此很难在短时间内把一个模块或者包的全部内容、方方面面都研究透,但会不定期地补充,尽量将tomcat各个模块的核心组件展现出来。

总之,希望这份学习笔记可以日趋完善

  • 启动框架:

org.apache.catalina.startup:Bootstrap,Catalina,Server....

简要介绍Bootstrap、ClassloaderFactory和Catalina:http://blog.csdn.net/wangchengsi/archive/2008/09/20/2966850.aspx

  • 容器架构Container:

org.apache.catalina:Connector,Service,ContainerBase,Engine,Context,Wrapper,Pipeline....

  • 连接器Coyote框架:

org.apache.coyote & org.apache.coyote.http11 & org.apache.coyote.http11.filters:Request,Response,ActionHook,ProtocolHandler....

Coyoto简介:http://blog.csdn.net/wangchengsi/archive/2008/09/24/2973012.aspx

Coyoto的Http1.1实现:http://blog.csdn.net/wangchengsi/archive/2008/09/29/2995536.aspx

Coyoto中过滤器的设计:http://blog.csdn.net/wangchengsi/archive/2008/09/29/2995048.aspx

  • 网络连接组件:

最基本的socket连接池JIOEndpoint:http://blog.csdn.net/wangchengsi/archive/2008/10/02/3010036.aspx

 

  • 缓存:

org.apache.tomcat.util.buf

简单介绍tomcat的缓存:

http://blog.csdn.net/wangchengsi/archive/2009/02/18/3904586.aspx

附录:《How Tomcat Works》

这里是看了《How Tomcat Works》这本书后的一些笔记

  • 介绍《How Tomcat Works》

 http://blog.csdn.net/wangchengsi/archive/2009/03/03/3953054.aspx

  • 读书笔记(一),第一章和第二章,simple server and container

http://blog.csdn.net/wangchengsi/archive/2009/03/11/3981861.aspx

  • 读书笔记(二),第三章,simple Connector

http://blog.csdn.net/wangchengsi/archive/2009/03/12/3984058.aspx

 

  • 读书笔记(三),第四章,Tomcat's default Connector

http://blog.csdn.net/wangchengsi/archive/2009/03/22/4013821.aspx

 

  • 读书笔记(四),第五章,容器初探

http://blog.csdn.net/wangchengsi/archive/2009/03/31/4038274.aspx

  • 读书笔记(五),第六章,生命周期接口

http://blog.csdn.net/wangchengsi/archive/2009/04/15/4077794.aspx

相关文章推荐

Tomcat源码分析(一)------ 架构

废话少说,拉代码,导入eclipse开干,具体步骤可以参考http://hi.baidu.com/hateeyes/blog/item/7f44942a20ad8f9d023bf66d.html下面谈...

tomcat源码分析学习笔记(一)

今天的笔记是针对《How Tomcat Works

tomcat源码分析学习笔记(三)

——每天的寥寥几笔,坚持下去,将会是一份沉甸甸 的积累。

Tomcat学习之源码编译

1、利用TortoiseSVN从tomcat的SVN库中把它的主干代码check下来(SVN地址:http://svn.apache.org/repos/asf/tomcat/tc7.0.x/trun...

Tomcat6.0源码学习--启动框架

Tomcat6.0源码学习--启动框架   1.摘要 对于独立运行的应用程序来说,都有一个入口,以便启动应用程序。Java应用程序的入口是类的main方法,在这里你可以初始化应...

(精)tomcat 源码学习

Tomcat6是最新版本的web容器,其支持最新版本的servlet2.5和jsp2.1。而且Tomcat6架构也是经过重新设计优化过的,所以我们有必要分析一下它的架构过程。显然,这是一个通过阅读To...
  • it_man
  • it_man
  • 2014年08月05日 09:25
  • 2603

Tomcat源码学习

由于现在项目相对比较轻松,而且项目是研究SOA和Web Service的,因此这里我要对一些相关的开源技术做一些研究。接下来我要写的文章是Tomcat源码系列的文章,文章(一)是关于Tomcat源码编...

Tomcat6.0源码学习--架构概述

Tomcat6.0源码学习--架构概述   Tomcat6是最新版本的web容器,其支持最新版本的servlet2.5和jsp2.1。而且Tomcat6架构也是经过重新设计优化过的,所以我们有...

tomcat源码分析学习笔记(二)

——每天的寥寥几笔,坚持下去,将会是一份沉甸甸的

深入学习Tomcat----自己动手写服务器(附服务器源码)

相信大多Web开发者对Tomcat是非常熟悉的,众所周知Tomcat是一款非常好用的开源Servlet容器,您一定对这个最流行的Servlet容器充满好奇,虽然它并不像一个黑盒子那样让人无法触摸但是T...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Tomcat源码学习
举报原因:
原因补充:

(最多只允许输入30个字)