內容簡介
《ApacheTomcat6高級編程》全面介紹了安裝、配置和運行ApacheTomcat伺服器的知識。書中不僅提供了配置選項的逐行分析,還探究了Tomcat的特性和功能,可以幫助讀者解決出現在系統管理的各個階段的各種問題,包括共享主機、安全、系統測試和性能測試及調優。
《ApacheTomcat6高級編程》重點講解Tomcat6的套用知識。從基本的Tomcat和Web應用程式配置,到用於集群、JDBC連線、日誌和其他功能的更高級技術,這些內容將幫助讀者高效地管理和執行Tomcat部署。
《ApacheTomcat6高級編程》適合於負責Tomcat配置、性能調優、系統安全或部署架構的J2EE系統管理員和Java開發者閱讀。
作者簡介
VivekChopra擁有13年以上的軟體架構師、開發者和團隊領導的經驗,他在矽谷的許多公司工作過。他寫的技術書籍很生動,他是這本關於Java、開源軟體、XML和Web服務圖書的主要作者。他已經申請了關於Web服務技術的專利。過去3年他是JavaCommunityProcess(JCP)的會員,也是JSR280(JavaME的XMLAPI)專家組的成員。
SingLi(在20世紀70年代末就已經發現微機的bug)是伴隨著微處理器的發展長大的。他的第一台個人電腦價值99美元,自製的NetronicsCOSMICELF,具有256位元組的記憶體,是向PopularElectronics雜誌郵購的。他具有20年行業經驗,是系統開發者、開源軟體貢獻者和Java技術、嵌入式及分散式系統架構方面的業餘作家。他時常為一些流行的技術期刊和電子雜誌寫文章,同時是最早的Intemet電話服務之一——ImemetGlobalPhone的創始人。他曾經編著和與人合著了許多技術書籍,包括Geronimo、Tomcat、JSP、servlet、XML、JINI、媒體流、設備驅動和jxta。
JeffGenender擁有18年以上的軟體架構師、團隊領導,具有多家公司的開發經驗,他是ApacheGeronimo的ProjectManagementCommittee(PMC)成員,也是關於OpenTerracotta、OpenEJB、ServiceMix和Mojo(Maven外掛程式)的委員。作為Apache軟體基金會的代表,他也是JSR.313(Java平台,企業版6[JavaEE61規範)的JavaCommunityProcess(JCP)專家組的成員。他通過努力成功地發展了開源軟體,並被許多全球2000強公司分享,他的這些成功經驗為這些機構節省了數百萬的許可證費用。
編輯推薦
通過閱讀《ApacheTomcat6高級編程》。讀者將掌握安裝、配置和運行ApacheTomcat伺服器的全部知識。《ApacheTomcat6高級編程》不僅提供了配置選項的逐行分析,還探究了Tonmcat的特性和功能。因此讀者將能獲得解決各種問題的技巧,這些問題出現在系統管理的各個階段,包括共享主機、安全、系統測試和性能測試及調優。
《ApacheTomcat6高級編程》重點講解Tomcat6的套用知識,介紹了新的架構和性能更改。從基本的Tomcat和Web應用程式配置到用於集群、JDBC連線、日誌和其他功能的高級技術,這些內容將幫助讀者高效地管理和執行Tomcat部署。
主要內容
·在Windows和UNIX/Linux系統上安裝JVM和Tomcat的方法:
·打包和部署Web應用程式的步驟:
·配置Tomcat的內部HTTP協定棧,包括新的APR和NIO連線器:
·使甩ApaclleWeb伺服器或MicrosoftIIS作為前端Web伺服器來部署Tomcat的方法:
·負載均衡和大量Tomcat伺服器的集群:
·在虛擬主機環境下安裝Tomcat的方法:
·載入部署在Tomcat中的測試Web應用程式的方法:
·使用內部的維護統計功能實時監控Tomcat伺服器的方法:
·提供Web應用程式的擴展性和高可用性的技術:
·提供Tomcat6的性能技巧和最佳實踐。
目錄
第1章 ApacheTomcat
1.1 謙遜的開始:Apache項目
1.2 Apache軟體基金會
1.3 Tomcat
1.3.1 分發Tomcat:Apache的許可證
1.3.2 與其他許可證的比較
1.4 藍圖:JavaEE
1.4.1 JavaAPI
1.4.2 JavaEEAPI
1.4.3 JavaEE套用服務
1.4.4 向標準化看齊,在實踐中競爭
1.4.5 Tomcat和套用伺服器
1.5 Tomcat和Web伺服器
1.6 本章小結
第2章 Web的套用:Servlet、JSP及其他
2.1 Web套用簡史
2.1.2 Java伺服器端:Servlet
2.1.3 JavaServerPage
2.1.4 JSP標籤庫
2.1.5 JSPEL
2.1.6 MVC架構
2.1.7 使用合適的Web技術
2.2 Web套用的創建和分類
2.3 本章小結
第3章 Tomcat安裝
3.1 安裝Java虛擬機
3.1.1 在Windows上安裝JVM
3.1.2 在Linux上安裝JVM
3.2 安裝Tomcat
3.2.1 選擇安裝類別
3.2.2 檢驗下載檔案
3.2.3 Windows上安裝Tomcat
3.2.4 在Windows下使用ZIP檔案安裝Tomcat
3.2.5 在Linux下安裝Tomcat
3.3 使用原始碼構建Tomcat
3.3.1 是需要通過原始碼構建Tomcat
3.3.2 下載原始碼版本
3.3.3 subversion儲存庫
3.3.4 構建一個原始碼版本
3.4 Tomcat安裝目錄
3.5 安裝APR
3.6 疑難解答和詳細說明
3.6.1 類版本錯誤
3.6.2 使用中的連線埠號
3.6.3 運行多重實例
3.6.4 代理阻塞通道
3.7 本章小結
第4章 Tomcat架構
4.1 Tomcat目錄概述
4.1.1 bin目錄
4.1.2 conf目錄
4.1.3 lib目錄
4.1.4 logs目錄
4.1.5 temp目錄
4.1.6 webapps目錄
4.1.7 work目錄
4.2 Tomcat架構概述
4.2.1 伺服器
4.2.2 服務
4.2.3 Tomcat架構中的其餘類
4.3 連線器架構
4.3.1 通信路徑
4.3.2 連線器協定
4.3.3 選擇連線器
4.4 生命周期
4.4.1 LifeCycle接口
4.4.2 LifecycleListener接口
4.5 根據架構進行配置
4.6 本章小結
第5章 Tomcat的基本配置
5.1 Tomcat6配置的要點
5.2 $CATALINA_HOME/conf中的檔案
5.3 伺服器的基本配置
5.3.1 通過server.xml默認檔案配置伺服器
5.3.2 套用伺服器配置下的Tomcat運行
5.3.3 Web套用軟體的Context定義
5.3.4 默認context.xml檔案
5.3.5 認證和tomcat-users.xml檔案
5.3.6 默認的部署描述符——web.xml
5.3.7 servlet.xml、Context描述符和web.xml怎樣協同工作
5.3.8 嚴密的訪問控制:catlina.policy
5.3.9 Catalina.properties:建立在訪問查詢上的嚴密的訪問控制
5.3.10 引導配置
5.3.11 配置和管理的不同點
5.4 Tomcat6基於Web的GUI配置器
5.5 本章小結
第6章 高級Tomcat特性
6.1 閥——截取Tomcat樣式
6.2 標準閥
6.3 訪問日誌實現
6.4 日誌檔案範圍
6.5 單點登錄實現
6.5.1 不使用單點登錄閥實現多次登錄
6.5.2 配置單點登錄閥
6.6 Form認證器閥
6.7 通過請求過濾器限制訪問
6.7.1 遠程地址過濾器
6.7.2 遠程主機過濾器
6.7.3 配置請求過濾器閥
6.7.4 請求記錄器閥
6.8 持久會話
6.8.1 持久會話的必要性
6.8.2 配置PersistentSessionManager
6.9 JNDI資源配置
6.9.1 什麼是JNDI
6.9.2 Tomcat和JNDI
6.9.3 典型的TomcatJNDI資源
6.9.4 通過JNDI配置資源
6.9.5 配置JDBCDataSource
6.9.6 配置Mail會話
6.10 配置Lifecyclelistener
6.10.1 Tomcat組件傳送的生命周期事件
6.10.2 元素
6.10.3 Tomcat6Lifecyclelistener配置
6.11 本章小結
第7章 Web應用程式配置
7.1 理解Web應用程式內容
7.1.1 公共資源
7.1.2 Web-INF目錄
7.1.3 META-INF目錄
7.2 理解部署描述符
7.2.1 Servlet2.3類型部署描述符
7.2.2 Servlet2.4/2.5類型部署描述符
7.3 本章小結
第8章 Web應用程式管理
8.1 Web應用程式示例
8.2 Tomcat管理員程式
8.2.1 允許訪問管理員程式
8.2.2 配置管理員程式
8.3 Tomcat管理器:網路接口
8.3.1 顯示Tomcat伺服器狀態
8.3.2 管理Web應用程式
8.3.3 部署Web應用程式
8.4 Tomcat管理器:用Ant管理應用程式
8.5 Tomcat管理器:使用HTTP請求
8.5.1 列出已部署的應用程式
8.5.2 部署新的應用程式
8.5.3 在Tomcat6中安裝/部署應用程式
8.5.4 遠程部署新的應用程式
8.5.5 從本地路徑部署新的應用程式
8.5.6 重載現有的應用程式
8.5.7 列出可用的JNDI資源
8.5.8 列出OS和JVM屬性
8.5.9 停止現有的應用程式
8.5.10 啟動被停止的應用程式
8.5.11 反部署Web應用程式
8.5.12 顯示會話統計
8.5.13 使用JMX代理Servlet查詢Tomcat核心
8.5.14 使用JMX代理Servlet設定Tomcat核心
8.6 可能發生的錯誤
8.7 安全性考慮
8.8 Tomcat部署器
8.9 本章小結
第9章 類裝載器
9.1 類裝載器概述
9.1.1 標準的JavaSE類裝載器
9.1.2 關於類裝載器的更多行為
9.1.3 創建自定義類裝載器
9.1.4 為什麼Tomcat需要自定義的類裝載器
9.2 安全性和類裝載器
9.2.1 類裝載器委派
9.2.2 核心類限制
9.2.3 獨立的類裝載器命名空間
9.2.4 SecurityManager
9.3 Tomcat與類裝載器
9.3.1 系統類裝載器
9.3.2 EndorsedStandardsOverride機制
9.3.3 通用類裝載器
9.3.4 Web應用程式類裝載器
9.4 動態類重載
9.5 通用類裝載器缺陷
9.5.1 在不同的類裝載器中分割包
9.5.2 Singleton
9.5.3 XML分析器
9.6 本章小結
第10章 HTTP連線器
10.1 HTTP連線器
10.1.1 Tomcat6HTTP/1.1連線器
10.1.2 高級NIO連線器
10.1.3 Comet異步IO支持
10.1.4 本地APR連線器
10.2 配置Tomcat支持CGI
10.3 配置Tomcat以支持SSI
10.3.1 配置Tomcat6SSIServlet
10.3.2 配置Tomcat6SSI過濾器
10.4 在代理伺服器後運行Tomcat
10.5 性能調整
10.5.1 可調整的配置屬性
10.5.2 TCP/IP棧調整技巧
10.6 前端Tomcat6和Web伺服器
10.7 本章小結
第11章 Tomcat與ApacheHTTP伺服器
11.1 AJP連線器體系結構
11.1.1 Apache的本地代碼模組
11.1.2 ApacheJServ協定
11.1.3 AJP連線器
11.2 ApacheWeb伺服器前端或獨立的Tomcat
11.3 了解TomcatWorker
11.3.1 多個TomcatWorker
11.3.2 使用workers.properties檔案配置Apache伺服器與多個TomcatWorker協同工作
11.4 連線Tomcat與Apache
11.4.1 Tomcat6配置
11.4.2 ApacheWeb伺服器配置
11.4.3 使用mod_jk模組
11.4.4 使用mod_proxy模組
11.5 為ApacheWeb伺服器配置SSL
11.5.1 為Apache配置mod_ssl
11.5.2 測試啟用SSL的Apache設定
11.5.3 啟用SSL的Apache-Tomcat設定
11.6 Tomcat負載平衡與Apache
11.6.1 更改Tomcat啟動檔案中的CATALINA_HOME
11.6.2 設定不同的AJP連線器連線埠
11.6.3 設定不同的伺服器連線埠
11.6.4 禁用默認的HTTP/1.1連線器
11.6.5 在StandaloneEngine中設定jvmRoute
11.6.6 注釋CatalinaEngine
11.6.7 httpd.conf中的指令
11.6.8 workers.properties中的worker配置
11.7 測試負載平衡器
11.7.1 測試Sticky會話
11.7.2 測試Round-Robin行為
11.7.3 在不同的負載係數下測試
11.8 本章小結
第12章 Tomcat與IIS
12.1 ISAPI外掛程式的角色
12.2 連線Tomcat和IIS
12.2.1 檢查Tomcat與IIS的安裝
12.2.2 配置JK連線器
12.2.3 安裝ISAPI外掛程式
12.2.4 配置Tomcatworker
12.2.5 配置轉發請求規則
12.2.6 可選的URL重寫規則配置
12.2.7 為ISAPI外掛程式升級Windows註冊表
12.2.8 IIS5獨立模式(只針對IIS6)
12.2.9 在IIS下創建虛擬目錄
12.2.10 添加作為IIS過濾器的ISAPI外掛程式
12.2.11 授權作為Web應用程式擴展的ISAPI外掛程式(只針對IIS6)
12.2.12 測試最後的設定
12.3 故障解決技巧
12.4 使用SSL
12.5 IIS和Tomcat的可擴展架構
12.5.1 分發Web和應用程式部署
12.5.2 多個TomcatWorkers
12.5.3 負載平衡的AJPWorker
12.6 本章小結
第13章 JDBC連線
13.1 JDBC基礎
13.1.1 建立和終止RDBMS連線
13.1.2 JDBC版本演化
13.1.3 JDBC驅動類型
13.1.4 資料庫連線池
13.1.5 連線池的問題
13.1.6 Tomcat和JDBC演化
13.2 Tomcat6中的JNDI模擬和連線池
13.3 首選的配置:JNDI資源
13.3.1 Resource標籤
13.3.2 繼承JNDI資源配置
13.3.3 測試JNDI資源配置
13.4 可選的JDBC配置
13.5 可選的連線池管理器
13.5.1 關於c3p0池管理器
13.5.2 部署c3p0池管理器
13.5.3 無需JNDI查找獲得JDBC連線
13.5.4 使用c3p0測試對非JNDI池的訪問
13.5.5 使用JNDI映射獲得連線
13.5.6 使用Tomcat6JNDI-comp-atible查找測試c3p0
13.5.7 部署第三方連線池
13.6 本章小結
第14章 Tomcat安全
14.1 核查下載的Tomcat的完整性
14.1.1 核查MD5摘要
14.1.2 使用PGP簽名來核查下載的檔案
14.2 確保Tomcat伺服器安全安裝
14.2.1 去除默認的應用程式
14.2.2 ROOT和tomcat-docs
14.2.3 系統應用程式——manager和host-manager
14.2.4 約束系統應用程式訪問安全性
14.2.5 刪除JSP和Servlet的例子
14.2.6 更改SHUTDOWN命令
14.3 使用特殊賬戶運行Tomcat
14.3.1 創建一個無特權的Tomcat用戶
14.3.2 使用Tomcat用戶運行Tomcat
14.4 確保檔案系統安全
14.4.1 Windows檔案系統
14.4.2 Linux檔案系統
14.5 確保Java虛擬機的安全
14.5.1 SecurityManager概述
14.5.2 使用Tomcat的SecurityManager
14.5.3 推薦的SecurityManager練習
14.6 確保Web應用程式的安全
14.6.1 “認證”和“域”
14.6.2 域安全性
14.7 SSL加密
14.7.1JSSE
14.7.2 使用SSL保護資源
14.8 保證DefaultServlet的安全
14.8.1 禁用目錄列表
14.8.2 禁用InvokerServlet、SSI和CGIGateway
14.9 主機限制
14.10 本章小結
第15章 共享的Tomcat主機
15.1 虛擬主機概念
15.2 Apache中的虛擬主機
15.2.1 實例部署方案
15.2.2 Apache中基於IP的虛擬主機
15.2.3 Apache中基於名稱的虛擬主機
15.3 Tomcat中的虛擬主機
15.3.1 實例部署方案
15.3.2 作為獨立伺服器的Tomcat
15.3.3 使用Apache的Tomcat
15.3.4 配置Apache
15.4 TomcatHost-Manager應用程式
15.5 虛擬主機問題:穩定性、安全和性能
15.6 調整Tomcat中的虛擬主機設定
15.6.1 為每個虛擬主機創建獨立的JVM
15.6.2 在TomcatJVM上設定記憶體資源限制
15.6.3 使用JavaSecurityManager限制
15.7 本章小結
第16章 使用JMX監視和管理Tomcat
16.1 管理需求
16.2 關於JMX
16.2.1 JMX體系結構
16.2.2 工具層
16.2.3 代理層
16.2.4 分散式服務層
16.3 JMX遠程API
16.4MBean介紹
16.4.1 標準MBean
16.4.2 動態MBean
16.4.3 模型MBean
16.4.4 開放MBean
16.5 JMX在Tomcat6中的可管理元素
16.5.1 可管理的Tomcat6體系結構組件
16.5.2 可管理的嵌入式組件
16.5.3 可管理的運行時數據對象
16.5.4 可管理的資源對象
16.6 通過ManagerProxy訪問Tomcat6的JMXSupport
16.6.1 使用JMXProxy
16.6.2 修改MBean屬性
16.6.3 使用jconsoleGUI監視Tomcat
16.6.4 為遠程監視配置Tomcat
16.7 本章小結
第17章 集群
17.1 集群益處
17.1.1 可擴展性與集群
17.1.2 高可靠性的必要性
17.2 集群基礎
17.2.1 主-備用拓撲模式
17.2.2故障轉移行為模式
17.3 Tomcat6集群模型
17.3.1 負載平衡
17.3.2 會話共享
17.4 使用Tomcat6集群
17.4.1 Tomcat6中的會話管理
17.4.2 Cookie和現代瀏覽器的角色
17.4.3 配置一個Tomcat6集群
17.4.4 通用前端:通過Apachemod_jk使負載平衡
17.4.5 準備使用不同的後端會話共享
17.4.6 後端1:記憶體複製配置
17.4.7 後端2:使用已分享檔案存儲的永久會話管理器
17.4.8 後端3:使用JDBC存儲的永久會話管理器
17.4.9 測試使用JDBC永久會話管理器後端的Tomcat集群
17.5 集群的複雜性
17.5.1 集群和性能
17.5.2 集群和回響時間
17.5.3 使用集群解決性能問題
17.6 本章小結
第18章 嵌入式Tomcat
18.1 現代系統設計中嵌入式Tomcat的重要性
18.1.1 典型地嵌入式應用程式
18.1.2 使用嵌入式Tomcat開發
18.2 本章小結
第19章 日誌
19.1 從Tomcat5的變革
19.2 log4j
19.2.1 log4j體系結構
19.2.2 log4j安裝和配置
19.2.3 log4j入門指南
19.2.4 log4j高級用法
19.2.5 log4j性能建議
19.3 JULI
19.3.1 Java日誌體繫結構
19.3.2 JULI入門指南
19.4 日誌檔案分析
19.5 本章小結
第20章 性能測試
20.1 性能概念
20.1.1 評估什麼
20.1.2 可擴展性和性能
20.1.3 理解用戶角度的性能
20.1.4 評估性能
20.2Jmeter
20.2.1 安裝和運行JMeter
20.2.2 設計和理解使用JMeter的測試計畫
20.2.3 JMeter特性
20.2.4 分散式負荷測試
20.2.5 解釋測試結果
20.3 替代JMeter的工具
20.4 性能測試後的事項
20.5 本章小結
第21章 性能調優
21.1 性能調優的最佳實踐
21.1.1 步驟1:建立測試台
21.1.2 步驟2:性能測試和確定基線
21.1.3 步驟3:診斷性能瓶頸
21.2 診斷Tomcat的性能問題
21.3 Tomcat性能調優提示
21.3.1 JVM的參數調優
21.3.2 預編譯JSP
21.3.3 Tomcat配置調優
21.3.4 適當的時候使用Web伺服器的靜態內容
21.4 本章小結
附錄A Tomcat和集成開發環境
A.1 Eclipse
A.1.1 調試Eclipse中的遠程Web應用程式
A.1.2 使用SysdeoTomcat外掛程式部署和調試本地Web應用程式
A.1.3 使用Web工具平台部署和調試Web應用程式
A.1.4 使用ApacheAnt和Eclipse管理Web應用程式部署
A.2netbeans
A.2.1 調試NetBeans中的遠程Web應用程式
A.2.2 調試NetBeans內的Web應用程式
A.3 小結
附錄B ApacheAnt
B.1 安裝Ant
B.2 Ant介紹
B.3 Ant訣竅
B.3.1 使用Ant創建Web應用程式
B.3.2 編譯JSP
B.3.3 利用屬性檔案和命令行參數的可重用Ant腳本
B.3.4 創建日誌
B.3.5 通過電子郵件創建通知
B.3.6 Ant和源控制系統
B.3.7 自動測試
B.4 持續集成
B.5 Ant任務參考
B.6 小結
……