Tomcat源码学习

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/wangchengsi/article/details/2966847

前言·想法

写这个系列最初的想法是,用了那么多的开源产品了,总该回报一下社会。虽然水平有限不能做个开源项目出来,但研究一下开源产品、记录一些心得,或许将来对有能力做开源项目的人有点帮助。毕竟中国对开源世界的贡献实在太小,我写些中文版的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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Tomcat码解析是对Tomcat服务器的代码进行分析和解读的过程。通过对Tomcat码的研究,可以深入了解Tomcat的整体架构、连接器的内部结构、容器分析以及Tomcat的启动流程等方面的内容。 Tomcat的整体架构包括配置文件server.xml的分析和连接器的内部结构。配置文件server.xml是Tomcat的主要配置文件,通过对其进行分析可以了解Tomcat的各个组件和配置项的作用。连接器是Tomcat的核心组件之一,负责处理客户端请求并将其转发给相应的容器进行处理。 Tomcat的启动流程是通过实现Lifecycle接口的各个组件来完成的。在启动过程中,Tomcat会按照一定的顺序初始化和启动各个组件,确保它们能够正常工作。具体的启动流程可以通过阅读码中的相关方法和注释来了解。 Tomcat底层使用了Netty来实现IO相关的操作,但与Netty有所区别,因为Tomcat对部分处理进行了封装。通过对Tomcat码的学习,可以了解Tomcat底层的实现逻辑、各个组件的配合方式以及各种设计模式的交互。 如果你对Tomcat码解析感兴趣,可以参考提供的码和相关文章进行深入研究。通过深入研究Tomcat码,你可以更好地理解Tomcat的工作原理和内部机制。 #### 引用[.reference_title] - *1* [Tomcat码分析](https://blog.csdn.net/sun_code/article/details/123554480)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [tomcat线程模型-码解析](https://blog.csdn.net/qq_16498553/article/details/126080174)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值