Book Details

About This Book

Take your Java EE web programming skills to the next level by getting an expert's level understanding of the servlet specification and its reference implementation, Apache Tomcat.

Build a Tomcat distribution from its source code, and explore the components, classes, and technologies that make up this container.

Use standard development tools such as Eclipse, Ant, and Subversion to dissect a Tomcat distribution.

Discover the touch points between the servlet specification and a servlet container's implementation.

Acquire specialist grade skills in a range of technologies that contribute to Java server side development

Who This Book Is For

This book is intended for web developers who want to take their programming skills to the next level, and for server administrators who want to get a better understanding of the container software they manage.

This book will give you an expert's understanding of every component that contributes to the overall request processing capabilities of Tomcat. In addition, the concepts you learn will be general enough to be carried over to other servlet containers.

This book is also a good starting point for developers who want to understand how high availability and high performance software, such as Tomcat, are designed.

If you wish to contribute to the Tomcat project, then this is an ideal book for you.

Prior knowledge of the Java programming language, and web development on the Java platform is assumed.

Table of Contents

Chapter 1: Introduction to Tomcat

What's the story behind Tomcat?

What exactly is Tomcat?

Why this book?

Gathering our tools

Summary

Chapter 2: Servlet API Overview

Java Community Process

Java Enterprise Edition platform

Hypertext Transfer Protocol (HTTP)

What is the Servlet API?

Summary

Chapter 3: Servlet Container Overview

Component taxonomy

Summary

Chapter 4: Starting Up Tomcat

Using scripts

Summary

Chapter 5: The Server and Service Components

Setting up your project

JNDI service

StandardServer

StandardService

Summary

Chapter 6: The Connector Component

Connector classification

Summary

Chapter 7: The Engine Component

Containers

Nested components

Engine

Implementation details

Pipeline

Valve

Summary

Chapter 8: The Host Component

Virtual hosts

Configuring a host

StandardHost

HostConfig

Examples of name-based virtual hosting

StandardHostValve

ErrorReportValve

Summary

Chapter 9: The Context Component

Aspects of the Context component

Web application resources

Shared library mechanism

URLs and protocol handlers

Java class loading

Implementing a custom class loader

Making a class available

Context initialization and startup

Request processing

Hot deploying a context

Context example

Summary

Chapter 10: The Wrapper Component

StandardWrapper

Servlet lifecycle

Mappers

Request processing

Filters

Request dispatcher

Examples

Summary

Chapter 11: The Manager Component

Session propagation mechanisms

Session

Manager

Summary

What You Will Learn

Obtain an in-depth view of the inner workings of one of the most successful open source projects of all time.

Discover the touch points between the Java EE platform specifications and a servlet container's implementation.

Learn how to extract the most out of your Tomcat installation by understanding how its various components are implemented.

Use standard development tools such as Subversion, and Ant, and Eclipse to build a Tomcat distribution from its source code.

Execute Tomcat from inside the Eclipse IDE to watch the various components cooperate in processing a request.

Acquire specialist grade skills in a range of technologies and protocols that contribute to Java server side development.

Learn advanced software techniques such as building a custom class loader, implementing a custom protocol, and implementing JNDI-based naming and directory services.

Explore some of the performance optimizations and design patterns used in building highly scalable and performant software.

In Detail

While Tomcat is one of the most popular servlet containers, its inner workings still remain a mystery to many developers. If you only have a superficial familiarity of how this container actually functions, much of its power remains untapped and underutilized. This book will provide you with all that you need to undertand how to effectively use Apache Tomcat.

This book begins by providing detailed instructions on building a Tomcat distribution. The next few chapters introduce you to the conceptual underpinnings of web servers, the Java EE and servlet specifications, and the Tomcat container. Subsequent chapters address the key Tomcat components, taking care to provide you with the information needed to understand the internal workings of each component. Detailed examples let you walk through a Tomcat installation, stepping into key Tomcat components, as well as into your own custom servlets.

During the course of the book you will encounter various structural components such as the Server and Service; containers such as the Engine, Host, Context, and Wrapper; and helpers such as the Loader, Manager, and Valve. You will also see how Tomcat implements the JNDI API to provide both a directory service for storage agnostic access to its resources, as well as a naming service that implements the Java EE Environment Naming Context.

Along the way you will learn how various elements of the servlet 2.5 specification, as well as the HTTP RFCs are implemented by a servlet container. By the end of your journey, you will be able to count yourself as part of the elite minority of Java EE web developers who truly understand what goes on under the covers of a servlet container.

Authors

Damodar Chetty

Damodar Chetty is a lifelong programmer with almost two decades in the computer software industry. He cut his teeth on assembler and BASIC programming, and has journeyed through Fortran, Cobol, Visual Basic, C++, and Java. Along the way he has stubbed his toes often enough to develop a keen sense of where dragons lie. He is currently an independent consultant at Software Engineering Solutions, Inc. doing what he loves most – building high quality software.

Damodar has a degree in Electronics & Telecommunications engineering from the University of Bombay, and higher degrees in Management Sciences from the University of Goa, and in Computer Engineering from the University of Minnesota.

He currently lives in Woodbury, Minnesota with his wife, Devi, his children, Ashwin and Anita, and a passion for photography.

Alerts & Offers

Series & Level

We understand your time is important. Uniquely amongst the major publishers, we seek to develop and publish the broadest range of learning and information products on each technology. Every Packt product delivers a specific learning pathway, broadly defined by the Series type. This structured approach enables you to select the pathway which best suits your knowledge level, learning style and task objectives.

Learning

As a new user, these step-by-step tutorial guides will give you all the practical skills necessary to become competent and efficient.

Beginner's Guide

Friendly, informal tutorials that provide a practical introduction using examples, activities, and challenges.

Essentials

Fast paced, concentrated introductions showing the quickest way to put the tool to work in the real world.

Cookbook

A collection of practical self-contained recipes that all users of the technology will find useful for building more powerful and reliable systems.

Blueprints

Guides you through the most common types of project you'll encounter, giving you end-to-end guidance on how to build your specific solution quickly and reliably.

Mastering

Take your skills to the next level with advanced tutorials that will give you confidence to master the tool's most powerful features.

Starting

Accessible to readers adopting the topic, these titles get you into the tool or technology so that you can become an effective user.

Progressing

Building on core skills you already have, these titles share solutions and expertise so you become a highly productive power user.