编辑推荐
Tomcat作为一款免费的开源应用服务器,凭借技术先进、性能稳定、体积小巧、扩展性好,深受开发人员和软件开发商的认可。作者在本书中详细剖析了Tomcat的架构、内部运行机制以及相关的支撑技术。
本书不是鼓励读者去重复发明轮子,而是希望读者能够研究开源软件的架构,学习其优秀的设计理念,知道这些产品的过人之处,从而提升自己的编程素养。
本书特色:
基于当前应用广泛稳定的Tomcat 7版本;
深入剖析Tomcat的每一个设计要点,使读者知其然,更知其所以然;
拒绝没营养的直接贴代码分析,而是升华到对Tomcat设计思想的剖析;
通篇采用大量插图来辅助文字解释,降低读者的理解门槛;
层次分明,脉络清晰,由浅入深,循序渐进,确保知识讲解的连贯性和普适性。
通过本书能快速建立起Tomcat内核模型,对生产故障处理有很大的帮助;
本书深入Tomcat分析,融会贯通,进而深入掌握Web服务器技术;
学习Tomcat内部精彩的设计模式,无形之中提高读者Java编程水平。
内容简介
Tomcat是一款免费的开源应用服务器,因其性能稳定、体积小巧、扩展性好等特点而被传统和互联网行业广泛应用。
本书是深入剖析Tomcat Web服务器运行机制的图书,共分为22章。本书从Web服务器相关的基础知识及原理开始逐渐深入Tomcat内部设计,比如涵盖了HTTP协议、Socket通信及服务器模型等必备的基础知识。另外还包括Servlet规范,这些都是深入Tomcat必不可少的知识。然后介绍了Tomcat的启动与关闭过程,接着从整体预览Tomcat的内部结构,让读者对Tomcat内部有个整体的了解。最后开始层层剖析Tomcat内部结构,包括:Server组件、Service组件、内存泄漏检测、Connector组件(HTTP协议、AJP协议、BIO模式、NIO模式和APR模式)、Engine容器、Host容器、Context容器、Wrapper容器(Servlet种类机制、Comet模式、WebSocket协议、异步Servlet)、生命周期管理、日志框架及其国际化(日志系统、日志国际化及访问日志)、公共与隔离的加载器(多个Web应用如何做到资源隔离)、Mapper组件(局部路由、全局路由)、Tomcat集成JNDI、JSP编译器(JSP语法解析、JSP编译成Servlet、Servlet编译成Class)、运行及通信的安全管理、处理请求和响应的管道(管道机制)、多样化的会话管理器(标准会话管理器、持久化会话管理器、集群增量会话管理器及集群备份管理器)、高可用的Tomcat集群的实现(从单机到集群)、Tomcat集群通信框架、Tomcat内部监控与管理。
作者简介
汪建,毕业于广东工业大学光信息科学与技术专业,毕业后从事航空系统、电信系统、中间件、基础架构、智能客服等研发工作,目前主要关注分布式、高并发、大数据、搜索引擎、机器学习等方面技术。崇尚开源,崇尚技术自由,更崇尚思想自由。
目录
第1章 Web服务器机制 1
1.1 通信协议 1
1.1.1 HTTP/HTTPS 1
1.1.2 HTTP请求/响应模型 3
1.1.3 解析HTTP报文 4
1.2 套接字通信 7
1.2.1 单播通信 8
1.2.2 组播通信 9
1.2.3 广播通信 12
1.3 服务器模型 13
1.3.1 单线程阻塞I/O模型 14
1.3.2 多线程阻塞I/O模型 15
1.3.3 单线程非阻塞I/O模型 16
1.3.4 多线程非阻塞I/O模型 19
第2章 Servlet规范 22
2.1 Servlet接口 22
2.2 ServletRequest接口 23
2.3 ServletContext接口 23
2.4 ServletResponse接口 24
2.5 Filter接口 24
2.6 会话 25
2.7 注解 25
2.8 可插拔性 26
2.9 请求分发器 26
2.10 Web应用 26
2.11 Servlet映射 27
2.12 部署描述文件 28
第3章 Tomcat的启动与关闭 29
3.1 Tomcat的批处理 29
3.1.1 startup.bat 29
3.1.2 shutdown.bat 31
3.1.3 catalina.bat 31
3.1.4 setclasspath.bat 39
3.2 Tomcat中的变量及属性 40
3.2.1 环境变量 41
3.2.2 JVM系统变量 41
3.2.3 Tomcat属性 44
第4章 从整体预览Tomcat 45
4.1 整体结构及组件介绍 45
4.2 请求处理的整体过程 50
第5章 Server组件与Service组件 52
5.1 Server组件 52
5.1.1 生命周期监听器 53
5.1.2 全局命名资源 57
5.1.3 监听SHUTDOWN命令 58
5.2 Service组件 59
第6章 Connector组件 63
6.1 HTTP阻塞模式协议—Http11Protocol 64
6.1.1 套接字接收终端—JIoEndpoint 65
6.1.2 HTTP阻塞处理器—Http11Processor 73
6.2 HTTP非阻塞模式协议—Http11NioProtocol 102
6.2.1 非阻塞接收终端—NioEndpoint 102
6.2.2 HTTP非阻塞处理器—Http11NioProcessor 111
6.3 HTTP APR模式协议—Http11AprProtocol 114
6.3.1 APR接收终端—AprEndpoint 114
6.3.2 HTTP APR处理器—Http11AprProcessor 119
6.4 AJP Connector 121
6.4.1 AJP阻塞模式协议—AjpProtocol 123
6.4.2 AJP APR模式协议—AjpAprProtocol 125
6.5 HTTP三种模式的Connector 126
6.6 AJP三种模式的Connector 126
第7章 Engine容器 127
第8章 Host容器 129
8.1 Web应用—Context 129
8.2 访问日志—AccessLog 130
8.3 管道—Pipeline 130
8.4 Host集群—Cluster 130
8.5 Host域—Realm 130
8.6 生命周期监听器—HostConfig 131
8.6.1 Descriptor描述符类型 131
8.6.2 WAR包类型 132
8.6.3 目录类型 133
第9章 Context容器 134
9.1 Context容器的配置文件 134
9.2 包装器—Wrapper 135
9.3 Context域—Realm 135
9.4 访问日志—AccessLog 135
9.5 错误页面—ErrorPage 135
9.6 会话管理器—Manager 137
9.7 目录上下文—DirContext 137
9.8 安全认证 138
9.9 Jar扫描器—JarScanner 138
9.10 过滤器 139
9.11 命名资源—NamingResource 140
9.12 Servlet映射器—Mapper 141
9.13 管道—Pipeline 141
9.14 Web应用载入器—WebappLoader 142
9.15 ServletContext的实现—ApplicationContext 143
9.16 实例管理器—InstanceManager 145
9.17 ServletContainerInitializer初始化器 145
9.18 Context容器的监听器 147
9.18.1 ContextConfig监听器 148
9.18.2 TldConfig监听器 151
9.18.3 NamingContextListener监听器 151
9.18.4 MemoryLeakTrackingListener监听器 151
第10章 Wrapper容器 154
10.1 Servlet工作机制 154
10.2 Servlet对象池 156
10.3 过滤器链 157
10.4 Servlet种类 158
10.5 Comet模式的支持 161
10.6 WebSocket协议的支持 163
10.7 异步Servlet 166
第11章 生命周期管理 169
11.1 生命周期统一接口—Lifecycle 169
11.2 生命周期的状态转化 170
11.3 生命周期事件监听机制 172
第12章 日志框架及其国际化 177
12.1 系统内日志 177
12.2 日志的国际化 179
12.3 客户端访问日志 181
12.3.1 访问日志组件的设计 182
12.3.2 访问日志格式的自定义 184
第13章 公共与隔离的类加载器 186
13.1 类加载器 186
13.2 自定义类加载器 189
13.3 Tomcat中的类加载器 192
13.4 类加载器工厂—ClassLoaderFactory 194
13.5 遭遇ClassNotFoundException 196
第14章 请求URI映射器Mapper 200
14.1 请求的映射模型 200
14.2 Mapper的实现 201
14.3 局部路由Mapper 203
14.4 全局路由Mapper 204
第15章 Tomcat的JNDI 205
15.1 JNDI简介 205
15.2 JNDI运行机制 206
15.3 在Tomcat中集成JNDI 210
15.4 在Tomcat中使用JNDI 222
15.4.1 Web应用的局部配置方式 222
15.4.2 服务器的全局配置方式 223
15.5 Tomcat的标准资源 226
第16章 JSP编译器Jasper 227
16.1 从JSP到Servlet 228
16.1.1 语法树的生成—语法解析 228
16.1.2 语法树的遍历—访问者模式 230
16.1.3 JSP编译后的Servlet 232
16.2 从Servlet到Class字节码 235
16.2.1 JSR45标准 235
16.2.2 JDT Compiler编译器 236
16.2.3 Jasper自动检测机制 241
第17章 运行、通信及访问的安全管理 243
17.1 运行安全管理 243
17.1.1 Java安全管理器—SecurityManager 243
17.1.2 Tomcat的系统安全管理 246
17.1.3 安全管理器特权 248
17.2 安全的通信 249
17.2.1 SSL/TLS协议 249
17.2.2 Java安全套接字扩展—JSSE 251
17.2.3 Tomcat中SSL安全信道的实现 264
17.3 客户端访问认证机制 266
17.3.1 Web资源认证原理 266
17.3.2 认证模式 267
17.3.3 Realm域 272
17.3.4 Tomcat如何实现资源安全管理 273
17.3.5 如何让你的Web具备权限认证 274
第18章 处理请求和响应的管道 276
18.1 管道模式—管道与阀门 276
18.2 Tomcat中的管道 280
18.3 Tomcat中的定制阀门 282
第19章 多样化的会话管理器 285
19.1 Web容器的会话机制 286
19.2 标准会话对象—StandardSession 287
19.3 增量会话对象—DeltaSession 288
19.4 标准会话管理器—StandardManager 290
19.5 持久化会话管理器—PersistentManager 291
19.5.1 FileStore 292
19.5.2 JDBCStore 293
19.6 集群增量会话管理器—DeltaManager 294
19.7 集群备份会话管理器—BackupManager 296
19.7.1 机制与原理 297
19.7.2 高可用性及故障转移机制 299
19.7.3 集群RPC通信 301
19.8 Tomcat会话管理器的集成 308
第20章 高可用的集群实现 311
20.1 从单机到集群的会话管理 311
20.1.1 单机模式 311
20.1.2 集群模式 313
20.2 Cluster组件 315
20.3 Tomcat的Cluster工作机制 317
20.4 Tomcat中Cluster的级别 318
20.5 如何让Tomcat实现集群功能 318
第21章 集群通信框架 320
21.1 Tribes简介 320
21.2 集群成员维护服务—MembershipService 321
21.3 平行的消息发送通道—ChannelSender 325
21.4 消息接收通道—ChannelReceiver 327
21.5 通道拦截器—ChannelInterceptor 328
21.6 应用层处理入口—MembershipListener与ChannelListener 331
21.7 如何使用Tribes进行数据传输 332
21.8 Tomcat使用Tribes同步会话 334
21.9 Tomcat使用Tribes部署集群应用 334
第22章 监控与管理 337
22.1 Java管理扩展—JMX 337
22.1.1 JMX的基本结构 337
22.1.2 JMX例子 338
22.2 JMX管理下的Tomcat 339
22.3 ManagerServlet 343
前言/序言
Tomcat作为一款免费的开源应用服务器,凭借技术先进、性能稳定、体积小巧、扩展性好,深受开发者和软件开发商认可。鉴于Tomcat是一款较轻量级的应用服务器,它在中小型系统中被广泛使用,是一个很流行的Web服务器。那么,如此优秀的Tomcat是怎样被创造出来的呢?它的架构是怎样的呢?内部到底又是怎样运作的呢?需要哪些技术来支撑呢?有很多疑问都需要我们去研究探索,作者试图在本书来阐明Tomcat内部的秘密。
虽然Tomcat已经被广泛使用了很长时间,市面上也有很多相关书籍,但多数关于Tomcat的书籍基本都停留在如何使用Tomcat、如何在Tomcat服务器上进行Web应用开发等方面。本书将从Web服务器基础知识开始讲起,循序渐进,让读者不仅能了解Tomcat内核设计,还能能深刻了解体会到Web服务器的原理,体会到一个工业级的Web服务器是如何设计的。通过本书可以帮助读者快速建立起Tomcat内部运作模型。
重复发明轮子不是我们提倡的,本书目的并不在于鼓励读者重复开发轮子,而是鼓励大家去研究开源软件,学习里面的优秀架构,学习里面的优秀设计理念,看看这些优秀开源产品的过人之处,从而提高自己的软件素养。
本书具备如下特点:
本书所探讨的Tomcat是基于Tomcat 7版本;
本书通篇大量采用图解,方便读者理解;
本书对各个设计要点都做深入剖析,读者可以体会到其中为什么要这样设计,原来工业级软件要考虑的如此多如此细;
本书脉络结构比较清晰,由整体到部分,由浅到深,循序渐进,对于知识点的连贯性比较强,对于基础知识有补充说明,避免读者读到一半无法继续阅读。
组织结构
本书的目标是剖析Tomcat的内核设计及其原理机制,全书共分为22章,具体如下。
第1章:Web服务器机制原理,介绍Web相关的基础知识,比如HTTP协议、Socket通信及服务器模型等。
第2章:Servlet规范,介绍Java体系Web容器的Servlet规范。
第3章:Tomcat的启动与关闭,介绍Tomcat启动关闭的批处理及相关的变量。
第4章:从整体预览Tomcat,先从整体介绍Tomcat内部结构以及请求处理的整个过程,让读者能从整体了解Tomcat结构,为后面各个组件深入介绍做铺垫。
第5章:Server与Service,介绍了Server和Service组件,以及Tomcat中对内存泄漏的监听检查。
第6章:连接器Connector,介绍Tomcat包含的HTTP和AJP两种协议的连接器,以及他们不同的IO模式,如BIO模式、NIO模式和APR模式。
第7章:Engine容器,介绍了Engine容器。
第8章:Host容器,介绍Host容器及其包含的内部组件。
第9章:Context容器,介绍Context容器及其包含的内部组件。
第10章:Wrapper容器,介绍了Wrapper容器及Servlet的种类和工作机制,以及对Comet模式实现、WebSocket协议实现和异步Servlet的实现。
第11章:生命周期管理,介绍了Tomcat的生命周期管理机制及其事件监听机制。
第12章:日志框架及其国际化,介绍Tomcat的日志系统及日志的国际化,同时还有Tomcat的访问日志的设计及使用介绍。
第13章:公共与隔离的加载器,介绍Tomcat内部的类加载器结构,如何达到多个Web应用既能共用某些类库又能互相隔离。
第14章:请求URI映射器Mapper,介绍Tomcat对请求URI处理的原理,还有局部路由和全局路由两种Mapper的介绍。
第15章:Tomcat的JNDI,介绍了Tomcat内部对JNDI的集成支持,以及在Tomcat中使用JNDI。
第16章:JSP编译器Jasper,介绍了JSP的语法及Tomcat如何对其进行解析,介绍从JSP到Servlet,再从Servlet到Class的整个编译过程。
第17章:运行、通信及访问的安全管理,介绍了Tomcat内部运行时的安全管理,Tomcat通信信道的安全实现,还有客户端访问认证机制。
第18章:处理请求和响应的管道,介绍了Tomcat中对请求和响应处理的管道模式的设计,以及在Tomcat中自己定制Valve。
第19章:多样化的会话管理器,介绍Tomcat内部的会话管理机制及四种不同的会话管理器,再分别深入介绍标准会话管理器、持久化会话管理器、集群增量会话管理器和集群备份会话管理器的实现机制及原理。
第20章:高可用的集群实现,介绍Tomcat如何实现集群的高可用,介绍Tomcat从单机模式到集群模式,还介绍了Tomcat的Cluster组件。
第21章:集群通信框架,介绍Tomcat的集群通信框架Tribes,剖析Tribes的原理机制,以及Tomcat如何使用Tribes进行会话同步和进行集群部署。
第22章:监控与管理,介绍了Tomcat如何实现自身内部的监控及其管理的。
读者对象
假如你对浏览器上点击某个按钮
Tomcat内核设计剖析 电子书 下载 mobi epub pdf txt