新書推薦:
《
知宋·宋代之货币
》
售價:NT$
340.0
《
爱的7种对话:建立持续一生的亲密关系 (加)苏·约翰逊
》
售價:NT$
345.0
《
中国近现代武术思想史研究
》
售價:NT$
500.0
《
废奴
》
售價:NT$
350.0
《
有法与无法:清代的州县制度及其运作 最新修订版
》
售價:NT$
640.0
《
重启春光
》
售價:NT$
214.0
《
“玉”见中国:玉器文化与中华文明(追寻玉出山河的前世今生,饱览中国万年玉文化的史诗画卷)
》
售價:NT$
690.0
《
官治与自治:20 世纪上半期的中国县制 最新修订版
》
售價:NT$
640.0
|
編輯推薦: |
《Tomcat源码全解与架构思维》对于使用的设计模式进行详细讲解,对于源码中的重点和难点也进行了详细注释,并在每一个内容前面写上了流程和总结,读者可以根据流程来阅读源码理解记忆。
|
內容簡介: |
《Tomcat源码全解与架构思维》对Tomcat的核心骨架源码和架构思想进行统一的描述,帮助读者通过该书直接将所有难点、重点的代码掌握。第一、二章主要帮助读者开启“上帝视角”,了解掌握Tomcat的整体设计有助于在阅读源码时不会不知所措。第三、四章主要介绍了Tomcat组件生命周期、容器生命周期原理,第五章介绍了启动器原理,第六章介绍了类加载器层级设计与JDK类加载器原理。读者可以从前面这六章,找到Tomcat的源码入口,总体生命周期的设计,这样读者就可以从第一、二章的“上帝视角”,也即组件树开始,从根节点Server开始向下紧贴着生命周期来完成对Tomcat架构的理解和学习。后面的章节设计,均是按照树形结构图的描述来进行介绍,读者也可以根据这样的方式来学习。分别是Server、Service、Connector、Engine、Host、Context、Wrapper。
|
關於作者: |
黄俊
专注于研究Java语言
专注于研究Hotspot
专注于研究Linux内核
专注于研究C语言与汇编
专注于研究架构设计
专注于研究多线程并发处理
专注于研究高效学习方式
曾就职于美团、阿里
前新东方业务架构师
|
目錄:
|
为什么要写这本书
本书读者对象
背景知识
如何阅读本书
勘误和支持
致谢
第1章 Tomcat架构原理
1.1 Tomcat 到底是什么
1.2 Tomcat 架构概览
1.3 Tomcat 配置文件
1.4 Tomcat 源码结构
1.5 小结
第2章 Tomcat架构设计思维
2.1 自顶向下分析Tomcat架构
2.2 自底向上分析Tomcat架构
2.3 面向对象设计Tomcat架构
2.4小结
第3章 Tomcat生命周期原理
3.1 生命周期管理接口Lifecycle原理
3.2 生命周期状态接口Lifecycle原理
3.3 生命周期函数与组件状态转换原理
3.4 生命周期监听器与事件类原理
3.4.1 生命周期事件
3.4.2 生命周期监听器
3.5 生命周期模板类实现原理
3.6 生命周期实例
3.7 Tomcat生命周期与JMX原理
3.8 核心监听器原理
3.9 小结
第4章 Tomcat容器原理
4.1容器接口定义
4.2容器生命周期事件与监听器原理
4.3容器模板类实现原理
4.3.1实例变量实现原理
4.3.2属性操作方法实现原理
4.3.3容器操作方法实现原理
4.3.4后台周期执行操作方法实现原理
4.3.5 JMX注册支持方法实现原理
4.4小结
第5章 Tomcat启动器原理
5.1独立启动器原理
5.1.1 文件原理
5.1.2 Bootstrap启动类描述
5.1.3 Catalina核心类描述
5.1.4 SystemLogHandler类原理
5.2内嵌启动器原理
5.2.1 AbstractApplicationContext 类refresh方法
5.2.2 ServletWebServerApplicationContext 类onRefresh方法
5.2.3 ServletWebServerApplicationContext 类createWebServer方法
5.2.4 TomcatServletWebServerFactory 类getWebServer方法
5.2.5 Tomcat 类核心变量与构造器
5.2.6 Tomcat 类方法
5.3小结
第6章 Tomcat类加载器原理
6.1 Java类加载器原理
6.1.1 Java类加载器层级结构
6.1.2 Java双亲委派机制原理
6.1.3 Java ClassLoader类原理
6.1.4 Java URLClassLoader类原理
6.1.5 Java 双亲委派机制的打破
6.1.6 Java 自定义类加载器
6.2 Tomcat 类加载器层级结构与定义
6.3 Tomcat 顶层类加载器源码分析
6.4 Tomcat 应用层类加载器源码分析
6.5 小结
第7章 Tomcat Server服务器原理
7.1 Tomcat Server 接口定义
7.2 Tomcat Server 接口实现
7.2.1 StandardServer 属性和构造器定义
7.2.2 StandardServer 核心方法
7.2.3 StandardServer 生命周期方法
7.3 小结
第8章 Tomcat Service服务原理
8.1 Tomcat Service 接口定义
8.2 Tomcat Service 接口实现
8.2.1 核心属性和构造器原理
8.2.2 核心方法
8.2.3 生命周期方法
8.3 MapperListener原理
8.4 Mapper原理
8.4.1 核心变量与构造器原理
8.4.2 核心内部类原理
8.4.3 Mapper核心方法
8.5 小结
第9章 Tomcat Connector连接器原理
9.1 Connector 核心属性与构造器
9.2 Connector ProtocolHandler 协议初始化原理
9.3 Connector 生命周期方法
9.3.1 initInternal原理
9.3.2 startInternal原理
9.3.3 stopInternal原理
9.3.4 destroyInternal原理
9.4 小结
第10章 Tomcat ProtocolHandler协议处理器原理
10.1 ProtocolHandler 接口定义
10.2 AbstractProtocol原理
10.2.1 构造函数和核心变量
10.2.2 生命周期函数
10.2.3 核心支撑内部类
10.3 AbstractHttp11Protocol原理
10.3.1 构造函数和核心变量
10.3.2 套接字处理器创建原理
10.4 AbstractHttp11JsseProtocol原理
10.5 Http11NioProtocol原理
10.6 小结
第11章 Tomcat Endpoint端点类原理
11.1 AbstractEndpoint 类核心原理
11.1.1 核心变量
11.1.2 核心方法
11.1.3 startAcceptorThreads接收连接线程启动原理
11.1.4 生命周期函数
11.1.5 核心内部类
11.2 NioEndPoint 类核心原理
11.2.1核心变量原理
11.2.2 bind方法端口绑定原理
11.2.3 unbind方法端口解绑原理
11.2.4 startInternal方法端点启动执行过程
11.2.5 stopInternal方法端点停止执行过程
11.2.6 setSocketOptions方法客户端套接字执行过程
11.2.7 核心内部类
11.3 Nio2EndPoint 类核心原理
11.3.1 核心变量和构造器原理
11.3.2 bind方法端口绑定原理
11.3.3 Nio2EndPoint 类核心方法之unbind端口解绑原理
11.3.4 startInternal方法端点启动原理
11.3.5 stoptInternal方法端点停止原理
11.3.6 setSocketOptions方法客户端套接字执行过程
11.3.7 核心内部类之Acceptor类原理
11.3.8 核心内部类之Nio2SocketWrapper类原理
11.3.9 核心内部类之SocketProcessor类原理
11.3.10 核心内部类之SendfileData类原理
11.4小结
第12章 Tomcat Processor协议处理原理
12.1 Processor接口定义
12.2 AbstractProcessorLight 协议模板类实现原理
12.3 AsyncStateMachine 协议处理状态机实现原理
12.4 AbstractProcessor 协议模板类实现原理
12.5 Http11Processor 协议类实现原理
12.6 Request请求类原理
12.7 Response响应类原理
12.8 InputBuffer输入缓冲区原理
12.9 OutputBuffer输出缓冲区原理
12.10 Tomcat Adaptor适配器原理
12.11 Tomcat HttpServletRequest与HttpServletResponse实现类原理
12.12小结
第13章 Tomcat Pipeline流水线原理
13.1 Pipeline 接口原理
13.2 StandardPipeline 实现类原理
13.3 Valve接口原理
13.4 ValveBase抽象类原理
13.5 StandardEngineValve 原理
13.6 StandardHostValve 原理
13.7 StandardContextValve原理
13.8 StandardWrapperValve 原理
13.9 ApplicationFilterChain原理
13.10 小结
第14章 Tomcat Engine原理
14.1 Tomcat Engine 接口定义
14.2 StandardEngine 核心变量属性与构造器原理
14.3 StandardEngine 核心方法之Realm操作原理
14.4 StandardEngine 核心方法之Host操作原理
14.5 StandardEngine 核心方法之日志操作原理
14.6 StandardEngine 生命周期方法之initInternal实现原理
14.7 StandardEngine 生命周期方法之startInternal实现原理
14.8 EngineConfig 配置类原理
14.9小结
第15章 Tomcat Host原理
15.1 Tomcat Host 接口定义
15.2 StandardHost 核心变量属性与构造器原理
15.3 StandardHost 核心方法之AppBase与ConfigBase操作原理
15.4 StandardHost 核心方法之alias别名操作原理
15.5 StandardHost 容器生命周期方法之addChild实现原理
15.6 StandardHost 生命周期方法之ContextMemoryLeaks实现原理
15.7 StandardHost 组件生命周期方法之startInternal实现原理
15.8 HostConfig 配置类原理
15.8.1 核心变量与构造器
15.8.2 lifecycleEvent方法
15.8.3 beforeStart方法
15.8.4 start方法
15.8.5 deployApps方法
15.8.6 deployDescriptors方法
15.8.7 deployDescriptor方法
15.8.8 DeployedApplication内部类
15.8.9 addWatchedResources方法
15.8.10 addGlobalRedeployResources方法
15.8.11 deployWARs方法
15.8.12 deployDirectories方法
15.8.13 stop方法
15.8.14 check方法
15.8.15 checkResources方法
15.8.16 reload方法
15.8.17 checkUndeploy方法
15.8.18 undeploy方法
15.9总结
第16章 Tomcat Context原理
16.1 Tomcat Context 接口实现
16.2 StandardContext 核心变量属性与构造器原理
16.3 StandardContext 生命周期方法
16.3.1 initInternal实现原理
16.3.2 startInternal实现原理
16.3.3 stopInternal实现原理
16.3.4 destroyInternal实现原理
16.4 StandardContext 核心方法
16.4.1postWorkDirectory原理
16.5 WebResourceRoot 根资源原理
16.5.1 生命周期方法
16.5.2 核心方法
16.6 WebResourceSet 资源集原理
16.7 WebResource 资源原理
16.7.1 AbstractResource类
16.7.2 JarResourceRoot类
16.7.3 AbstractArchiveResource类
16.7.4 AbstractSingleArchiveResource类
16.7.5 WarResource类
16.7.6 JarResource
16.7.7 JarWarResource
16.7.8 FileResource
16.7.9 CachedResource
16.7.10 EmptyResource
16.7.11 VirtualResource
16.8 WebappLoader 加载器原理
16.9 WebappClassLoaderBase 类加载器原理
16.10 WebappClassLoaderBase 类核心方法
16.10.1 构造器原理
16.10.2 start启动原理
16.10.3 stop停止原理
16.10.4 clearReferences原理
16.10.5 cclearReferencesJdbc原理
16.10.6 cclearReferencesThreads原理
16.10.7 ccheckThreadLocalsForLeaks原理
16.10.8 loadClass原理
16.10.9 findClass原理
16.10.10 getResource原理
16.10.11 modified原理
16.11 Manager Session管理器原理
16.11.1 Manager接口
16.11.2 ManagerBase抽象类
16.11.3 ClusterManager接口
16.11.4 ClusterManagerBase抽象类
16.11.5 BackupManager与DeltaManager实现类
16.11.6 PersistentManagerBase抽象类
16.11.7 PersistentManager实现类
16.11.8 StandardManager实现类
16.12 Session 会话原理
16.12.1 StandardSession类
16.12.2 DeltaSession类
16.12.3 DummyProxySession类
16.13 InstanceManager 实例管理器原理
16.13.1 SimpleInstanceManager类
16.13.2 DefaultInstanceManager类
16.14 ApplicationContext 应用上下文原理
16.14.1 核心变量定义和构造器
16.14.2 getRequestDispatcher方法原理
16.14.3 getContext方法原理
16.15 StandardContext 核心方法
16.15.1 backgroundProcess周期方法原理
16.15.2 reload方法原理
16.15.3 ApplicationListener操作方法原理
16.15.4 ServletMapping操作方法原理
16.15.5 Filter操作方法原理
16.15.6 loadOnStartup操作方法原理
16.16 ContextConifg原理
16.16.1 构造器与核心变量
16.16.2 lifecycleEvent方法原理
16.16.3 init方法原理
16.16.4 beforeStart方法原理
16.16.5 configureStart方法原理
16.16.6 configureStop方法原理
16.16.7 destroy方法原理
16.17小结
第17章 Tomcat Wrapper原理
17.1 StandardWrapper 核心变量属性与构造器原理
17.2 StandardWrapper 生命周期方法
17.2.1 startInternal实现原理
17.2.2 stopInternal实现原理
17.3 StandardWrapper 核心方法
17.3.1 load方法实现原理
17.3.2 unload方法实现原理
17.3.3 initServlet方法实现原理
17.3.4 allocate方法实现原理
17.3.5 loadServlet方法实现原理
17.3.6 deallocate方法实现原理
17.3.7 backgroundProcess方法实现原理
17.4小结
|
內容試閱:
|
为什么要写这本书
Tomcat是目前市面上使用率较高的Web服务器中间件,同时也是历史较为悠远的,实现了Servlet规范的容器。它的架构设计非常明确,且源码较为易懂,其中不像Netty那样,需要兼容不同的Web应用和编码器,只需要面向Http/Https/Ajp协议来编程即可,底层IO仅仅只是简单的包装了NIO而已,上层处理主要还是对Http协议处理,所以流程较为简单。同时,在调研市场后发现,需要一本Tomcat的书将Tomcat的核心骨架源码和架构思想进行统一的描述,帮助读者通过该书直接将所有难点、重点的代码掌握,剥离其他诸如:JNDI、Http协议处理等等与Tomcat架构设计和核心脉络不相关的内容,毕竟学习架构设计与思想,关这些什么事呢同时,在微服务、云原生时代,又有几个人会使用JNDI呢?在SpringBoot内嵌Tomcat中默认就是关闭了JNDI功能。
本书读者对象
本书适合以下读者阅读:
需要求职进入互联网公司的读者。
希望研究Tomcat底层知识的读者。
在工作中遇见瓶颈希望通过学习Tomcat提升底层知识的读者。
从事开发高并发支撑中间件的读者。
从事互联网高并发业务支撑的读者。
对多线程编程感兴趣的读者。
希望通过Tomcat源码找到调优点的读者。
背景知识
本书并没有介绍Java语言层面的一些基础知识,比如变量、面向对象、泛型等等JavaSE的基础,所以阅读本书需要读者对于JavaSE理解掌握,而由于本书致力于研究Tomcat架构和源码层面的知识,自然必不可少的接触到NIO、线程模型、网络编程的知识,但是读者只要拥有Java语言的基础,相信阅读本书并不难。
本书对于使用的设计模式进行详细讲解,对于源码中的重点和难点也进行了详细注释,并在每一个内容前面写上了流程和总结,读者可以根据流程来阅读源码理解记忆。
如何阅读本书
本书抽丝剥茧,去掉了JNDI、JSP引擎、分布式集群、Http协议处理细节,这几部分的源码描述,因为这几部分代码与Tomcat架构实在没多大关系,同时在当下内嵌微服务、云原生,都希望把Web项目变得足够简单,同时前后端分离已是趋势,Tomcat独立部署 Redis集群集中管理状态,Tomcat集群也早已淘汰。所以再花大量篇幅介绍这些不相关的内容,笔者认为只不过是增加篇幅,浪费读者的时间罢了。
本书的第一、二章主要帮助读者开启“上帝视角”,了解掌握Tomcat的整体设计有助于在阅读源码时不会不知所措。第三、四章主要介绍了Tomcat组件生命周期、容器生命周期原理,第五章介绍了启动器原理,第六章介绍了类加载器层级设计与JDK类加载器原理。读者可以从前面这六章,找到Tomcat的源码入口,总体生命周期的设计,这样读者就可以从第一、二章的“上帝视角”,也即组件树开始,从根节点Server开始向下紧贴着生命周期来完成对Tomcat架构的理解和学习。后面的章节设计,均是按照树形结构图的描述来进行介绍,读者也可以根据这样的方式来学习。分别是Server、Service、Connector、Engine、Host、Context、Wrapper。
勘误和支持
由于笔者水平有限,加之编写的时间也很仓促,书中难免会存在一些不准确的地方,愿请读者批
评指正。读者可以扫描下方二维码,获取更多资源并加入读者群。读者可以将对本书的意见发布在群
中,同时,如果遇见任何问题,也可以在群中进行提问,笔者将尽量在线上为读者提供最满意的解答。
书中的全部源文件均发布在这个群中,笔者也会将更多的更新及时发布于其中。
|
|