首页 > 图书中心 > Tomcat源码全解与架构思维

前言

前  言

为什么要写这本书

Tomcat是目前市面上使用率较高的Web服务器中间件,同时也是历史较为悠远的,实现了Servlet规范的容器。它的架构设计非常明确,且源码较为易懂,其中不像Netty那样,需要兼容不同的Web应用和编码器,只需要面向Http/Https/Ajp协议来编程即可,底层IO仅仅只是简单的包装了NIO而已,上层处理主要还是对Http协议处理,所以流程较为简单。同时,在调研市场后发现,需要一本Tomcat的书将Tomcat的核心骨架源码和架构思想进行统一的描述,帮助读者通过该书直接将所有难点、重点的代码掌握,剥离其他诸如:JNDI、Http协议处理等等与Tomcat架构设计和核心脉络不相关的内容,毕竟学习架构设计与思想,关这些什么事呢 同时,在微服务、云原生时代,又有几个人会使用JNDI呢?在Spring Boot内嵌Tomcat中默认就是关闭了JNDI功能。

本书读者对象

本书适合以下读者阅读:

 需要求职进入互联网公司的读者。

 希望研究Tomcat底层知识的读者。

 在工作中遇见瓶颈希望通过学习Tomcat提升底层知识的读者。

 从事开发高并发支撑中间件的读者。

 从事互联网高并发业务支撑的读者。

 对多线程编程感兴趣的读者。

 希望通过Tomcat源码找到调优点的读者。

背景知识

本书并没有介绍Java语言层面的一些基础知识,比如变量、面向对象、泛型等等Java SE的基础,所以阅读本书需要读者对于Java SE理解掌握,而由于本书致力于研究Tomcat架构和源码层面的知识,自然必不可少的接触到NIO、线程模型、网络编程的知识,但是读者只要拥有Java语言的基础,相信阅读本书并不难。

本书对于使用的设计模式进行详细讲解,对于源码中的重点和难点也进行了详细注释,并在每一个内容前面写上了流程和总结,读者可以根据流程来阅读源码理解记忆。

如何阅读本书

本书抽丝剥茧,去掉了JNDI、JSP引擎、分布式集群、Http协议处理细节,这几部分的源码描述,因为这几部分代码与Tomcat架构实在没多大关系,同时在当下内嵌微服务、云原生,都希望把Web项目变得足够简单,同时前后端分离已是趋势,Tomcat独立部署+Redis集群集中管理状态,Tomcat集群也早已淘汰。所以再花大量篇幅介绍这些不相关的内容,笔者认为只不过是增加篇幅,浪费读者的时间罢了。

本书的第一、二章主要帮助读者开启“上帝视角”,了解掌握Tomcat的整体设计有助于在阅读源码时不会不知所措。第三、四章主要介绍了Tomcat组件生命周期、容器生命周期原理,第五章介绍了启动器原理,第六章介绍了类加载器层级设计与JDK类加载器原理。读者可以从前面这六章,找到Tomcat的源码入口,总体生命周期的设计,这样读者就可以从第一、二章的“上帝视角”,也即组件树开始,从根节点Server开始向下紧贴着生命周期来完成对Tomcat架构的理解和学习。后面的章节设计,均是按照树形结构图的描述来进行介绍,读者也可以根据这样的方式来学习。分别是Server、Service、Connector、Engine、Host、Context、Wrapper。

勘误和支持

由于笔者水平有限,加之编写的时间也很仓促,书中难免会存在一些不准确的地方,愿请读者批

评指正。读者可以扫描下方二维码,获取更多资源并加入读者群。读者可以将对本书的意见发布在群

中,同时,如果遇见任何问题,也可以在群中进行提问,笔者将尽量在线上为读者提供最满意的解答。

书中的全部源文件均发布在这个群中,笔者也会将更多的更新及时发布于其中。

版权所有(C)2023 清华大学出版社有限公司 京ICP备10035462号 京公网安备11010802042911号

联系我们 | 网站地图 | 法律声明 | 友情链接 | 盗版举报 | 人才招聘