www.it-ebooks.info
Wiley Publishing, Inc.
Professional
Apache Tomcat 6
Vivek Chopra
Sing Li
Jeff Genender
ffirs.indd iiiffirs.indd iii 7/11/07 6:54:43 PM7/11/07 6:54:43 PM
www.it-ebooks.info
ffirs.indd iiffirs.indd ii 7/11/07 6:54:43 PM7/11/07 6:54:43 PM
www.it-ebooks.info
Professional
Apache Tomcat 6
Introduction xxiii
Chapter 1: Apache Tomcat 1
Chapter 2: Web Applications: Servlets, JSPs, and More 13
Chapter 3: Tomcat Installation 29
Chapter 4: Tomcat Architecture 51
Chapter 5: Basic Tomcat Configuration 69
Chapter 6: Advanced Tomcat Features 103
Chapter 7: Web Application Configuration 135
Chapter 8: Web Application Administration 173
Chapter 9: Class Loaders 205
Chapter 10: HTTP Connectors 221
Chapter 11: Tomcat and Apache HTTP Server 243
Chapter 12: Tomcat and IIS 285
Chapter 13: JDBC Connectivity 309
Chapter 14: Tomcat Security 335
Chapter 15: Shared Tomcat Hosting 387
Chapter 16: Monitoring and Managing Tomcat with JMX 419
Chapter 17: Clustering 455
Chapter 18: Embedded Tomcat 493
Chapter 19: Logging 505
Chapter 20: Performance Testing 533
Chapter 21: Performance Tuning 561
Appendix A: Tomcat and IDEs 585
Appendix B: Apache Ant 597
Index 621
ffirs.indd iffirs.indd i 7/11/07 6:54:42 PM7/11/07 6:54:42 PM
www.it-ebooks.info
ffirs.indd iiffirs.indd ii 7/11/07 6:54:43 PM7/11/07 6:54:43 PM
www.it-ebooks.info
Wiley Publishing, Inc.
Professional
Apache Tomcat 6
Vivek Chopra
Sing Li
Jeff Genender
ffirs.indd iiiffirs.indd iii 7/11/07 6:54:43 PM7/11/07 6:54:43 PM
www.it-ebooks.info
Professional Apache Tomcat 6
Published by
Wiley Publishing, Inc.
10475 Crosspoint Boulevard
Indianapolis, IN 46256
www.wiley.com
Copyright © 2007 by Wiley Publishing, Inc., Indianapolis, Indiana
Published simultaneously in Canada
ISBN: 978-0-471-75361-2
Manufactured in the United States of America
10 9 8 7 6 5 4 3 2 1
Library of Congress Cataloging-in-Publication Data
Chopra, Vivek.
Professional Apache Tomcat 6 / Vivek Chopra, Sing Li, and Jeff Genender.
p. cm.
Includes index.
ISBN 978-0-471-75361-2 (paper/website)
1. Apache Tomcat. 2. Web servers. 3. Web site development. 4. Internet programming. I. Li, Sing. II.
Genender, Jeff M. III. Title.
TK5105.8885.A63C47 2007
005.7'1376—dc22
2007020134
No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any
means, electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted under
Sections 107 or 108 of the 1976 United States Copyright Act, without either the prior written permission of the
Publisher, or authorization through payment of the appropriate per-copy fee to the Copyright Clearance Center,
222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 646-8600. Requests to the Publisher for per-
mission should be addressed to the Legal Department, Wiley Publishing, Inc., 10475 Crosspoint Blvd., Indian-
apolis, IN 46256, (317) 572-3447, fax (317) 572-4355, or online at />Limit of Liability/Disclaimer of Warranty: The publisher and the author make no representations or warranties
with respect to the accuracy or completeness of the contents of this work and specifically disclaim all warranties,
including without limitation warranties of fitness for a particular purpose. No warranty may be created or
extended by sales or promotional materials. The advice and strategies contained herein may not be suitable for
every situation. This work is sold with the understanding that the publisher is not engaged in rendering legal,
accounting, or other professional services. If professional assistance is required, the services of a competent profes-
sional person should be sought. Neither the publisher nor the author shall be liable for damages arising herefrom.
The fact that an organization or Website is referred to in this work as a citation and/or a potential source of further
information does not mean that the author or the publisher endorses the information the organization or Website
may provide or recommendations it may make. Further, readers should be aware that Internet Websites listed in
this work may have changed or disappeared between when this work was written and when it is read.
For general information on our other products and services please contact our Customer Care Department
within the United States at (800) 762-2974, outside the United States at (317) 572-3993 or fax (317) 572-4002.
Trademarks: Wiley, the Wiley logo, Wrox, the Wrox logo, Wrox Programmer to Programmer, and related trade dress
are trademarks or registered trademarks of John Wiley & Sons, Inc. and/or its affiliates, in the United States and
other countries, and may not be used without written permission. All other trademarks are the property of their
respective owners. Wiley Publishing, Inc., is not associated with any product or vendor mentioned in this book.
Wiley also publishes its books in a variety of electronic formats. Some content that appears in print may not be
available in electronic books.
ffirs.indd ivffirs.indd iv 7/11/07 6:54:44 PM7/11/07 6:54:44 PM
www.it-ebooks.info
To Rebecca and Rohan, thanks for all your patience and support.
—Vivek
To my guiding light and spiritual support for the last two decades, Kim.
—Sing
To my wonderful wife, Nazarena, and my children, Madisyn, Weston, and Coleton.
I could not have done this without you.
—Jeff
ffirs.indd vffirs.indd v 7/11/07 6:54:45 PM7/11/07 6:54:45 PM
www.it-ebooks.info
ffirs.indd viffirs.indd vi 7/11/07 6:54:45 PM7/11/07 6:54:45 PM
www.it-ebooks.info
About the Authors
Vivek Chopra has more than 13 years of experience as a software architect, developer, and team lead and
has worked in a number of Silicon Valley companies and startups. He writes actively on technology and is
the author of more than half a dozen books on Java, open source software, XML, and Web services. Vivek
has pending patents on Web service technologies, and has been a Java Community Process (JCP) member
for the past three years. He also serves on the expert group for JSR 280 (XML API for Java ME).
Sing Li (who was bitten by the microcomputer bug in the late 1970s) has grown up with the Micropro-
cessor Age. His first personal computer was a $99 do-it-yourself Netronics COSMIC ELF with 256 bytes
of memory, mail-ordered from the back pages of Popular Electronics magazine. A 20-year industry vet-
eran, Sing is a system developer, open source software contributor, and freelance writer specializing in
Java technology, and embedded and distributed systems architecture. He regularly writes for several
popular technical journals and e-zines, and is the creator of the “Internet Global Phone,” one of the very
first Internet phones available. He has authored and co-authored a number of books across diverse tech-
nical disciplines including Geronimo, Tomcat, JSP, servlets, XML, Jini, media streaming, device drivers,
and JXTA.
Jeff Genender has over 18 years of software architecture, team lead, and development experience in
multiple industries. Jeff is an active committer and Project Management Committee (PMC) member for
Apache Geronimo, and a committer on OpenTerracotta, OpenEJB, ServiceMix, and Mojo (Maven plug-
ins). Jeff also serves as a member of the Java Community Process (JCP) expert group for JSR-313 (Java
Platform, Enterprise Edition 6 [Java EE 6] Specification) as a representative of the Apache Software
Foundation. Jeff is an open source evangelist and has successfully brought open source development
efforts, initiatives, and success stories into a number of Global 2000 companies, saving these organiza-
tions millions in licensing costs.
ffirs.indd viiffirs.indd vii 7/11/07 6:54:45 PM7/11/07 6:54:45 PM
www.it-ebooks.info
ffirs.indd viiiffirs.indd viii 7/11/07 6:54:45 PM7/11/07 6:54:45 PM
www.it-ebooks.info
Credits
Executive Editor
Bob Elliott
Development Editor
Sydney Jones
Technical Editors
Rupert Jones
Anne Horton
Copy Editor
Nancy Rapoport
Editorial Manager
Mary Beth Wakefield
Production Manager
Tim Tate
Vice President and Executive Group Publisher
Richard Swadley
Vice President and Executive Publisher
Joseph B. Wikert
Project Coordinator, Cover
Adrienne Martinez
Proofreader
Kathryn Duggan
Indexer
Johnna VanHoose Dinse
Anniversary Logo Design
Richard Pacifico
ffirs.indd ixffirs.indd ix 7/11/07 6:54:45 PM7/11/07 6:54:45 PM
www.it-ebooks.info
ffirs.indd xffirs.indd x 7/11/07 6:54:46 PM7/11/07 6:54:46 PM
www.it-ebooks.info
Contents
Introduction xxiii
Chapter 1: Apache Tomcat 1
Humble Beginnings: The Apache Project 2
The Apache Software Foundation 3
Tomcat 3
Distributing Tomcat: The Apache License 4
Comparison with Other Licenses 5
The Big Picture: Java EE 6
Java APIs 6
The Java EE APIs 7
Java EE Application Servers 8
“Agree on Standards, Compete on Implementation” 8
Tomcat and Application Servers 9
Tomcat and Web Servers 9
Summary 10
Chapter 2: Web Applications: Servlets, JSPs, and More 13
A Brief History of Web Applications 13
CGI Scripts: The First Mechanism for Dynamic Content 13
Server Side Java: Servlets 14
JavaServer Pages 19
JSP Tag Libraries 22
JSP EL 23
MVC Architecture 24
Using Appropriate Web Technologies 25
Building and Distributing Web Applications 26
Summary 27
Chapter 3: Tomcat Installation 29
Installing the Java Virtual Machine 29
Installing the JVM on Windows 30
Installing the JVM on Linux 32
ftoc.indd xiftoc.indd xi 7/11/07 1:48:47 PM7/11/07 1:48:47 PM
www.it-ebooks.info
xii
Installing Tomcat 34
Deciding Which Distribution to Install 34
Verifying the Downloaded File 35
Tomcat Windows Installer 36
Installing Tomcat on Windows Using the ZIP File 41
Installing Tomcat on Linux 42
Building Tomcat from Source 44
Do You Need to Build Tomcat from the Source Code? 44
Downloading the Source Release 44
Subversion Repository 45
Building a Source Release 45
The Tomcat Installation Directory 46
Installing APR 47
Troubleshooting and Tips 48
Class Version Error 49
The Port Number Is in Use 49
Running Multiple Instances 49
A Proxy Is Blocking Access 49
Summary 50
Chapter 4: Tomcat Architecture 51
Tomcat Directory Overview 51
bin Directory 52
conf Directory 52
lib Directory 53
logs Directory 53
temp Directory 53
webapps Directory 53
work Directory 54
An Overview of Tomcat Architecture 54
The Server 55
The Service 56
The Remaining Classes in the Tomcat Architecture 59
Connector Architecture 59
Communication Paths 60
Connector Protocols 61
Choosing a Connector 63
Lifecycle 64
Lifecycle Interface 65
LifecycleListener Interface 65
Configuration by Architecture 66
Summary 67
Contents
ftoc.indd xiiftoc.indd xii 7/11/07 1:48:48 PM7/11/07 1:48:48 PM
www.it-ebooks.info
Contents
xiii
Chapter 5: Basic Tomcat Configuration 69
Tomcat 6 Configuration Essentials 70
Files in $CATALINA_HOME/conf 71
Basic Server Configuration 71
Server Configuration via the Default server.xml 72
Operating Tomcat in Application Server Configuration 75
Web Application Context Definitions 82
The Default context.xml File 82
Authentication and the tomcat-users.xml File 86
The Default Deployment Descriptor — web.xml 86
How server.xml, Context Descriptors, and web.xml Work Together 91
Fine-Grained Access Control: catalina.policy 94
catalina.properties: Finer-Grained Control over Access Checks 97
Bootstrapping Configuration 97
A Final Word on Differentiating Between Configuration and Management 98
Tomcat 6 Web-Based GUI Configurator 98
Summary 100
Chapter 6: Advanced Tomcat Features 103
Valves — Interception Tomcat-Style 104
Standard Valves 104
Access Log Implementation 105
Scope of Log Files 106
Single Sign-On Implementation 108
Multiple Sign-On Without the Single Sign-On Valve 109
Configuring a Single Sign-On Valve 111
Form Authenticator Valve 112
Restricting Access via a Request Filter 112
Remote Address Filter 112
Remote Host Filter 113
Configuring Request Filter Valves 113
Request Dumper Valve 114
Persistent Sessions 115
The Need for Persistent Sessions 115
Configuring a Persistent Session Manager 115
JNDI Resource Configuration 118
What Is JNDI? 118
Tomcat and JNDI 119
Typical Tomcat JNDI Resources 120
Configuring Resources via JNDI 121
ftoc.indd xiiiftoc.indd xiii 7/11/07 1:48:48 PM7/11/07 1:48:48 PM
www.it-ebooks.info
Contents
xiv
Configuring a JDBC DataSource 124
Configuring Mail Sessions 126
Configuring Lifecycle Listeners 129
Lifecycle Events Sent by Tomcat Components 129
The <Listener> Element 129
Tomcat 6 Lifecycle Listeners Configuration 130
Summary 133
Chapter 7: Web Application Configuration 135
Understanding the Contents of a Web Application 135
Public Resources 136
The WEB-INF Directory 138
The META-INF Directory 139
Understanding the Deployment Descriptor (web.xml) 140
The Servlet 2.3–Style Deployment Descriptor 141
The Servlet 2.4/2.5–Style Deployment Descriptor 154
Summary 171
Chapter 8: Web Application Administration 173
Sample Web Application 173
Tomcat Manager Application 175
Enabling Access to the Manager Application 176
Manager Application Configuration 178
Tomcat Manager: Web Interface 180
Displaying Tomcat Server Status 180
Managing Web Applications 181
Deploying a Web Application 182
Tomcat Manager: Managing Applications with Ant 182
Known Issue: Failure While Undeploying Web Applications on Windows 188
Tomcat Manager — Using HTTP Requests 189
List Deployed Applications 190
Deploying a New Application 190
Installing/Deploying Applications in Tomcat 6 191
Deploying a New Application Remotely 192
Deploying a New Application from a Local Path 192
Reloading an Existing Application 194
Listing Available JNDI Resources 195
Listing OS and JVM Properties 196
Stopping an Existing Application 196
Starting a Stopped Application 197
Undeploying a Web Application 198
ftoc.indd xivftoc.indd xiv 7/11/07 1:48:49 PM7/11/07 1:48:49 PM
www.it-ebooks.info
Contents
xv
Displaying Session Statistics 198
Querying Tomcat Internals Using the JMX Proxy Servlet 199
Setting Tomcat Internals Using the JMX Proxy Servlet 200
Possible Errors 200
Security Considerations 201
Tomcat Deployer 203
Summary 203
Chapter 9: Class Loaders 205
Class Loader Overview 205
Standard Java SE Class Loaders 207
More on Class Loader Behavior 210
Creating a Custom Class Loader 211
Why Is a Custom Class Loader Needed for Tomcat? 211
Security and Class Loaders 212
Class Loader Delegation 212
Core Class Restriction 212
Separate Class Loader Namespaces 213
SecurityManager 213
Tomcat and Class Loaders 214
System Class Loader 215
Endorsed Standards Override Mechanism 215
Common Class Loader 215
Web Application Class Loader 216
Dynamic Class Reloading 217
Common Class Loader Pitfalls 218
Packages Split Among Different Class Loaders 218
Singletons 218
XML Parsers 219
Summary 220
Chapter 10: HTTP Connectors 221
HTTP Connectors 222
Tomcat 6 HTTP/1.1 Connector 223
The Advanced NIO Connector 227
Comet Asynchronous IO Support 228
The Native APR Connector 228
Configuring Tomcat for CGI Support 232
Configuring Tomcat for SSI Support 234
Configuring the Tomcat 6 SSI Servlet 235
Configuring the Tomcat 6 SSI Filter 237
ftoc.indd xvftoc.indd xv 7/11/07 1:48:49 PM7/11/07 1:48:49 PM
www.it-ebooks.info
Contents
xvi
Running Tomcat Behind a Proxy Server 238
Performance Tuning 239
Tunable Configuration Attributes 239
TCP/IP Stack Tuning Tips 240
Front-Ending Tomcat 6 with a Web Server 241
Summary 242
Chapter 11: Tomcat and Apache HTTP Server 243
The AJP Connector Architecture 244
The Native Code Apache Modules 244
The Apache JServ Protocol 245
The AJP Connector 245
Apache Web Server Frontend or Tomcat Standalone 246
Understanding Tomcat Workers 246
Multiple Tomcat Workers 246
Configuring Apache Server to Work with Multiple Tomcat
Workers — the workers.properties File 247
Connecting Tomcat with Apache 251
Tomcat 6 Configuration 251
Apache Web Server Configuration 252
Using the mod_ jk Module 253
Using the mod_proxy Module 259
Configuring SSL for Apache Web Server 263
Configuring mod_ssl for Apache 264
Testing the SSL-Enabled Apache Setup 269
SSL-Enabled Apache-Tomcat Setup 271
Tomcat Load Balancing with Apache 273
Changing CATALINA_HOME in the Tomcat Startup Files 274
Setting Different AJP Connector Ports 275
Setting Different Server Ports 275
Disabling the Default HTTP/1.1 Connector 276
Setting the jvmRoute in the Standalone Engine 276
Commenting Out the Catalina Engine 277
Directives in httpd.conf 277
Workers Configuration in workers.properties 277
Testing the Load Balancer 279
Testing Sticky Sessions 280
Testing Round-Robin Behavior 281
Testing with Different Load Factors 283
Summary 284
ftoc.indd xviftoc.indd xvi 7/11/07 1:48:50 PM7/11/07 1:48:50 PM
www.it-ebooks.info
Contents
xvii
Chapter 12: Tomcat and IIS 285
Role of the ISAPI Plug-in 285
Connecting Tomcat with IIS 286
Verifying Tomcat and IIS Installations 287
Configuring the JK Connector 288
Installing the ISAPI Plug-in 288
Configuring Tomcat Workers 289
Configuring the Request Forwarding Rules 291
Optionally Configure URL Rewrite Rules 292
Updating the Windows Registry for the ISAPI Plug-in 292
IIS 5 Isolation Mode (IIS 6 Only) 295
Creating a Virtual Directory Under IIS 296
Adding the ISAPI Plug-in as an IIS Filter 300
Authorizing the ISAPI Plug-in as a Web Application Extension (IIS 6 Only) 302
Testing the Final Setup 303
Troubleshooting Tips 303
Using SSL 305
Scalable Architectures with IIS and Tomcat 305
Distributing Web and Application Server Deployments 306
Multiple Tomcat Workers 307
Load-Balanced AJP Workers 307
Summary 307
Chapter 13: JDBC Connectivity 309
JDBC Basics 310
Establishing and Terminating Connections to RDBMSs 311
Evolving JDBC Versions 311
JDBC Driver Types 312
Database Connection Pooling 313
A Problem with Connection Pooling 314
Tomcat and the JDBC Evolution 315
JNDI Emulation and Pooling in Tomcat 6 315
Preferred Configuration: JNDI Resources 317
The Resource Tag 317
Hands-On JNDI Resource Configuration 319
Testing the JNDI Resource Configuration 324
Alternative JDBC Configuration 326
Alternative Connection Pool Managers 326
About the c3p0 Pool Manager 326
Deploying the c3p0 Pooling Manager 327
ftoc.indd xviiftoc.indd xvii 7/11/07 1:48:50 PM7/11/07 1:48:50 PM
www.it-ebooks.info
Contents
xviii
Obtaining JDBC Connections Without JNDI Lookup 327
Testing Non-JNDI Pool Access with c3p0 329
Obtaining a Connection with JNDI Mapping 330
Testing c3p0 with Tomcat 6 JNDI-Compatible Lookup 331
Deploying Third-Party Pools 332
Summary 332
Chapter 14: Tomcat Security 335
Verifying Tomcat Download Integrity 336
Verifying the MD5 DIGEST 336
Using PGP to Verify the Download 338
Securing the Tomcat Server Installation 340
Removing Default Applications 341
ROOT and tomcat-docs 341
System Applications — manager and host-manager 341
Tying Down System Application Access Security 341
Removing JSP and Servlet Examples 342
Changing the SHUTDOWN Command 342
Running Tomcat with a Special Account 342
Creating a Non-Privileged Tomcat User 343
Running Tomcat with the Tomcat User 343
Securing the File System 344
Windows File System 344
Linux File System 346
Securing the Java Virtual Machine 346
Overview of the Security Manager 347
Using the Security Manager with Tomcat 350
Recommended Security Manager Practices 353
Securing Web Applications 355
Authentication and Realms 355
Security Realms 360
Encryption with SSL 377
JSSE 378
Protecting Resources with SSL 381
Securing DefaultServlet 383
Disabling Directory Listing 383
Disabling an Invoker Servlet, SSI, and CGI Gateway 384
Host Restriction 384
Summary 384
ftoc.indd xviiiftoc.indd xviii 7/11/07 1:48:51 PM7/11/07 1:48:51 PM
www.it-ebooks.info
Contents
xix
Chapter 15: Shared Tomcat Hosting 387
Virtual Hosting Concepts 387
Virtual Hosting in Apache 388
Example Deployment Scenario 388
IP-Based Virtual Hosting in Apache 389
Name-Based Virtual Hosting in Apache 392
Virtual Hosting in Tomcat 395
Example Deployment Scenario 396
Tomcat as a Standalone Server 398
Tomcat with Apache 405
Configuring Apache 406
The Tomcat Host-Manager Application 409
Virtual Hosting Issues: Stability, Security, and Performance 409
Tuning Virtual Hosting Settings in Tomcat 410
Creating Separate JVMs for Each Virtual Host 410
Setting Memory Limits on the Tomcat JVM 414
Using Java Security Manager Restrictions 416
Summary 417
Chapter 16: Monitoring and Managing Tomcat with JMX 419
The Requirement to Be Manageable 420
All About JMX 422
The JMX Architecture 422
Instrumentation Level 424
Agent Level 425
Distributed Services Level 427
JMX Remote API 428
An Anthology of MBeans 428
Standard MBeans 428
Dynamic MBeans 428
Model MBeans 429
Open MBeans 429
JMX Manageable Elements in Tomcat 6 429
Manageable Tomcat 6 Architectural Components 430
Manageable Nested Components 430
Manageable Runtime Data Objects 430
Manageable Resource Object 436
Accessing Tomcat 6’s JMX Support via the Manager Proxy 441
Working with the JMX Proxy 442
ftoc.indd xixftoc.indd xix 7/11/07 1:48:51 PM7/11/07 1:48:51 PM
www.it-ebooks.info
Contents
xx
Modifying MBean Attributes 444
Using jconsole GUI to Monitor Tomcat 447
Configuring Tomcat for Remote Monitoring 450
Summary 452
Chapter 17: Clustering 455
Clustering Benefits 456
Scalability and Clustering 456
The Need for High Availability 457
Clustering Basics 457
Master-Backup Topological Pattern 457
Fail-Over Behavioral Pattern 458
Tomcat 6 Clustering Model 459
Load Balancing 460
Session Sharing 461
Working with Tomcat 6 Clustering 465
Session Management in Tomcat 6 465
The Role of Cookies and Modern Browsers 466
Configuring a Tomcat 6 Cluster 466
Common Front End: Load Balancing via Apache mod_ jk 471
Preparation for Using Different Session-Sharing Backends 472
Backend 1: In-Memory Replication Configuration 472
Backend 2: Persistent Session Manager with a Shared File Store 484
Backend 3: Persistent Session Manager with a JDBC Store 487
Testing a Tomcat Cluster with JDBC Persistent Session Manager Backend 490
The Complexity of Clustering 490
Clustering and Performance 490
Clustering and Response Time 491
Solving Performance Problems with Clustering 491
Summary 491
Chapter 18: Embedded Tomcat 493
Importance of Embedded Tomcat in Modern System Design 494
Typical Embedded Application Scenarios 495
Developing with Embedded Tomcat 495
Summary 503
ftoc.indd xxftoc.indd xx 7/11/07 1:48:51 PM7/11/07 1:48:51 PM
www.it-ebooks.info
Contents
xxi
Chapter 19: Logging 505
Changes from Tomcat 5 505
log4j 506
log4j Architecture 506
log4j Installation and Configuration 509
A Tutorial Introduction to log4j 514
More log4j Recipes 515
log4j Performance Tips 527
JULI 527
Java Logging Architecture 527
A Tutorial Introduction to JULI 529
Log Files Analysis 531
Summary 532
Chapter 20: Performance Testing 533
Performance Concepts 533
What to Measure 533
Scalability and Performance 534
Understanding the User’s Perspective 535
Measuring Performance 535
JMeter 537
Installing and Running JMeter 537
Making and Understanding Test Plans with JMeter 538
JMeter Features 542
Distributed Load Testing 554
Interpreting Test Results 555
Alternatives to JMeter 558
What to Do After Performance Testing 558
Summary 559
Chapter 21: Performance Tuning 561
Performance Tuning Best Practices 561
Step 1: Set Up a Test Bed 562
Step 2: Test Performance and Identify the Baseline 563
Step 3: Diagnose Performance Bottlenecks 564
Diagnosing Tomcat Performance Issues 564
Tomcat Performance Tuning Tips 566
Tuning the JVM Parameters 567
Precompiling JSPs 569
ftoc.indd xxiftoc.indd xxi 7/11/07 1:48:52 PM7/11/07 1:48:52 PM
www.it-ebooks.info
Contents
xxii
Tuning Tomcat Configuration 571
Using Web Servers for Static Content, When Appropriate 582
Summary 584
Appendix A: Tomcat and IDEs 585
Eclipse 585
Debugging a Remote Web Application in Eclipse 586
Deploying and Debugging Local Web Applications Using the Sysdeo Tomcat Plugin 589
Deploying and Debugging Web Applications Using the Web Tools Platform 591
Managing Web Application Deployment Using Apache Ant and Eclipse 593
NetBeans 593
Debugging a Remote Web Application In NetBeans 594
Debugging a Web Application Inside NetBeans 596
Summary 596
Appendix B: Apache Ant 597
Installing Ant 598
Introduction to Ant 598
More Command-Line Options 601
Ant Recipes 602
Building Web Applications with Ant 602
Compiling JSPs 608
Reusable Ant Scripts Using Property Files and Command-Line Parameters 609
Build Logs 610
Build Notifications via E-mail 611
Ant and Source Control Systems 613
Automated Testing 614
Continuous Integration 615
Ant Task Reference 615
Summary 619
Index 621
ftoc.indd xxiiftoc.indd xxii 7/11/07 1:48:52 PM7/11/07 1:48:52 PM
www.it-ebooks.info