本書(shū)全面紹了Tomcat的架構(gòu)、各組件的實(shí)現(xiàn)方案以及使用方式,包括Tomcat的基礎(chǔ)組件架構(gòu)以及工作原理,Tomcat各組件的實(shí)現(xiàn)方不怕v、使用方式以及詳細(xì)配置說(shuō)明,Tomcat與Wed服務(wù)器集成以及性能優(yōu)化,Tomcat部分?jǐn)U展性介紹等。
劉光瑞,北京窩客研發(fā)總監(jiān),負(fù)責(zé)窩客產(chǎn)品研發(fā)管理及總體架構(gòu)設(shè)計(jì)。擁有十幾年的企業(yè)級(jí)大型業(yè)務(wù)系統(tǒng)研發(fā)架構(gòu)經(jīng)驗(yàn),成功帶領(lǐng) 團(tuán)隊(duì)設(shè)計(jì)并研發(fā)基于Tomcat的組件化微服務(wù)架構(gòu)。2007年在四達(dá)軟件擔(dān)任高級(jí)架構(gòu)師,主導(dǎo)了數(shù)個(gè)省份的廣播電視省網(wǎng)業(yè)務(wù)運(yùn)營(yíng)支撐系統(tǒng)的架構(gòu)設(shè)計(jì)及優(yōu)化工作。2012年在電訊盈科擔(dān)任高級(jí)技術(shù)顧問(wèn),參與了中國(guó)移動(dòng)供應(yīng)鏈系統(tǒng)的架構(gòu)及研發(fā)。在應(yīng)用系統(tǒng)架構(gòu)及性能優(yōu)化方面積累了豐富的經(jīng)驗(yàn)。
第1章 Tomcat介紹 1
1.1 簡(jiǎn)介 1
1.1.1 Tomcat歷史 1
1.1.2 Tomcat許可 2
1.2 安裝和啟動(dòng) 3
1.2.1 Tomcat下載與安裝 3
1.2.2 Tomcat啟動(dòng) 4
1.2.3 IDE啟動(dòng) 5
1.2.4 嵌入式啟動(dòng) 10
1.2.5 Debug啟動(dòng) 11
1.3 Tomcat目錄結(jié)構(gòu) 12
1.4 Tomcat 8.5之后的新特性 12
1.5 小結(jié) 13
第2章 Tomcat總體架構(gòu) 14
2.1 總體設(shè)計(jì) 14
2.1.1 Server 14
2.1.2 Connector和Container 15
2.1.3 Container設(shè)計(jì) 17
2.1.4 Lifecycle 20
2.1.5 Pipeline和Valve 23
2.1.6 Connector設(shè)計(jì) 24
2.1.7 Executor 26
2.1.8 Bootstrap和Catalina 28
2.2 Tomcat啟動(dòng) 30
2.3 請(qǐng)求處理 31
2.4 類加載器 33
2.4.1 J2SE標(biāo)準(zhǔn)類加載器 33
2.4.2 Tomcat加載器 34
2.4.3 Web應(yīng)用類加載器 36
2.5 小結(jié) 37
第3章 Catalina 38
3.1 什么是Catalina 38
3.2 Digester 39
3.2.1 對(duì)象棧 40
3.2.2 匹配模式 41
3.2.3 處理規(guī)則 41
3.2.4 示例程序 42
3.3 創(chuàng)建Server 44
3.3.1 Server的解析 45
3.3.2 Engine的解析 48
3.3.3 Host的解析 49
3.3.4 Context的解析 50
3.4 Web應(yīng)用加載 53
3.4.1 StandardHost 54
3.4.2 HostConfig 56
3.4.3 StandardContext 60
3.4.4 ContextConfig 64
3.4.5 StandardWrapper 69
3.4.6 Context命名規(guī)則 69
3.5 Web請(qǐng)求處理 71
3.5.1 總體過(guò)程 71
3.5.2 請(qǐng)求映射 72
3.5.3 Catalina請(qǐng)求處理 80
3.6 DefaultServlet和JspServlet 81
3.6.1 DefaultServlet 82
3.6.2 JspServlet 84
3.7 小結(jié) 85
第4章 Coyote 86
4.1 什么是Coyote 86
4.2 Web請(qǐng)求處理 88
4.2.1 主要概念 88
4.2.2 請(qǐng)求處理 90
4.2.3 協(xié)議升級(jí) 92
4.3 HTTP 94
4.3.1 基礎(chǔ)知識(shí) 94
4.3.2 配置方式 95
4.4 AJP 97
4.4.1 基礎(chǔ)知識(shí) 97
4.4.2 Web服務(wù)器組件 103
4.4.3 配置方式 106
4.5 HTTP/2.0 106
4.5.1 基礎(chǔ)知識(shí) 106
4.5.2 配置方式 110
4.6 I/O 111
4.6.1 BIO 112
4.6.2 NIO 115
4.6.3 NIO2 121
4.6.4 APR 130
4.7 小結(jié) 134
第5章 Jasper 136
5.1 Jasper簡(jiǎn)介 136
5.2 JSP編譯方式 137
5.2.1 運(yùn)行時(shí)編譯 137
5.2.2 預(yù)編譯 141
5.3 JSP編譯原理 144
5.4 小結(jié) 151
第6章 Tomcat配置管理 152
6.1 JVM配置 152
6.1.1 JVM配置選項(xiàng) 152
6.1.2 系統(tǒng)屬性 153
6.2 服務(wù)器配置 158
6.2.1 catalina.properties 158
6.2.2 server.xml 159
6.2.3 context.xml 172
6.3 Web應(yīng)用配置 172
6.3.1 ServletContext初始化參數(shù) 173
6.3.2 會(huì)話配置 174
6.3.3 Servlet聲明及映射 175
6.3.4 應(yīng)用生命周期監(jiān)聽(tīng)器 177
6.3.5 Filter定義及映射 177
6.3.6 MIME類型映射 178
6.3.7 歡迎文件列表 178
6.3.8 錯(cuò)誤頁(yè)面 179
6.3.9 本地化及編碼映射 179
6.3.10 安全配置 179
6.3.11 JNDI配置 180
6.3.12 其他 183
6.4 Web應(yīng)用過(guò)濾器 185
6.4.1 CorsFilter 186
6.4.2 CsrfPreventionFilter 188
6.4.3 ExpiresFilter 188
6.4.4 FailedRequestFilter 190
6.4.5 RemoteAddrFilter 191
6.4.6 RemoteHostFilter 191
6.4.7 RemoteIpFilter 192
6.4.8 RequestDumperFilter 195
6.4.9 SetCharacterEncodingFilter 195
6.4.10 WebdavFixFilter 196
6.5 Tomcat管理 196
6.5.1 host-manager 196
6.5.2 manager 197
6.5.3 管理命令行 199
6.5.4 Ant任務(wù) 200
6.5.5 JMX 201
6.6 小結(jié) 201
第7章 Web服務(wù)器集成 202
7.1 Web服務(wù)器與應(yīng)用服務(wù)器的區(qū)別 202
7.2 集成應(yīng)用場(chǎng)景 205
7.3 與Apache HTTP Server集成 206
7.3.1 Windows環(huán)境安裝 206
7.3.2 Linux環(huán)境安裝 207
7.3.3 mod_jk 209
7.3.4 mod_proxy_ajp 229
7.4 與Ngnix集成 235
7.4.1 Ngnix簡(jiǎn)介 235
7.4.2 Windows環(huán)境安裝 237
7.4.3 Linux環(huán)境安裝 237
7.4.4 Tomcat集成 241
7.5 與IIS集成 243
7.6 小結(jié) 243
第8章 Tomcat集群 244
8.1 Tomcat集群介紹 244
8.1.1 Tomcat集群基礎(chǔ) 246
8.1.2 Apache Tribes 247
8.1.3 Tomcat集群組件實(shí)現(xiàn) 253
8.2 集群配置 254
8.3 會(huì)話同步 255
8.3.1 DeltaManager 256
8.3.2 BackupManager 257
8.3.3 替代方案 257
8.4 集群部署 258
8.4.1 實(shí)現(xiàn)原理 258
8.4.2 配置方式 259
8.5 小結(jié) 259
第9章 Tomcat安全 260
9.1 配置安全 260
9.1.1 安裝部署問(wèn)題 260
9.1.2 server.xml配置 261
9.2 應(yīng)用安全 263
9.2.1 Realm 264
9.2.2 HttpServletRequest 265
9.2.3 Authenticator 266
9.3 傳輸安全(SSL) 267
9.4 Java安全策略 273
9.4.1 簡(jiǎn)介 273
9.4.2 catalina.policy 275
9.5 小結(jié) 279
第10章 Tomcat性能調(diào)優(yōu) 280
10.1 Tomcat性能測(cè)試及診斷 281
10.1.1 常見(jiàn)測(cè)試方式 281
10.1.2 性能測(cè)試工具 282
10.1.3 數(shù)據(jù)采集及分析 290
10.2 Tomcat性能優(yōu)化 303
10.2.1 JVM優(yōu)化 304
10.2.2 Tomcat配置 308
10.3 應(yīng)用性能優(yōu)化建議 311
10.4 小結(jié) 312
第11章 Tomcat附加功能 313
11.1 Tomcat的嵌入式啟動(dòng) 313
11.1.1 為什么需要嵌入式啟動(dòng) 313
11.1.2 嵌入式啟動(dòng)Tomcat 314
11.1.3 嵌入式啟動(dòng)服務(wù)器 316
11.2 Tomcat中的JNDI 317
11.2.1 什么是JNDI 317
11.2.2 Tomcat中的JNDI 318
11.3 Comet和WebSocket 320
11.3.1 什么是Comet 321
11.3.2 Tomcat的Comet實(shí)現(xiàn) 322
11.3.3 什么是WebSocket 326
11.3.4 Tomcat的WebSocket實(shí)現(xiàn) 328
11.4 小結(jié) 335
附錄 server.xml配置 336
結(jié)束語(yǔ) 370