Apache Tomcat 6 Tutorial
Configuration Details
For most people, the easiest way to get started with Tomcat
is to use a preconfigured version as described in these links:
However, if you want to customize the configuration, this page provides more
details.
- Install the Java JDK.
Make sure JDK 1.5 or 1.6 is installed and your
PATH is
set so that both "java -version" and
"javac -help" give a result.
- Configure Tomcat.
- Download the software. Go to
http://tomcat.apache.org/download-60.cgi and
download and unpack the zip file for the
current release build of Tomcat 6.0.
- Set the
JAVA_HOME variable.
Set it to refer to the base JDK directory,
not the bin subdirectory.
- Change the port to 80.
Edit install_dir/conf/server.xml and change
the
port attribute of the Connector element
from 8080 to 80.
- Turn on servlet reloading.
Edit install_dir/conf/context.xml and
change
<Context> to
<Context reloadable="true" privileged="true">.
- Enable the invoker servlet.
Go to install_dir/conf/web.xml and
uncomment the
servlet and servlet-mapping
elements that map the invoker servlet
to /servlet/*.
- Turn on directory listings.
Go to install_dir/conf/web.xml, find the
init-param entry for listings,
and change the value from false to
true.
- Test the server.
-
Verify that you can start the server.
Double-click install_dir/bin/startup.bat and
try accessing http://localhost/.
-
Check that you can access your own HTML &
JSP pages. Drop some simple HTML and JSP pages into
install_dir/webapps/ROOT and access them with
http://localhost/filename.
-
Set up your development environment.
-
Create a development directory.
Put it anywhere except within the Tomcat installation
hierarchy.
-
Make shortcuts to the Tomcat startup &
shutdown Scripts. Put shortcuts to
install_dir/bin/startup.bat
and install_dir/bin/shutdown.bat in
your development directory and/or on your desktop.
-
Set your class path.
Use the
CLASSPATH environment variable or set the
path in the project settings of your IDE.
Include the current directory ("."), the
servlet/JSP JAR files (install_dir/lib/servlet-api.jar,
and install_dir/lib/jsp-api.jar, and
install_dir/lib/el-api.jar),
and your main development directory from Step 1.
-
Bookmark the servlet & JSP javadocs.
Add
the servlet 2.4 API and
the JSP 2.0 API
to your bookmarks/favorites list.
-
Compile and test some simple servlets.
-
Test a packageless servlet.
Compile a simple servlet, put the .class file
in install_dir/webapps/ROOT/WEB-INF/classes,
and access it with http://localhost/servlet/ServletName.
-
Test a servlet that uses packages.
Compile the servlet, put the .class file
in install_dir/webapps/ROOT/WEB-INF/classes/packageName,
and access it with
http://localhost/servlet/packageName.ServletName.
-
Test a servlet that uses packages and
utility classes.
Compile a servlet, put both the servlet .class file and the
utility file .class file in
install_dir/webapps/ROOT/WEB-INF/classes/packageName,
and access the servlet with
http://localhost/servlet/packageName.ServletName.
This third step verifies
that the
CLASSPATH includes the top level of your
development directory.
-
Establish a simplified deployment method.
-
Copy to a shortcut.
Make a shortcut to install_dir/webapps/ROOT.
Copy packageless .class files directly there.
With packages, copy the entire directory there.
This is the simplest option for beginners, and
the preconfigured
Tomcat version already has a development directory with
these shortcuts.
-
Use the
-d option of
javac. Use -d to
tell Java where the deployment directory is.
-
Let your IDE take care of deployment.
Tell your IDE (Eclipse,
MyEclipse,
NetBeans, JBuilder, etc.) where the deployment directory
is and let it copy the necessary files. Highly recommended!
-
Use
ant or a similar tool.
Use the Apache make-like tool
to automate copying of files.
- Get more info. Access the complete set of
Tomcat docs, get free JSP and servlet tutorials, etc.
Configuring Tomcat involves four main steps and three optional steps:
- Downloading the Tomcat software.
- Setting the
JAVA_HOME variable.
- Changing the port from 8080 to 80.
- Telling Tomcat to reload servlets when they are modified.
- Enabling the invoker servlet.
- Turning on directory listings.
- Using the Windows .exe installer instead of the .zip file.
(Not Recommended)
Details of each step are given below. If Tomcat is already running, restart it
after performing these steps.
Go to
http://tomcat.apache.org/download-60.cgi and download
and unpack the zip file for the current release build of Tomcat 6.
You specify the top-level directory (e.g., C:\) and the zip file
has embedded subdirectories (e.g., apache-tomcat-6.0.10).
Thus, C:\apache-tomcat-6.0.10 is a common resultant installation directory.
Note: from this point forward, I'll refer to that location as install_dir.
For Windows, there is also a .exe installer; I prefer the .zip file,
but see the .exe
installer section for notes on the differences between the two.
Alternatively, you can use my preconfigured Tomcat version:
This preconfigured version already has the port changed to 80,
servlet reloading enabled,
and the invoker servlet turned on.
It also comes with a sample development directory, sample
autoexec.bat file,
startup/shutdown shortcuts, and shortcuts for deploying applications.
Next, you must set the JAVA_HOME environment variable to
tell Tomcat where to find Java. Failing to properly set this variable
prevents Tomcat from compiling JSP pages. This variable should list
the base JDK installation directory, not the bin subdirectory.
For example, on almost any version of Windows, if you use JDK 1.6, you
might put the following line in your C:\autoexec.bat file.
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_10
On Windows XP, you could also go to the Start menu, select Control Panel,
choose System, click on the Advanced tab, press the Environment Variables
button at the bottom, and enter the JAVA_HOME variable
and value directly. On Windows 2000 and NT, you do Start, Settings,
Control Panel, System, then Environment. However, you can use
C:\autoexec.bat
on those versions of Windows also (unless a system administrator h
as set your PC to ignore it).
Assuming you have no other server already running on port 80,
you'll find it convenient to configure Tomcat to run on the
default HTTP port (80) instead of the out-of-the-box port of 8080.
Making this change lets you use URLs of the form
http://localhost/blah instead of http://localhost:8080/blah.
Note that you need admin privileges to make this
change on Unix/Linux. Also note that some versions of Windows
automatically start IIS on port 80. So, if you use XP and
want to use port 80 for Tomcat, you may need to disable IIS
(see the Administrative Tools section of the Control Panel).
To change the port, edit install_dir/conf/server.xml
and change the port attribute of the
Connector element from 8080 to 80, yielding a result similar to that below.
<Connector port="80" protocol="HTTP/1.1"
... >
You can also:
The next step is to tell Tomcat to check the modification dates of
the class files of requested servlets, and reload ones
that have changed since they were loaded into the server's memory.
This slightly degrades performance in deployment situations,
so is turned off by default. However, if you fail to turn it on for
your development server, you'll have to restart the server
every time you recompile a servlet that has already been loaded into
the server's memory. Since this tutorial discusses the
use of Tomcat for development, this change is strongly recommended.
To turn on servlet reloading, edit Edit
install_dir/conf/context.xml and change
<Context>
to
<Context reloadable="true" privileged="true">
Note that the privileged entry is really to support the invoker
servlet (see the following section), so you can omit that entry if you do not
use the invoker.
You can also:
The invoker servlet lets you run servlets without first making
changes to your Web application's deployment descriptor (i.e.,
the WEB-INF/web.xml file). Instead, you just drop your servlet
into WEB-INF/classes and use the URL
http://host/servlet/ServletName
(or http://host/webAppName/servlet/ServletName once
you start using your own Web applications.
The invoker servlet is extremely convenient when you are learning
and testing out various APIs. You almost certainly want to enable it when learning,
but you should disable it again before deploying
any real applications.
To enable the invoker servlet, uncomment the following
servlet and servlet-mapping elements
in install_dir/conf/web.xml. Do not confuse this
Apache Tomcat-specific web.xml file with the standard
one that goes in the WEB-INF directory of each Web application.
<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
...
</servlet>
...
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
In Tomcat 6 (but not Tomcat 5.5), you also need the
privileged="true" entry in the Context
element of context.xml. See the previous
section for an example.
You can also:
In previous Tomcat versions, if you entered a URL ending in a slash
(/) and there was no welcome-file in the directory (or servlet-mapping that matched the URL), Tomcat displayed a directory listing. In Tomcat 6, the default
was changed from true to false for these directory listings. Many developers find it convenient to turn directory listings back on.
To make this change, edit install_dir/conf/web.xml
and change the init-param value of listings for the default servlet,
as below. Do not confuse this
Apache Tomcat-specific web.xml file with the standard
one that goes in the WEB-INF directory of each Web application.
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
You can also:
If you are using Microsoft Windows, you can download a .exe installer
instead of the .zip file discussed in this tutorial.
In my opinion, it is not worth the bother to do so, but some people like it.
If you use it, note these differences:
- It will prompt you for the desired port. It will ask you
what port it should run on, and make the changes
in server.xml for you. You will still need to manually
edit context.xml and web.xml, however.
- It will set
JAVA_HOME for you.
The installer hunts for your Java installation and tries
to set JAVA_HOME appropriately. This is a convenience,
albeit a minor one.
- It will setup Start Menu entries. In particular, instead of
using startup.bat and shutdown.bat,
you can go to the Start Menu, select Apache Tomcat 6.0,
select Monitor Tomcat, and select Start or Stop, as shown
below. I prefer startup.bat and shutdown.bat
so that I can put shortcuts in my development directory
(easier to invoke) and/or the desktop (where I can associate keyboard shortcuts).

|