读Tomcat源码可以从中学习到什么?

https://www.zhihu.com/question/21054519
作者:hongjiang
链接:https://www.zhihu.com/question/21054519/answer/31410339
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

同意上面的答案。要看你带着什么样的目的去看tomcat源码。
作为一个发展有十多年的,广为使用的成熟的应用容器,tomcat还是有很多值得学习的。
我随便抛出一些技术点,看看这些问题你是否思考过?
1)如何让一个java程序成为一个类似于daemon这样的进程,在当前终端关闭后不退出,不同平台靠什么来解决这个问题?
2)如何处理系统信号?
3)如何做监控?是否使用jmx?
4)应用是怎么部署的?servlet3有什么不同?
5)多个应用之间是怎么相互隔离的?tomcat的classloader机制是怎样的?
6)servlet3和servlet3.1 新增的异步和非阻塞特性有什么用?
7)怎么预防应用可能导致的内存泄露?
8)关闭服务的时候,应该先暂停/关闭什么,后关闭什么?
9)tomcat的扩展机制是通过什么方式提供给开发者的?
10)BIO/NIO/APR 三种connector实现上的优劣是什么?
11)jsp文件是怎么编译和执行的?
12)HTTP协议本身就够喝一壶,tomcat7/8里支持的websocket/spdy等新特性本身就挺复杂的

tomcat有四五十万行代码,你没有目的的去看会比较耗费精力,最好先了解大致结构,和运行流程,结合自己想要在某个点的实际需求去深入了解。
59 ​2 条评论
​分享
​收藏 ​感谢
7 人赞同了该回答

1、了解tomcat是如何实现的http协议的。
2、tomcat是如何实现j2ee的众多规范,如jndi, servlet, jsp等规范。

比较重要的还是servlet规范,读之前需要http协议的一些知识。

还可以根据你个人的目标而定,如想要了解tomcat的实现机制,看一下web容器是如何构成的,web应用的类加载器是如何实现的。或者你想了解一下代码风格,也可能是代码的组织形式,这是从目标而言的。

只要去想,总是有各方面的可以获取的东东
7 ​添加评论
​分享
​收藏 ​感谢
4 人赞同了该回答

之前在微信里写过两篇:
怎样阅读源代码?
读源码时,我们到底在读什么?

实际上,做为一个成功且用户众多的开源项目,读源码可以学习到很多东西,学架构,学设计。学配置与监控等等。
比如了解多线程应用怎么写,看看容器的子容器加载就明白不少。想了解classLoader,双亲委托,看看WebappClassloader,看看应用是如果加载类的就会豁然开朗。想学责任链设计模式,看看Filter是怎么解析执行的就掌握了。点有很多,重点在于你希望学到什么,带着你的目的学看,才会关注到你关注的东西。
4 ​1 条评论
​分享
​收藏 ​感谢

几年前花过一点时间在开源码上,现在感觉很后悔。

Tomcat作为一个维护多年的项目,很多代码在Java的早期就已经写好,design pattern和对java的运用都有比较重的历史包袱。单纯出于学习的目的比较事倍功半。

如果只是想了解一下web server container是怎么实现的可以看看netty
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值