訳者まえがき vii |
まえがき ix |
1章 Tomcat事始め 1 |
1.1 Tomcatのインストール 1 |
1.1.1 LinuxにTomcatをインストールする 2 |
1.1.2 SolarisにTomcatをインストールする 9 |
1.1.3 WindowsにTomcatをインストールする 11 |
1.1.4 Mac OS XにTomcatをインストールする 15 |
1.1.5 FreeBSDにTomcatをインストールする 17 |
1.2 Tomcatの起動、停止、再起動 18 |
1.2.1 起動と停止 18 |
1.2.2 よくある間違い 26 |
1.2.3 Tomcatの再起動 26 |
1.3 Tomcatの自動起動 32 |
1.3.1 Linuxでの自動起動 33 |
1.3.2 Solarisでの自動起動 34 |
1.3.3 Windowsでの自動起動 34 |
1.3.4 Mac OS Xでの自動起動 35 |
1.3.5 FreeBSDでの自動起動 38 |
1.4 インストールしたTomcatをテストする 39 |
1.5 Tomcatの出自は? 40 |
2章 Tomcatの設定 43 |
2.1 Apacheウェブサーバの使用 43 |
2.2 ウェブアプリケーションのディレクトリを再配置する 44 |
2.3 ポート番号を8080以外に変更する 48 |
2.3.1 ポート80のTCP接続をポート8080に中継する 48 |
2.3.2 サービスラッパを経由することでTomcatにポート80を監視させる 51 |
2.3.3 よくある間違い 56 |
2.4 Java仮想マシンの設定 57 |
2.5 JSPコンパイラの変更 60 |
2.6 レルム、ロール、ユーザの管理 62 |
2.6.1 レルム 63 |
2.6.2 コンテナ管理によるセキュリティ 70 |
2.6.3 シングルサインオン 76 |
2.7 セッション制御 78 |
2.7.1 セッションの永続性 79 |
2.8 JNDIやJDBCリソースへのアクセス 85 |
2.8.1 JDBC DataSource 85 |
2.8.2 その他のJNDIリソース 86 |
2.9 サーブレットの自動再ロード機能 87 |
2.10 ユーザディレクトリのカスタマイズ 88 |
2.11 Tomcatのサンプルアプリケーション 89 |
2.12 CGI(Common Gateway Interface) 90 |
2.13 TomcatのAdminアプリケーション 92 |
3章 TomcatにおけるサーブレットとJSPウェブアプリケーションの配備 97 |
3.0.1 ホスト 100 |
3.0.2 Host Managerウェブアプリケーション 103 |
3.1 ウェブアプリケーションのレイアウト 103 |
3.1.1 サーブレットやJavaServer Pagesの配備 106 |
3.2 アーカイブしていないウェブアプリケーションディレクトリによる配備作業 107 |
3.2.1 server.xmlのコンテキストによる配備 108 |
3.2.2 コンテキストXMLフラグメントファイルによる配備 109 |
3.3 WARファイルによる配備作業 112 |
3.3.1 server.xmlのコンテキストによる配備 113 |
3.3.2 コンテキストXMLフラグメントファイルによる配備 115 |
3.4 ホットデプロイメント 118 |
3.5 WARファイルを使用する 120 |
3.6 Managerアプリケーション 121 |
3.7 Apache Antによる自動化 124 |
3.7.1 JAR/WARの作成 125 |
3.7.2 Antを用いた配備 126 |
3.7.3 よくある間違い 137 |
3.8 シンボリックリンク 139 |
4章 Tomcatのパフォーマンスチューニング 141 |
4.1 ウェブサーバのパフォーマンス測定 142 |
4.1.1 負荷テスト用のツール 143 |
4.1.2 ウェブサーバのパフォーマンス比較 153 |
4.2 外部チューニング 169 |
4.2.1 Java仮想マシンのパフォーマンス 169 |
4.2.2 オペレーティングシステムのパフォーマンス 171 |
4.3 内部チューニング 172 |
4.3.1 DNSルックアップの無効化 172 |
4.3.2 スレッド数の調整 173 |
4.3.3 JSPコンパイルの高速化 174 |
4.4 容量計画 181 |
4.4.1 事例に基づく容量計画 182 |
4.4.2 大企業向け容量計画 182 |
4.4.3 Tomcatの容量計画 183 |
4.5 参考文献 185 |
5章 Apacheウェブサーバとの統合 187 |
5.1 統合するかどうか : 長所と短所 188 |
5.1.1 Tomcat単体での稼働 188 |
5.1.2 TomcatとApache httpdの連携 191 |
5.2 Apache httpdのインストール 193 |
5.3 ApacheとTomcatの統合 196 |
5.3.1 個別のポート番号を用いた負荷の共有 196 |
5.3.2 プロキシを用いたApacheとTomcatの接続 199 |
5.3.3 Apache httpdのセットアップ 200 |
5.3.4 Tomcatのセットアップ 203 |
5.3.5 プロキシの動作を検証する 204 |
5.3.6 短所 205 |
5.3.7 TomcatからApache httpdへのプロキシ 208 |
5.3.8 mod_jkコネクタの使用 210 |
5.4 APRコネクタを使用してTomcatにHTTPを処理させる 215 |
5.4.1 APRのインストール 217 |
5.4.2 APRコネクタのビルドとインストール 219 |
5.4.3 APRコネクタを使用するTomcatの設定方法 220 |
6章 Tomcatのセキュリティ 223 |
6.1 システムをセキュアなものにする 224 |
6.1.1 オペレーティングシステムのセキュリティ情報 224 |
6.1.2 ネットワークの設定 225 |
6.2 複合サーバ構成を採用する場合のセキュリティモデル 226 |
6.3 セキュリティマネージャの使用 228 |
6.4 ファイル使用権限の付与 231 |
6.5 Tomcatのchroot jailへのセットアップ 236 |
6.5.1 chroot jailのセットアップ 238 |
6.5.2 chroot内で非rootユーザを使用する 244 |
6.6 誤ったユーザ入力のフィルタリング 248 |
6.6.1 既知の脆弱性 249 |
6.6.2 HTTPリクエストのフィルタリング 258 |
6.7 TomcatにおけるSSLの使用 268 |
6.7.1 自己署名サーバ証明書の作成 269 |
6.7.2 認証局への証明書の要求とインストール 271 |
6.7.3 Tomcat SSLコネクタのセットアップ 275 |
6.7.4 クライアント証明書 279 |
7章 コンフィギュレーションファイルとその要素 287 |
7.1 server.xml 288 |
7.1.1 Server 292 |
7.1.2 Service 293 |
7.1.3 Executor 293 |
7.1.4 Connector 294 |
7.1.5 Engine 299 |
7.1.6 Host 300 |
7.1.7 Context 303 |
7.1.8 Realm 305 |
7.1.9 GlobalNamingResources 306 |
7.1.10 WatchedResource 309 |
7.1.11 Listener 310 |
7.1.12 Loader 310 |
7.1.13 Manager 311 |
7.1.14 Resources 314 |
7.1.15 Valve 315 |
7.1.16 トランザクション 325 |
7.1.17 クラスタ 327 |
7.1.18 Tomcatの旧バージョンからの移行 338 |
7.2 web.xml 344 |
7.2.1 web-app 344 |
7.2.2 icon、display-name、description 345 |
7.2.3 distributable 346 |
7.2.4 context-param 346 |
7.2.5 filterとfilter-mapping 348 |
7.2.6 listener 349 |
7.2.7 servlet 349 |
7.2.8 servlet-mapping 350 |
7.2.9 session-config 352 |
7.2.10 mime-mapping 352 |
7.2.11 welcome-file-list 353 |
7.2.12 error-page 354 |
7.2.13 jsp-config、taglib 355 |
7.2.14 resource-env-ref 357 |
7.2.15 resource-ref 357 |
7.2.16 security-constraint 357 |
7.2.17 login-config 358 |
7.2.18 security-role 359 |
7.2.19 env-entry 359 |
7.2.20 ejb-ref、ejb-local-ref 360 |
7.2.21 service-ref 360 |
7.2.22 message-destination-ref 361 |
7.2.23 message-destination 361 |
7.2.24 locale-encoding-mapping-list 362 |
7.3 tomcat-users.xml 362 |
7.4 catalina.policy 363 |
7.5 catalina.properties 363 |
7.6 context.xml 365 |
8章 デバッギングとトラブルシューティング 367 |
8.1 ログファイルの見方 367 |
8.2 エラー原因の究明 368 |
8.3 URLとHTTPのやり取り 368 |
8.3.1 HTTPリクエスト 369 |
8.3.2 レスポンスコードとレスポンスヘッダ 370 |
8.3.3 HTTPを用いたやり取り 370 |
8.4 RequestDumperValveを用いたデバッギング 373 |
8.5 Tomcatが停止しない場合 375 |
9章 Tomcatソースコードからのビルド 379 |
9.1 Apache Antのインストール 380 |
9.2 ソースコードの入手 381 |
9.2.1 ソースコードのダウンロード 381 |
9.2.2 ApacheのSubversionリポジトリからのソースコードの取得 381 |
9.3 サポートライブラリのダウンロード 384 |
9.4 Tomcatのビルド 384 |
10章 Tomcatのクラスタリング 387 |
10.1 クラスタリング用語集 388 |
10.2 HTTPリクエストの流れ 389 |
10.2.1 DNSによるリクエストの分散処理 392 |
10.2.3 mod_proxyによるロードバランシングとフェイルオーバ 396 |
10.3 Javaサーブレットコンテナによる分散処理 400 |
10.4 Tomcat 6のクラスタリング実装 405 |
10.4.1 特徴 407 |
10.4.2 IPマルチキャストの設定とテスト 409 |
10.4.3 多対多の複製を設定する 414 |
10.4.4 セッション複製のテスト 420 |
10.4.5 静的なメンバの設定 423 |
10.4.6 プライマリー/バックアップ複製の設定 424 |
10.5 DBCによるリクエスト分散とフェイルオーバ 424 |
10.6 参考文献 425 |
11章 終わりに 427 |
11.1 補助的なリソース 427 |
11.1.1 Tomcatに添付されてくるオンラインドキュメント 427 |
11.1.2 Apache Tomcatのウェブドキュメント 428 |
11.1.3 Apache Tomcatメーリングリストのアーカイブ 428 |
11.1.4 本書に関するウェブサイト 429 |
11.1.5 Tomcatに関するその他のウェブサイト 429 |
11.1.6 IRC(International Relay Chat)の#tomcatチャンネル 429 |
11.1.7 Apache Tomcatメーリングリスト 430 |
11.2 コミュニティ 431 |
付録A Javaのインストール 433 |
A.1 JavaのJDKを選択する 434 |
A.2 古いGCJやKaffeの使用を抑止する 435 |
A.3 Sun MicrosystemsのJava SE JDK 438 |
A.4 IBMのJ9 JDK 440 |
A.5 BEAのJRockit JDK 441 |
A.6 AppleのJava SE JDK 443 |
A.7 ExcelsiorのJET 444 |
A.8 ApacheのHarmony JDK 447 |
付録B jbchroot.c 449 |
付録C BadInputValve.java 457 |
付録D BadInputFilter.java 467 |
付録E Tomcat 6.0のLinux RPMパッケージファイル 481 |
索引 505 |