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下面谈...
  • cutesource
  • cutesource
  • 2009年12月14日 19:51
  • 84978

Tomcat7.0源码分析——请求原理分析(中)

在《TOMCAT7.0源码分析——请求原理分析(上)》一文中已经介绍了关于Tomcat7.0处理请求前作的初始化和准备工作,请读者在阅读本文前确保掌握《TOMCAT7.0源码分析——请求原理分析(上)...
  • beliefer
  • beliefer
  • 2016年07月07日 13:33
  • 15202

Tomcat服务器学习和使用(一)

一、Tomcat服务器端口的配置   Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件。   如果想修改Tomcat服务器的启动端口,则可以在serv...
  • tomcat_2014
  • tomcat_2014
  • 2015年08月04日 09:59
  • 7237

如何使用tomcat--学习笔记

  • 2010年08月16日 00:49
  • 120KB
  • 下载

Tomcat学习

http://xtony.blog.51cto.com/3964396/988706 Tomcat一点一滴之(一)基本搭建 目前主流的web服务器及各自服务的对象: ...
  • xysoul
  • xysoul
  • 2015年12月17日 10:44
  • 1240

(精)tomcat 源码学习

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

tomcat6源码分析一(核心模块分析)

本文以tomcat6源码为基础,主要分享内容如下:
  • yfkscu
  • yfkscu
  • 2014年07月26日 12:20
  • 784

Tomcat8源码分析(一)

Tomcat源码分析(一)         ————导读这篇文章介绍一下tomcat源码阅读环境的搭建。源码下载源码的下载地址在 这里,版本为8.0.28,下载后直接解压至某一文件下即可。依赖的工具 ...
  • u013291394
  • u013291394
  • 2015年12月02日 22:26
  • 2758

tomcat源码下载并导入eclipse

本文主要参考这篇博客 http://jackycheng2007.iteye.com/blog/1477845,但是整个过程遇到了另外的问题,特记录如下 1. 获取源代码    方式一:从官网htt...
  • cuidiwhere
  • cuidiwhere
  • 2013年10月07日 00:21
  • 25252

运行tomcat源码

今天在myeclipse6.5中把tomcat7.0.47源码跑了起来,其中出现过几个小错误,在这里记录一下,供想研究tomcat的codeer们。 1. 下载tomcat7.0.45 当...
  • huaweitman
  • huaweitman
  • 2015年04月14日 12:32
  • 1949
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Tomcat源码学习
举报原因:
原因补充:

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