<?xml version="1.0"?>
<!DOCTYPE document [
  <!ENTITY project SYSTEM "project.xml">
]>
<document url="introduction.html">

    &project;

    <properties>
        <author email="rslifka@sfu.ca">Robert Slifka</author>
        <title>Introduction</title>
    </properties>

<body>


<section name="Introduction">

<p>For administrators and web developers alike, there are some important bits
of information you should familiarize yourself with before starting out. This
document serves as a brief introduction to some of the concepts and
terminology behind the Tomcat container. As well, where to go when you need
help.</p>

</section>


<section name="Terminology">

<p>In the course of reading these documents, you'll run across a number of
terms; some specific to Tomcat, and others defined by the
<a href="http://java.sun.com/products/servlet/">Servlet</a> or
<a href="http://java.sun.com/products/jsp/">JSP</a> specifications.</p>

<ul>
<li><strong>Context</strong> - In a nutshell, a Context is a
    web application.</li>
<li><strong>Term2</strong> - This is it.</li>
<li><strong>Term3</strong> - This is it!</li>
</ul>

</section>


<section name="Directories and Files">

<p>Throughout the docs, you'll notice there are numerous references to
<strong>$CATALINA_HOME</strong>. This represents the root of your Tomcat
installation. When we say, "This information can be found in your
$CATALINA_HOME/README.txt file" we mean to look at the README.txt file at the
root of your Tomcat install.</p>

<p>These are some of the key tomcat directories, all relative
to <strong>$CATALINA_HOME</strong>:</p>

<ul>
<li><strong>/bin</strong> - Startup, shutdown, and other scripts. The
    <code>*.sh</code> files (for Unix systems) are functional duplicates of
    the <code>*.bat</code> files (for Windows systems).  Since the Win32
    command-line lacks certain functionality, there are some additional
    files in here.</li>
<li><strong>/conf</strong> - Configuration files and related DTDs.  The most
    important file in here is server.xml.  It is the main configuration file
    for the container.</li>
<li><strong>/logs</strong> - Log files are here by default.</li>
<li><strong>/webapps</strong> - This is where your webapps go.</li>
</ul>

</section>


<section name="Configuring Tomcat">

<p>This section will acquaint you with the basic information used during
the configuration of the container.</p>

<p>All of the information in the configuration files is read at startup,
meaning that any change to the files necessitates a restart of the container.
</p>

</section>


<section name="Where to Go for Help">

<p>While we've done our best to ensure that these documents are clearly
written and easy to understand, we may have missed something.  Provided
below are various web sites and mailing lists in case you get stuck.</p>

<p>As Tomcat 5 is a new release of Tomcat, keep in mind that some of the
issues and solutions vary between the major versions of Tomcat (4.x versus
5).  As you search around the web, there will be some documentation that
is not relevant to Tomcat 5, but 3.x and 4.x.  Doing 3.x or 4.x things to 5
will probably not work in most cases as the server.xml files are very
different.</p>

<ul>
<li>Current document - most documents will list potential hangups. Be sure
    to fully read the relevant documentation as it will save you much time
    and effort. There's nothing like scouring the web only to find out that
    the answer was right in front of you all along!</li>
<li><a href="http://tomcat.apache.org/faq/">Tomcat FAQ</a> as maintained by the developers.</li>
<li><a href="http://wiki.apache.org/tomcat/">Tomcat WIKI</a></li>
<li>Tomcat FAQ at <a href="http://www.jguru.com/faq/home.jsp?topic=Tomcat">jGuru</a></li>
<li>Tomcat mailing list archives - numerous sites archive the Tomcat mailing
    lists. Since the links change over time, clicking here will search
    <a href="http://www.google.com/search?q=tomcat+mailing+list+archives">Google</a>.
    </li>
<li>The TOMCAT-USER mailing list, which you can subscribe to
    <a href="http://tomcat.apache.org/lists.html">here</a>. If you don't
    get a reply, then there's a good chance that your question was probably
    answered in the list archives or one of the FAQs.  Although questions
    about web application development in general are sometimes asked and
    answered, please focus your questions on Tomcat-specific issues.</li>
<li>The TOMCAT-DEV mailing list, which you can subscribe to
    <a href="http://tomcat.apache.org/lists.html">here</a>.  This list is
    <strong>reserved</strong> for discussions about the development of Tomcat
    itself.  Questions about Tomcat configuration, and the problems you run
    into while developing and running applications, will normally be more
    appropriate on the TOMCAT-USER list instead.</li>
</ul>

<p>And, if you think something should be in the docs, by all means let us know
on the TOMCAT-DEV list, or send one of the doc authors email.</p>

</section>

</body>

</document>
