Chapter 2. Introduction

Tomcat, sometimes known as Apache Tomcat, sometimes as Jakarta Tomcat, is a Java servlet engine that is the reference implementation used by Sun for its Java servlet and JSP specifications.

2.1. Why Am I Writing This ?

A few years ago, when I was working for a company that was an IBM business partner, one of the things I loved about IBM software products was the "Quick Start" manual. This manual introduced the product through a series of common tasks, from installation to basic configuration. The manual did not go deep into the details of the software -- that's what the User Guides and other documentation were for -- but it did help new users get productive quickly, and without scaring them too much.

The Jakarta group produces a lot of documentation for Tomcat, but none of it seemed to be as soothingly simple to read as the "Quick Starts" I was used to. Hence this document. Hopefully, I have addressed the common issues facing newbie Tomcat administrators in such a way that their learning curve becomes easier to negotiate.

2.2. Copyright, License and Other Caveats

This document is free documentation; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This document is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

2.3. What is Tomcat ?

According to its website,, Apache Tomcat is "the servlet container that is used in the official Reference Implementation for the Java Servlet and JavaServer Pages technologies. The Java Servlet and JavaServer Pages specifications are developed by Sun under the Java Community Process."

A more detailed history can be found here.

Java servlets are Java programs that run on the server, and JavaServer Pages or JSPs are ASP-like scripts that use tags to implement data and functionality.

2.4. Why Should I Use It ?

I get asked this question a lot. There are faster servlet engines, and there are servlet engines that are easier to administer, install, configure and deploy. There are 3 reasons why I use Tomcat :

  1. It is free. Free for commercial and non-commercial use under the Apache license. This means that if I need a server application to crunch data, and I'm working in a large corporation with no budget for software for my department, I can still get this done, legally.

  2. It has a large installed base of users. This can be a real bonus, especially when you run into trouble. Chances are, someone somewhere has already encountered, and probably fixed the problem you are facing. If you are using proprietary software, people are not so willing to share expertise and you will probably end up shelling out money to resolve issues.

  3. It is a reference implementation. Typically people equate this with "experimental" or even "primitive". The good thing about reference implementations is that, if you know how to deploy applications in this servlet engine, you should have no problems with other servlet engines, commercial or otherwise. As long as the Java servlet engine is "standards-compliant", it should follow the same deployment steps, even if its configuration method (GUI or text config files) may be different.

Ultimately, it is still your choice. If Tomcat or Java isn't for you, or if you can afford a better servlet engine, there's no reason why you absolutely have to use Tomcat.

2.5. Tomcat Versions

Table 2-1. Tomcat Versions as of 30 January 2004

Servlet Specification JSP Specification Tomcat Version
2.4 2.0 5.0.25
2.3 1.2 4.1.30
2.2 1.1 3.3.2

2.6. Tested Platforms

I have tested the instructions in this document on the platforms below.

Table 2-2. Tested Platforms

Operating System Java Development Kit Tomcat Version Apache Version
Fedora Core 2 IBM Java 2 v 1.4.1 SR2 5.0.25 2.0.49
Fedora Core 1 IBM Java 2 v 1.4.1 SR1 5.0.18 2.0.48

If you are using Tomcat version 5.0.24, upgrade now to 5.0.25, or apply the hotfix on the Jakarta site. There is a problem with session handling in 5.0.24 that is resolved by the hotfix and the latest version of Tomcat.

If you are using Fedora Core 2, you will need to install the upgrade kernel-2.6.6-1.427 or better. The stock i686 kernel that comes with the FC2 distribution will hang your system when anything Java is run on it. Check your local yum repository for latest updates.