소스 파일 최초 업로드
This commit is contained in:
508
tomcat/webapps.dist/docs/appdev/build.xml.txt
Normal file
508
tomcat/webapps.dist/docs/appdev/build.xml.txt
Normal file
@@ -0,0 +1,508 @@
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<!--
|
||||
General purpose build script for web applications and web services,
|
||||
including enhanced support for deploying directly to a Tomcat
|
||||
based server.
|
||||
|
||||
This build script assumes that the source code of your web application
|
||||
is organized into the following subdirectories underneath the source
|
||||
code directory from which you execute the build script:
|
||||
|
||||
docs Static documentation files to be copied to
|
||||
the "docs" subdirectory of your distribution.
|
||||
|
||||
src Java source code (and associated resource files)
|
||||
to be compiled to the "WEB-INF/classes"
|
||||
subdirectory of your web application.
|
||||
|
||||
web Static HTML, JSP, and other content (such as
|
||||
image files), including the WEB-INF subdirectory
|
||||
and its configuration file contents.
|
||||
-->
|
||||
|
||||
|
||||
<!-- A "project" describes a set of targets that may be requested
|
||||
when Ant is executed. The "default" attribute defines the
|
||||
target which is executed if no specific target is requested,
|
||||
and the "basedir" attribute defines the current working directory
|
||||
from which Ant executes the requested task. This is normally
|
||||
set to the current working directory.
|
||||
-->
|
||||
|
||||
<project name="My Project" default="compile" basedir=".">
|
||||
|
||||
|
||||
|
||||
<!-- ===================== Property Definitions =========================== -->
|
||||
|
||||
|
||||
<!--
|
||||
|
||||
Each of the following properties are used in the build script.
|
||||
Values for these properties are set by the first place they are
|
||||
defined, from the following list:
|
||||
|
||||
* Definitions on the "ant" command line (ant -Dfoo=bar compile).
|
||||
|
||||
* Definitions from a "build.properties" file in the top level
|
||||
source directory of this application.
|
||||
|
||||
* Definitions from a "build.properties" file in the developer's
|
||||
home directory.
|
||||
|
||||
* Default definitions in this build.xml file.
|
||||
|
||||
You will note below that property values can be composed based on the
|
||||
contents of previously defined properties. This is a powerful technique
|
||||
that helps you minimize the number of changes required when your development
|
||||
environment is modified. Note that property composition is allowed within
|
||||
"build.properties" files as well as in the "build.xml" script.
|
||||
|
||||
-->
|
||||
|
||||
<property file="build.properties"/>
|
||||
<property file="${user.home}/build.properties"/>
|
||||
|
||||
|
||||
<!-- ==================== File and Directory Names ======================== -->
|
||||
|
||||
|
||||
<!--
|
||||
|
||||
These properties generally define file and directory names (or paths) that
|
||||
affect where the build process stores its outputs.
|
||||
|
||||
app.name Base name of this application, used to
|
||||
construct filenames and directories.
|
||||
Defaults to "myapp".
|
||||
|
||||
app.path Context path to which this application should be
|
||||
deployed (defaults to "/" plus the value of the
|
||||
"app.name" property).
|
||||
|
||||
app.version Version number of this iteration of the application.
|
||||
|
||||
build.home The directory into which the "prepare" and
|
||||
"compile" targets will generate their output.
|
||||
Defaults to "build".
|
||||
|
||||
catalina.home The directory in which you have installed
|
||||
a binary distribution of Tomcat. This will
|
||||
be used by the "deploy" target.
|
||||
|
||||
dist.home The name of the base directory in which
|
||||
distribution files are created.
|
||||
Defaults to "dist".
|
||||
|
||||
manager.password The login password of a user that is assigned the
|
||||
"manager-script" role (so that they can execute
|
||||
commands via the "/manager" web application)
|
||||
|
||||
manager.url The URL of the "/manager" web application on the
|
||||
Tomcat installation to which we will deploy web
|
||||
applications and web services.
|
||||
|
||||
manager.username The login username of a user that is assigned the
|
||||
"manager-script" role (so that they can execute
|
||||
commands via the "/manager" web application)
|
||||
|
||||
-->
|
||||
|
||||
<property name="app.name" value="myapp"/>
|
||||
<property name="app.path" value="/${app.name}"/>
|
||||
<property name="app.version" value="0.1-dev"/>
|
||||
<property name="build.home" value="${basedir}/build"/>
|
||||
<property name="catalina.home" value="../../../.."/> <!-- UPDATE THIS! -->
|
||||
<property name="dist.home" value="${basedir}/dist"/>
|
||||
<property name="docs.home" value="${basedir}/docs"/>
|
||||
<property name="manager.url" value="http://localhost:8080/manager/text"/>
|
||||
<property name="src.home" value="${basedir}/src"/>
|
||||
<property name="web.home" value="${basedir}/web"/>
|
||||
|
||||
|
||||
<!-- ==================== External Dependencies =========================== -->
|
||||
|
||||
|
||||
<!--
|
||||
|
||||
Use property values to define the locations of external JAR files on which
|
||||
your application will depend. In general, these values will be used for
|
||||
two purposes:
|
||||
* Inclusion on the classpath that is passed to the Javac compiler
|
||||
* Being copied into the "/WEB-INF/lib" directory during execution
|
||||
of the "deploy" target.
|
||||
|
||||
Because we will automatically include all of the Java classes that Tomcat
|
||||
exposes to web applications, we will not need to explicitly list any of those
|
||||
dependencies. You only need to worry about external dependencies for JAR
|
||||
files that you are going to include inside your "/WEB-INF/lib" directory.
|
||||
|
||||
-->
|
||||
|
||||
<!-- Dummy external dependency -->
|
||||
<!--
|
||||
<property name="foo.jar"
|
||||
value="/path/to/foo.jar"/>
|
||||
-->
|
||||
|
||||
|
||||
<!-- ==================== Compilation Classpath =========================== -->
|
||||
|
||||
<!--
|
||||
|
||||
Rather than relying on the CLASSPATH environment variable, Ant includes
|
||||
features that makes it easy to dynamically construct the classpath you
|
||||
need for each compilation. The example below constructs the compile
|
||||
classpath to include the servlet.jar file, as well as the other components
|
||||
that Tomcat makes available to web applications automatically, plus anything
|
||||
that you explicitly added.
|
||||
|
||||
-->
|
||||
|
||||
<path id="compile.classpath">
|
||||
|
||||
<!-- Include all JAR files that will be included in /WEB-INF/lib -->
|
||||
<!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->
|
||||
<!--
|
||||
<pathelement location="${foo.jar}"/>
|
||||
-->
|
||||
|
||||
<!-- Include all elements that Tomcat exposes to applications -->
|
||||
<fileset dir="${catalina.home}/bin">
|
||||
<include name="*.jar"/>
|
||||
</fileset>
|
||||
<pathelement location="${catalina.home}/lib"/>
|
||||
<fileset dir="${catalina.home}/lib">
|
||||
<include name="*.jar"/>
|
||||
</fileset>
|
||||
|
||||
</path>
|
||||
|
||||
|
||||
|
||||
<!-- ================== Custom Ant Task Definitions ======================= -->
|
||||
|
||||
|
||||
<!--
|
||||
|
||||
These properties define custom tasks for the Ant build tool that interact
|
||||
with the "/manager" web application installed with Tomcat. Before they
|
||||
can be successfully utilized, you must perform the following steps:
|
||||
|
||||
- Copy the file "lib/catalina-ant.jar" from your Tomcat
|
||||
installation into the "lib" directory of your Ant installation.
|
||||
|
||||
- Create a "build.properties" file in your application's top-level
|
||||
source directory (or your user login home directory) that defines
|
||||
appropriate values for the "manager.password", "manager.url", and
|
||||
"manager.username" properties described above.
|
||||
|
||||
For more information about the Manager web application, and the functionality
|
||||
of these tasks, see <http://localhost:8080/tomcat-docs/manager-howto.html>.
|
||||
|
||||
-->
|
||||
|
||||
<taskdef resource="org/apache/catalina/ant/catalina.tasks"
|
||||
classpathref="compile.classpath"/>
|
||||
|
||||
|
||||
<!-- ==================== Compilation Control Options ==================== -->
|
||||
|
||||
<!--
|
||||
|
||||
These properties control option settings on the Javac compiler when it
|
||||
is invoked using the <javac> task.
|
||||
|
||||
compile.debug Should compilation include the debug option?
|
||||
|
||||
compile.deprecation Should compilation include the deprecation option?
|
||||
|
||||
-->
|
||||
|
||||
<property name="compile.debug" value="true"/>
|
||||
<property name="compile.deprecation" value="false"/>
|
||||
|
||||
|
||||
|
||||
<!-- ==================== All Target ====================================== -->
|
||||
|
||||
<!--
|
||||
|
||||
The "all" target is a shortcut for running the "clean" target followed
|
||||
by the "compile" target, to force a complete recompile.
|
||||
|
||||
-->
|
||||
|
||||
<target name="all" depends="clean,compile"
|
||||
description="Clean build and dist directories, then compile"/>
|
||||
|
||||
|
||||
|
||||
<!-- ==================== Clean Target ==================================== -->
|
||||
|
||||
<!--
|
||||
|
||||
The "clean" target deletes any previous "build" and "dist" directory,
|
||||
so that you can be ensured the application can be built from scratch.
|
||||
|
||||
-->
|
||||
|
||||
<target name="clean"
|
||||
description="Delete old build and dist directories">
|
||||
<delete dir="${build.home}"/>
|
||||
<delete dir="${dist.home}"/>
|
||||
</target>
|
||||
|
||||
|
||||
|
||||
<!-- ==================== Compile Target ================================== -->
|
||||
|
||||
<!--
|
||||
|
||||
The "compile" target transforms source files (from your "src" directory)
|
||||
into object files in the appropriate location in the build directory.
|
||||
This example assumes that you will be including your classes in an
|
||||
unpacked directory hierarchy under "/WEB-INF/classes".
|
||||
|
||||
-->
|
||||
|
||||
<target name="compile" depends="prepare"
|
||||
description="Compile Java sources">
|
||||
|
||||
<!-- Compile Java classes as necessary -->
|
||||
<mkdir dir="${build.home}/WEB-INF/classes"/>
|
||||
<javac srcdir="${src.home}"
|
||||
destdir="${build.home}/WEB-INF/classes"
|
||||
debug="${compile.debug}"
|
||||
deprecation="${compile.deprecation}">
|
||||
<classpath refid="compile.classpath"/>
|
||||
</javac>
|
||||
|
||||
<!-- Copy application resources -->
|
||||
<copy todir="${build.home}/WEB-INF/classes">
|
||||
<fileset dir="${src.home}" excludes="**/*.java"/>
|
||||
</copy>
|
||||
|
||||
</target>
|
||||
|
||||
|
||||
|
||||
<!-- ==================== Dist Target ===================================== -->
|
||||
|
||||
|
||||
<!--
|
||||
|
||||
The "dist" target creates a binary distribution of your application
|
||||
in a directory structure ready to be archived in a tar.gz or zip file.
|
||||
Note that this target depends on two others:
|
||||
|
||||
* "compile" so that the entire web application (including external
|
||||
dependencies) will have been assembled
|
||||
|
||||
* "javadoc" so that the application Javadocs will have been created
|
||||
|
||||
-->
|
||||
|
||||
<target name="dist" depends="compile,javadoc"
|
||||
description="Create binary distribution">
|
||||
|
||||
<!-- Copy documentation subdirectories -->
|
||||
<mkdir dir="${dist.home}/docs"/>
|
||||
<copy todir="${dist.home}/docs">
|
||||
<fileset dir="${docs.home}"/>
|
||||
</copy>
|
||||
|
||||
<!-- Create application JAR file -->
|
||||
<jar jarfile="${dist.home}/${app.name}-${app.version}.war"
|
||||
basedir="${build.home}"/>
|
||||
|
||||
<!-- Copy additional files to ${dist.home} as necessary -->
|
||||
|
||||
</target>
|
||||
|
||||
|
||||
|
||||
<!-- ==================== Install Target ================================== -->
|
||||
|
||||
<!--
|
||||
|
||||
The "install" target tells the specified Tomcat installation to dynamically
|
||||
install this web application and make it available for execution. It does
|
||||
*not* cause the existence of this web application to be remembered across
|
||||
Tomcat restarts; if you restart the server, you will need to re-install all
|
||||
this web application.
|
||||
|
||||
If you have already installed this application, and simply want Tomcat to
|
||||
recognize that you have updated Java classes (or the web.xml file), use the
|
||||
"reload" target instead.
|
||||
|
||||
NOTE: This target will only succeed if it is run from the same server that
|
||||
Tomcat is running on.
|
||||
|
||||
NOTE: This is the logical opposite of the "remove" target.
|
||||
|
||||
-->
|
||||
|
||||
<target name="install" depends="compile"
|
||||
description="Install application to servlet container">
|
||||
|
||||
<deploy url="${manager.url}"
|
||||
username="${manager.username}"
|
||||
password="${manager.password}"
|
||||
path="${app.path}"
|
||||
localWar="file://${build.home}"/>
|
||||
|
||||
</target>
|
||||
|
||||
|
||||
<!-- ==================== Javadoc Target ================================== -->
|
||||
|
||||
<!--
|
||||
|
||||
The "javadoc" target creates Javadoc API documentation for the Java
|
||||
classes included in your application. Normally, this is only required
|
||||
when preparing a distribution release, but is available as a separate
|
||||
target in case the developer wants to create Javadocs independently.
|
||||
|
||||
-->
|
||||
|
||||
<target name="javadoc" depends="compile"
|
||||
description="Create Javadoc API documentation">
|
||||
|
||||
<mkdir dir="${dist.home}/docs/api"/>
|
||||
<javadoc sourcepath="${src.home}"
|
||||
destdir="${dist.home}/docs/api"
|
||||
packagenames="*">
|
||||
<classpath refid="compile.classpath"/>
|
||||
</javadoc>
|
||||
|
||||
</target>
|
||||
|
||||
|
||||
|
||||
<!-- ====================== List Target =================================== -->
|
||||
|
||||
<!--
|
||||
|
||||
The "list" target asks the specified Tomcat installation to list the
|
||||
currently running web applications, either loaded at startup time or
|
||||
installed dynamically. It is useful to determine whether or not the
|
||||
application you are currently developing has been installed.
|
||||
|
||||
-->
|
||||
|
||||
<target name="list"
|
||||
description="List installed applications on servlet container">
|
||||
|
||||
<list url="${manager.url}"
|
||||
username="${manager.username}"
|
||||
password="${manager.password}"/>
|
||||
|
||||
</target>
|
||||
|
||||
|
||||
<!-- ==================== Prepare Target ================================== -->
|
||||
|
||||
<!--
|
||||
|
||||
The "prepare" target is used to create the "build" destination directory,
|
||||
and copy the static contents of your web application to it. If you need
|
||||
to copy static files from external dependencies, you can customize the
|
||||
contents of this task.
|
||||
|
||||
Normally, this task is executed indirectly when needed.
|
||||
|
||||
-->
|
||||
|
||||
<target name="prepare">
|
||||
|
||||
<!-- Create build directories as needed -->
|
||||
<mkdir dir="${build.home}"/>
|
||||
<mkdir dir="${build.home}/WEB-INF"/>
|
||||
<mkdir dir="${build.home}/WEB-INF/classes"/>
|
||||
|
||||
|
||||
<!-- Copy static content of this web application -->
|
||||
<copy todir="${build.home}">
|
||||
<fileset dir="${web.home}"/>
|
||||
</copy>
|
||||
|
||||
<!-- Copy external dependencies as required -->
|
||||
<!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->
|
||||
<mkdir dir="${build.home}/WEB-INF/lib"/>
|
||||
<!--
|
||||
<copy todir="${build.home}/WEB-INF/lib" file="${foo.jar}"/>
|
||||
-->
|
||||
|
||||
<!-- Copy static files from external dependencies as needed -->
|
||||
<!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->
|
||||
|
||||
</target>
|
||||
|
||||
|
||||
<!-- ==================== Reload Target =================================== -->
|
||||
|
||||
<!--
|
||||
|
||||
The "reload" signals the specified application Tomcat to shut itself down
|
||||
and reload. This can be useful when the web application context is not
|
||||
reloadable and you have updated classes or property files in the
|
||||
/WEB-INF/classes directory or when you have added or updated jar files in the
|
||||
/WEB-INF/lib directory.
|
||||
|
||||
NOTE: The /WEB-INF/web.xml web application configuration file is not reread
|
||||
on a reload. If you have made changes to your web.xml file you must stop
|
||||
then start the web application.
|
||||
|
||||
-->
|
||||
|
||||
<target name="reload" depends="compile"
|
||||
description="Reload application on servlet container">
|
||||
|
||||
<reload url="${manager.url}"
|
||||
username="${manager.username}"
|
||||
password="${manager.password}"
|
||||
path="${app.path}"/>
|
||||
|
||||
</target>
|
||||
|
||||
|
||||
<!-- ==================== Remove Target =================================== -->
|
||||
|
||||
<!--
|
||||
|
||||
The "remove" target tells the specified Tomcat installation to dynamically
|
||||
remove this web application from service.
|
||||
|
||||
NOTE: This is the logical opposite of the "install" target.
|
||||
|
||||
-->
|
||||
|
||||
<target name="remove"
|
||||
description="Remove application on servlet container">
|
||||
|
||||
<undeploy url="${manager.url}"
|
||||
username="${manager.username}"
|
||||
password="${manager.password}"
|
||||
path="${app.path}"/>
|
||||
|
||||
</target>
|
||||
|
||||
|
||||
</project>
|
||||
202
tomcat/webapps.dist/docs/appdev/deployment.html
Normal file
202
tomcat/webapps.dist/docs/appdev/deployment.html
Normal file
@@ -0,0 +1,202 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="../images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Application Developer's Guide (9.0.74) - Deployment</title><meta name="author" content="Craig R. McClanahan"></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="../images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="../images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Application Developer's Guide</h1><div class="versionInfo">
|
||||
Version 9.0.74,
|
||||
<time datetime="2023-04-13">Apr 13 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">App Dev Guide Home</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>Contents</h2><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></div></nav></div></div><div id="mainRight"><div id="content"><h2>Deployment</h2><h3 id="Table_of_Contents">Table of Contents</h3><div class="text">
|
||||
<ul><li><a href="#Background">Background</a></li><li><a href="#Standard_Directory_Layout">Standard Directory Layout</a></li><li><a href="#Shared_Library_Files">Shared Library Files</a></li><li><a href="#Web_Application_Deployment_Descriptor">Web Application Deployment Descriptor</a></li><li><a href="#Tomcat_Context_Descriptor">Tomcat Context Descriptor</a></li><li><a href="#Deployment_With_Tomcat">Deployment With Tomcat</a></li></ul>
|
||||
</div><h3 id="Background">Background</h3><div class="text">
|
||||
|
||||
<p>Before describing how to organize your source code directories,
|
||||
it is useful to examine the runtime organization of a web application.
|
||||
Prior to the Servlet API Specification, version 2.2, there was little
|
||||
consistency between server platforms. However, servers that conform
|
||||
to the 2.2 (or later) specification are required to accept a
|
||||
<em>Web Application Archive</em> in a standard format, which is discussed
|
||||
further below.</p>
|
||||
|
||||
<p>A web application is defined as a hierarchy of directories and files
|
||||
in a standard layout. Such a hierarchy can be accessed in its "unpacked"
|
||||
form, where each directory and file exists in the filesystem separately,
|
||||
or in a "packed" form known as a Web ARchive, or WAR file. The former format
|
||||
is more useful during development, while the latter is used when you
|
||||
distribute your application to be installed.</p>
|
||||
|
||||
<p>The top-level directory of your web application hierarchy is also the
|
||||
<em>document root</em> of your application. Here, you will place the HTML
|
||||
files and JSP pages that comprise your application's user interface. When the
|
||||
system administrator deploys your application into a particular server, they
|
||||
assign a <em>context path</em> to your application (a later section
|
||||
of this manual describes deployment on Tomcat). Thus, if the
|
||||
system administrator assigns your application to the context path
|
||||
<code>/catalog</code>, then a request URI referring to
|
||||
<code>/catalog/index.html</code> will retrieve the <code>index.html</code>
|
||||
file from your document root.</p>
|
||||
|
||||
</div><h3 id="Standard_Directory_Layout">Standard Directory Layout</h3><div class="text">
|
||||
|
||||
<p>To facilitate creation of a Web Application Archive file in the required
|
||||
format, it is convenient to arrange the "executable" files of your web
|
||||
application (that is, the files that Tomcat actually uses when executing
|
||||
your app) in the same organization as required by the WAR format itself.
|
||||
To do this, you will end up with the following contents in your
|
||||
application's "document root" directory:</p>
|
||||
<ul>
|
||||
<li><strong>*.html, *.jsp, etc.</strong> - The HTML and JSP pages, along
|
||||
with other files that must be visible to the client browser (such as
|
||||
JavaScript, stylesheet files, and images) for your application.
|
||||
In larger applications you may choose to divide these files into
|
||||
a subdirectory hierarchy, but for smaller apps, it is generally
|
||||
much simpler to maintain only a single directory for these files.
|
||||
<br><br></li>
|
||||
<li><strong>/WEB-INF/web.xml</strong> - The <em>Web Application Deployment
|
||||
Descriptor</em> for your application. This is an XML file describing
|
||||
the servlets and other components that make up your application,
|
||||
along with any initialization parameters and container-managed
|
||||
security constraints that you want the server to enforce for you.
|
||||
This file is discussed in more detail in the following subsection.
|
||||
<br><br></li>
|
||||
<li><strong>/WEB-INF/classes/</strong> - This directory contains any Java
|
||||
class files (and associated resources) required for your application,
|
||||
including both servlet and non-servlet classes, that are not combined
|
||||
into JAR files. If your classes are organized into Java packages,
|
||||
you must reflect this in the directory hierarchy under
|
||||
<code>/WEB-INF/classes/</code>. For example, a Java class named
|
||||
<code>com.mycompany.mypackage.MyServlet</code>
|
||||
would need to be stored in a file named
|
||||
<code>/WEB-INF/classes/com/mycompany/mypackage/MyServlet.class</code>.
|
||||
<br><br></li>
|
||||
<li><strong>/WEB-INF/lib/</strong> - This directory contains JAR files that
|
||||
contain Java class files (and associated resources) required for your
|
||||
application, such as third party class libraries or JDBC drivers.</li>
|
||||
</ul>
|
||||
|
||||
<p>When you install an application into Tomcat (or any other 2.2 or later
|
||||
Servlet container), the classes in the <code>WEB-INF/classes/</code>
|
||||
directory, as well as all classes in JAR files found in the
|
||||
<code>WEB-INF/lib/</code> directory, are made visible to other classes
|
||||
within your particular web application. Thus, if
|
||||
you include all of the required library classes in one of these places (be
|
||||
sure to check licenses for redistribution rights for any third party libraries
|
||||
you utilize), you will simplify the installation of your web application --
|
||||
no adjustment to the system class path (or installation of global library
|
||||
files in your server) will be necessary.</p>
|
||||
|
||||
<p>Much of this information was extracted from Chapter 9 of the Servlet
|
||||
API Specification, version 2.3, which you should consult for more details.</p>
|
||||
|
||||
</div><h3 id="Shared_Library_Files">Shared Library Files</h3><div class="text">
|
||||
|
||||
<p>Like most servlet containers, Tomcat also supports mechanisms to install
|
||||
library JAR files (or unpacked classes) once, and make them visible to all
|
||||
installed web applications (without having to be included inside the web
|
||||
application itself). The details of how Tomcat locates and shares such
|
||||
classes are described in the
|
||||
<a href="../class-loader-howto.html">Class Loader How-To</a> documentation.
|
||||
The location commonly used within a Tomcat installation for shared code is
|
||||
<strong>$CATALINA_HOME/lib</strong>. JAR files placed here are visible both to
|
||||
web applications and internal Tomcat code. This is a good place to put JDBC
|
||||
drivers that are required for both your application or internal Tomcat use
|
||||
(such as for a DataSourceRealm).</p>
|
||||
|
||||
<p>Out of the box, a standard Tomcat installation includes a variety
|
||||
of pre-installed shared library files, including:</p>
|
||||
<ul>
|
||||
<li>The <em>Servlet 4.0</em> and <em>JSP 2.3</em> APIs that are fundamental
|
||||
to writing servlets and JavaServer Pages.<br><br></li>
|
||||
</ul>
|
||||
|
||||
</div><h3 id="Web_Application_Deployment_Descriptor">Web Application Deployment Descriptor</h3><div class="text">
|
||||
|
||||
<p>As mentioned above, the <code>/WEB-INF/web.xml</code> file contains the
|
||||
Web Application Deployment Descriptor for your application. As the filename
|
||||
extension implies, this file is an XML document, and defines everything about
|
||||
your application that a server needs to know (except the <em>context path</em>,
|
||||
which is assigned by the system administrator when the application is
|
||||
deployed).</p>
|
||||
|
||||
<p>The complete syntax and semantics for the deployment descriptor is defined
|
||||
in Chapter 13 of the Servlet API Specification, version 2.3. Over time, it
|
||||
is expected that development tools will be provided that create and edit the
|
||||
deployment descriptor for you. In the meantime, to provide a starting point,
|
||||
a <a href="web.xml.txt" target="_blank">basic web.xml file</a>
|
||||
is provided. This file includes comments that describe the purpose of each
|
||||
included element.</p>
|
||||
|
||||
<p><strong>NOTE</strong> - The Servlet Specification includes a Document
|
||||
Type Descriptor (DTD) for the web application deployment descriptor, and
|
||||
Tomcat enforces the rules defined here when processing your application's
|
||||
<code>/WEB-INF/web.xml</code> file. In particular, you <strong>must</strong>
|
||||
enter your descriptor elements (such as <code><filter></code>,
|
||||
<code><servlet></code>, and <code><servlet-mapping></code> in
|
||||
the order defined by the DTD (see Section 13.3).</p>
|
||||
|
||||
</div><h3 id="Tomcat_Context_Descriptor">Tomcat Context Descriptor</h3><div class="text">
|
||||
|
||||
<p>A /META-INF/context.xml file can be used to define Tomcat specific
|
||||
configuration options, such as an access log, data sources, session manager
|
||||
configuration and more. This XML file must contain one Context element, which
|
||||
will be considered as if it was the child of the Host element corresponding
|
||||
to the Host to which the web application is being deployed. The
|
||||
<a href="../config/context.html">Tomcat configuration documentation</a> contains
|
||||
information on the Context element.</p>
|
||||
|
||||
</div><h3 id="Deployment_With_Tomcat">Deployment With Tomcat</h3><div class="text">
|
||||
|
||||
<p><em>The description below uses the variable name $CATALINA_BASE to refer the
|
||||
base directory against which most relative paths are resolved. If you have
|
||||
not configured Tomcat for multiple instances by setting a CATALINA_BASE
|
||||
directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,
|
||||
the directory into which you have installed Tomcat.</em></p>
|
||||
|
||||
<p>In order to be executed, a web application must be deployed on
|
||||
a servlet container. This is true even during development.
|
||||
We will describe using Tomcat to provide the execution environment.
|
||||
A web application can be deployed in Tomcat by one of the following
|
||||
approaches:</p>
|
||||
<ul>
|
||||
<li><em>Copy unpacked directory hierarchy into a subdirectory in directory
|
||||
<code>$CATALINA_BASE/webapps/</code></em>. Tomcat will assign a
|
||||
context path to your application based on the subdirectory name you
|
||||
choose. We will use this technique in the <code>build.xml</code>
|
||||
file that we construct, because it is the quickest and easiest approach
|
||||
during development. Be sure to restart Tomcat after installing or
|
||||
updating your application.
|
||||
<br><br></li>
|
||||
<li><em>Copy the web application archive file into directory
|
||||
<code>$CATALINA_BASE/webapps/</code></em>. When Tomcat is started, it will
|
||||
automatically expand the web application archive file into its unpacked
|
||||
form, and execute the application that way. This approach would typically
|
||||
be used to install an additional application, provided by a third party
|
||||
vendor or by your internal development staff, into an existing
|
||||
Tomcat installation. <strong>NOTE</strong> - If you use this approach,
|
||||
and wish to update your application later, you must both replace the
|
||||
web application archive file <strong>AND</strong> delete the expanded
|
||||
directory that Tomcat created, and then restart Tomcat, in order to reflect
|
||||
your changes.
|
||||
<br><br></li>
|
||||
<li><em>Use the Tomcat "Manager" web application to deploy and undeploy
|
||||
web applications</em>. Tomcat includes a web application, deployed
|
||||
by default on context path <code>/manager</code>, that allows you to
|
||||
deploy and undeploy applications on a running Tomcat server without
|
||||
restarting it. See <a href="../manager-howto.html">Manager App How-To</a>
|
||||
for more information on using the Manager web application.<br><br></li>
|
||||
<li><em>Use "Manager" Ant Tasks In Your Build Script</em>. Tomcat
|
||||
includes a set of custom task definitions for the <code>Ant</code>
|
||||
build tool that allow you to automate the execution of commands to the
|
||||
"Manager" web application. These tasks are used in the Tomcat deployer.
|
||||
<br><br></li>
|
||||
<li><em>Use the Tomcat Deployer</em>. Tomcat includes a packaged tool
|
||||
bundling the Ant tasks, and can be used to automatically precompile JSPs
|
||||
which are part of the web application before deployment to the server.
|
||||
<br><br></li>
|
||||
</ul>
|
||||
|
||||
<p>Deploying your app on other servlet containers will be specific to each
|
||||
container, but all containers compatible with the Servlet API Specification
|
||||
(version 2.2 or later) are required to accept a web application archive file.
|
||||
Note that other containers are <strong>NOT</strong> required to accept an
|
||||
unpacked directory structure (as Tomcat does), or to provide mechanisms for
|
||||
shared library files, but these features are commonly available.</p>
|
||||
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|
||||
45
tomcat/webapps.dist/docs/appdev/index.html
Normal file
45
tomcat/webapps.dist/docs/appdev/index.html
Normal file
@@ -0,0 +1,45 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="../images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Application Developer's Guide (9.0.74) - Table of Contents</title><meta name="author" content="Craig R. McClanahan"></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="../images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="../images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Application Developer's Guide</h1><div class="versionInfo">
|
||||
Version 9.0.74,
|
||||
<time datetime="2023-04-13">Apr 13 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">App Dev Guide Home</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>Contents</h2><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></div></nav></div></div><div id="mainRight"><div id="content"><h2>Table of Contents</h2><h3 id="Preface">Preface</h3><div class="text">
|
||||
|
||||
<p>This manual includes contributions from many members of the Tomcat Project
|
||||
developer community. The following authors have provided significant content:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Craig R. McClanahan
|
||||
(<a href="mailto:craigmcc@apache.org">craigmcc@apache.org</a>)</li>
|
||||
</ul>
|
||||
|
||||
</div><h3 id="Table_of_Contents">Table of Contents</h3><div class="text">
|
||||
|
||||
<p>The information presented is divided into the following sections:</p>
|
||||
<ul>
|
||||
<li><a href="introduction.html"><strong>Introduction</strong></a> -
|
||||
Briefly describes the information covered here, with
|
||||
links and references to other sources of information.</li>
|
||||
<li><a href="installation.html"><strong>Installation</strong></a> -
|
||||
Covers acquiring and installing the required software
|
||||
components to use Tomcat for web application development.</li>
|
||||
<li><a href="deployment.html"><strong>Deployment Organization</strong></a> -
|
||||
Discusses the standard directory layout for a web application
|
||||
(defined in the Servlet API Specification), the Web Application
|
||||
Deployment Descriptor, and options for integration with Tomcat
|
||||
in your development environment.</li>
|
||||
<li><a href="source.html"><strong>Source Organization</strong></a> -
|
||||
Describes a useful approach to organizing the source code
|
||||
directories for your project, and introduces the
|
||||
<code>build.xml</code> used by Ant to manage compilation.</li>
|
||||
<li><a href="processes.html"><strong>Development Processes</strong></a> -
|
||||
Provides brief descriptions of typical development processes
|
||||
utilizing the recommended deployment and source organizations.</li>
|
||||
<li><a href="sample/" target="_blank"><strong>Example Application</strong></a> -
|
||||
This directory contains a very simple, but functionally complete,
|
||||
"Hello, World" application built according to the principles
|
||||
described in this manual. You can use this application to
|
||||
practice using the described techniques.</li>
|
||||
</ul>
|
||||
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|
||||
71
tomcat/webapps.dist/docs/appdev/installation.html
Normal file
71
tomcat/webapps.dist/docs/appdev/installation.html
Normal file
@@ -0,0 +1,71 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="../images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Application Developer's Guide (9.0.74) - Installation</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Yoav Shapira"></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="../images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="../images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Application Developer's Guide</h1><div class="versionInfo">
|
||||
Version 9.0.74,
|
||||
<time datetime="2023-04-13">Apr 13 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">App Dev Guide Home</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>Contents</h2><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></div></nav></div></div><div id="mainRight"><div id="content"><h2>Installation</h2><h3 id="Installation">Installation</h3><div class="text">
|
||||
|
||||
<p>In order to use Tomcat for developing web applications, you must first
|
||||
install it (and the software it depends on). The required steps are outlined
|
||||
in the following subsections.</p>
|
||||
|
||||
<div class="subsection"><h4 id="JDK">JDK</h4><div class="text">
|
||||
|
||||
<p>Tomcat 9.0 was designed to run on Java SE 8 or later.
|
||||
</p>
|
||||
|
||||
<p>Compatible JDKs for many platforms (or links to where they can be found)
|
||||
are available at
|
||||
<a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">http://www.oracle.com/technetwork/java/javase/downloads/index.html</a>.</p>
|
||||
|
||||
</div></div>
|
||||
|
||||
<div class="subsection"><h4 id="Tomcat">Tomcat</h4><div class="text">
|
||||
|
||||
<p>Binary downloads of the <strong>Tomcat</strong> server are available from
|
||||
<a href="https://tomcat.apache.org/">https://tomcat.apache.org/</a>.
|
||||
This manual assumes you are using the most recent release
|
||||
of Tomcat 9. Detailed instructions for downloading and installing
|
||||
Tomcat are available <a href="../setup.html">here</a>.</p>
|
||||
|
||||
<p>In the remainder of this manual, example shell scripts assume that you have
|
||||
set an environment variable <code>CATALINA_HOME</code> that contains the
|
||||
pathname to the directory in which Tomcat has been installed. Optionally, if
|
||||
Tomcat has been configured for multiple instances, each instance will have its
|
||||
own <code>CATALINA_BASE</code> configured.</p>
|
||||
|
||||
</div></div>
|
||||
|
||||
|
||||
<div class="subsection"><h4 id="Ant">Ant</h4><div class="text">
|
||||
|
||||
<p>Binary downloads of the <strong>Ant</strong> build tool are available from
|
||||
<a href="https://ant.apache.org/">https://ant.apache.org/</a>.
|
||||
This manual assumes you are using Ant 1.8 or later. The instructions may
|
||||
also be compatible with other versions, but this has not been tested.</p>
|
||||
|
||||
<p>Download and install Ant.
|
||||
Then, add the <code>bin</code> directory of the Ant distribution to your
|
||||
<code>PATH</code> environment variable, following the standard practices for
|
||||
your operating system platform. Once you have done this, you will be able to
|
||||
execute the <code>ant</code> shell command directly.</p>
|
||||
|
||||
</div></div>
|
||||
|
||||
|
||||
<div class="subsection"><h4 id="Source_Code_Control">Source Code Control</h4><div class="text">
|
||||
|
||||
<p>Besides the required tools described above, you are strongly encouraged
|
||||
to download and install a <em>source code control</em> system, such as Git,
|
||||
Subversion, CVS or one of the many alternatives. You will need appropriate
|
||||
client tools to check out source code files, and check in modified versions and,
|
||||
depending on the tool and hosting option you choose, you may need to obtain and
|
||||
install server software or sign up for an account with a cloud provider.</p>
|
||||
|
||||
<p>Detailed instructions for installing and using source code control
|
||||
applications is beyond the scope of this manual.</p>
|
||||
|
||||
</div></div>
|
||||
|
||||
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|
||||
58
tomcat/webapps.dist/docs/appdev/introduction.html
Normal file
58
tomcat/webapps.dist/docs/appdev/introduction.html
Normal file
@@ -0,0 +1,58 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="../images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Application Developer's Guide (9.0.74) - Introduction</title><meta name="author" content="Craig R. McClanahan"></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="../images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="../images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Application Developer's Guide</h1><div class="versionInfo">
|
||||
Version 9.0.74,
|
||||
<time datetime="2023-04-13">Apr 13 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">App Dev Guide Home</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>Contents</h2><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></div></nav></div></div><div id="mainRight"><div id="content"><h2>Introduction</h2><h3 id="Overview">Overview</h3><div class="text">
|
||||
|
||||
<p>Congratulations! You've decided to (or been told to) learn how to
|
||||
build web applications using servlets and JSP pages, and picked the
|
||||
Tomcat server to use for your learning and development. But now what
|
||||
do you do?</p>
|
||||
|
||||
<p>This manual is a primer covering the basic steps of using Tomcat to
|
||||
set up a development environment, organize your source code, and then
|
||||
build and test your application. It does not discuss architectures or
|
||||
recommended coding practices for web application development,
|
||||
or provide in depth instructions on operating the development
|
||||
tools that are discussed. References to sources of additional information
|
||||
are included in the following subsections.</p>
|
||||
|
||||
<p>The discussion in this manual is aimed at developers who will be using
|
||||
a text editor along with command line tools to develop and debug their
|
||||
applications. As such, the recommendations are fairly generic – but you
|
||||
should easily be able to apply them in either a Windows-based or Unix-based
|
||||
development environment. If you are utilizing an Integrated Development
|
||||
Environment (IDE) tool, you will need to adapt the advice given here to
|
||||
the details of your particular environment.</p>
|
||||
|
||||
</div><h3 id="Links">Links</h3><div class="text">
|
||||
|
||||
<p>The following links provide access to selected sources of online
|
||||
information, documentation, and software that is useful in developing
|
||||
web applications with Tomcat.</p>
|
||||
<ul>
|
||||
<li><p><a href="https://jcp.org/aboutJava/communityprocess/mrel/jsr245/index2.html">https://jcp.org/aboutJava/communityprocess/mrel/jsr245/index2.html</a> -
|
||||
<i>JavaServer Pages (JSP) Specification, Version 2.3</i>. Describes
|
||||
the programming environment provided by standard implementations
|
||||
of the JavaServer Pages (JSP) technology. In conjunction with
|
||||
the Servlet API Specification (see below), this document describes
|
||||
what a portable API page is allowed to contain. Specific
|
||||
information on scripting (Chapter 9), tag extensions (Chapter 7),
|
||||
and packaging JSP pages (Appendix A) is useful. The Javadoc
|
||||
API Documentation is included in the specification, and with the
|
||||
Tomcat download.</p></li>
|
||||
<li><p><a href="https://jcp.org/aboutJava/communityprocess/final/jsr369/index.html">https://jcp.org/aboutJava/communityprocess/final/jsr369/index.html</a> -
|
||||
<i>Servlet API Specification, Version 4.0</i>. Describes the
|
||||
programming environment that must be provided by all servlet
|
||||
containers conforming to this specification. In particular, you
|
||||
will need this document to understand the web application
|
||||
directory structure and deployment file (Chapter 10), methods of
|
||||
mapping request URIs to servlets (Chapter 12), container managed
|
||||
security (Chapter 13), and the syntax of the <code>web.xml</code>
|
||||
Web Application Deployment Descriptor (Chapter 14). The Javadoc
|
||||
API Documentation is included in the specification, and with the
|
||||
Tomcat download.</p></li>
|
||||
</ul>
|
||||
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|
||||
259
tomcat/webapps.dist/docs/appdev/processes.html
Normal file
259
tomcat/webapps.dist/docs/appdev/processes.html
Normal file
@@ -0,0 +1,259 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="../images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Application Developer's Guide (9.0.74) - Development Processes</title><meta name="author" content="Craig R. McClanahan"></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="../images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="../images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Application Developer's Guide</h1><div class="versionInfo">
|
||||
Version 9.0.74,
|
||||
<time datetime="2023-04-13">Apr 13 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">App Dev Guide Home</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>Contents</h2><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></div></nav></div></div><div id="mainRight"><div id="content"><h2>Development Processes</h2><h3 id="Table_of_Contents">Table of Contents</h3><div class="text">
|
||||
<ul><li><a href="#Development_Processes">Development Processes</a><ol><li><a href="#One-Time_Setup_of_Ant_and_Tomcat_for_Development">One-Time Setup of Ant and Tomcat for Development</a></li><li><a href="#Create_Project_Source_Code_Directory">Create Project Source Code Directory</a></li><li><a href="#Edit_Source_Code_and_Pages">Edit Source Code and Pages</a></li><li><a href="#Build_the_Web_Application">Build the Web Application</a></li><li><a href="#Test_Your_Web_Application">Test Your Web Application</a></li><li><a href="#Creating_a_Release">Creating a Release</a></li></ol></li></ul>
|
||||
</div><h3 id="Development_Processes">Development Processes</h3><div class="text">
|
||||
|
||||
<p>Although application development can take many forms, this manual proposes
|
||||
a fairly generic process for creating web applications using Tomcat. The
|
||||
following sections highlight the commands and tasks that you, as the developer
|
||||
of the code, will perform. The same basic approach works when you have
|
||||
multiple programmers involved, as long as you have an appropriate source code
|
||||
control system and internal team rules about who is working on what parts
|
||||
of the application at any given time.</p>
|
||||
|
||||
<p>The task descriptions below do not assume any particular source code control
|
||||
system but simply identify when and what source code control tasks are typically
|
||||
performed. You will need to idenitfy the appropriate source code control
|
||||
commands for your system.</p>
|
||||
|
||||
|
||||
<div class="subsection"><h4 id="One-Time_Setup_of_Ant_and_Tomcat_for_Development">One-Time Setup of Ant and Tomcat for Development</h4><div class="text">
|
||||
|
||||
<p>In order to take advantage of the special Ant tasks that interact with the
|
||||
<em>Manager</em> web application, you need to perform the following tasks
|
||||
once (no matter how many web applications you plan to develop).</p>
|
||||
<ul>
|
||||
<li><p><em>Configure the Ant custom tasks</em>. The implementation code for the
|
||||
Ant custom tasks is in a JAR file named
|
||||
<code>$CATALINA_HOME/lib/catalina-ant.jar</code>, which must be
|
||||
copied in to the <code>lib</code> directory of your Ant installation.
|
||||
</p></li>
|
||||
<li><p><em>Define one or more Tomcat users</em>. The <em>Manager</em> web
|
||||
application runs under a security constraint that requires a user to be
|
||||
logged in, and have the security role <code>manager-script</code> assigned
|
||||
to then. How such users are defined depends on which Realm you have
|
||||
configured in Tomcat's <code>conf/server.xml</code> file -- see the
|
||||
<a href="../realm-howto.html">Realm Configuration How-To</a> for more
|
||||
information. You may define any number of users (with any username
|
||||
and password that you like) with the <code>manager-script</code> role.
|
||||
</p></li>
|
||||
</ul>
|
||||
|
||||
</div></div>
|
||||
|
||||
|
||||
<div class="subsection"><h4 id="Create_Project_Source_Code_Directory">Create Project Source Code Directory</h4><div class="text">
|
||||
|
||||
<p>The first step is to create a new project source directory, and customize
|
||||
the <code>build.xml</code> and <code>build.properties</code> files you will
|
||||
be using. The directory structure is described in <a href="source.html">the
|
||||
previous section</a>, or you can use the
|
||||
<a href="sample/">sample application</a> as a starting point.</p>
|
||||
|
||||
<p>Create your project source directory, and define it within your source code
|
||||
control system. This might be done by a series of commands like this:</p>
|
||||
<div class="codeBox"><pre><code>cd {my home directory}
|
||||
mkdir myapp <-- Assumed "project source directory"
|
||||
cd myapp
|
||||
mkdir docs
|
||||
mkdir src
|
||||
mkdir web
|
||||
mkdir web/WEB-INF
|
||||
cvs or svn or git ... <-- Add this structure to the appropriate repository
|
||||
</code></pre></div>
|
||||
|
||||
<p>To verify that the project was created correctly in the source code control
|
||||
repository, you may wish to check out the project to a separate directory and
|
||||
confirm that all the expected contents are present.</p>
|
||||
|
||||
<p>Next, you will need to create and check in an initial version of the
|
||||
<code>build.xml</code> script to be used for development. For getting
|
||||
started quickly and easily, base your <code>build.xml</code> on the
|
||||
<a href="build.xml.txt">basic build.xml file</a>, included with this manual,
|
||||
or code it from scratch.</p>
|
||||
<div class="codeBox"><pre><code>cd {my home directory}
|
||||
cd myapp
|
||||
emacs build.xml <-- if you want a real editor :-)
|
||||
cvs or svn or git ... <-- Add this file to the repository
|
||||
</code></pre></div>
|
||||
|
||||
<p>The next step is to customize the Ant <em>properties</em> that are
|
||||
named in the <code>build.xml</code> script. This is done by creating a
|
||||
file named <code>build.properties</code> in your project's top-level
|
||||
directory. The supported properties are listed in the comments inside
|
||||
the sample <code>build.xml</code> script. At a minimum, you will generally
|
||||
need to define the <code>catalina.home</code> property defining where
|
||||
Tomcat is installed, and the manager application username and password.
|
||||
You might end up with something like this:</p>
|
||||
<div class="codeBox"><pre><code># Context path to install this application on
|
||||
app.path=/hello
|
||||
|
||||
# Tomcat installation directory
|
||||
catalina.home=/usr/local/apache-tomcat-9.0
|
||||
|
||||
# Manager webapp username and password
|
||||
manager.username=myusername
|
||||
manager.password=mypassword</code></pre></div>
|
||||
|
||||
<p>In general, you will <strong>not</strong> want to check the
|
||||
<code>build.properties</code> file in to the source code control repository,
|
||||
because it is unique to each developer's environment.</p>
|
||||
|
||||
<p>Now, create the initial version of the web application deployment
|
||||
descriptor. You can base <code>web.xml</code> on the
|
||||
<a href="web.xml.txt">basic web.xml file</a>, or code it from scratch.</p>
|
||||
<div class="codeBox"><pre><code>cd {my home directory}
|
||||
cd myapp/web/WEB-INF
|
||||
emacs web.xml
|
||||
cvs or svn or git ... <-- Add this file to the repository
|
||||
</code></pre></div>
|
||||
|
||||
Note that this is only an example web.xml file. The full definition
|
||||
of the deployment descriptor file is in the
|
||||
<a href="https://cwiki.apache.org/confluence/display/TOMCAT/Specifications">Servlet Specification.</a>
|
||||
|
||||
</div></div>
|
||||
|
||||
|
||||
<div class="subsection"><h4 id="Edit_Source_Code_and_Pages">Edit Source Code and Pages</h4><div class="text">
|
||||
|
||||
<p>The edit/build/test tasks will generally be your most common activities
|
||||
during development and maintenance. The following general principles apply.
|
||||
As described in <a href="source.html">Source Organization</a>, newly created
|
||||
source files should be located in the appropriate subdirectory, under your
|
||||
project source directory.</p>
|
||||
|
||||
<p>You should regularly refresh your development directory to reflect the
|
||||
work performed by other developers.</p>
|
||||
|
||||
<p>To create a new file, go to the appropriate directory and create the file.
|
||||
When you are satisfied with its contents (after building and testing is
|
||||
successful), add the new file to the repository. For example, to create a new
|
||||
JSP page:</p>
|
||||
<div class="codeBox"><pre><code>cd {my home directory}
|
||||
cd myapp/web <-- Ultimate destination is document root
|
||||
emacs mypage.jsp
|
||||
... build and test the application ...
|
||||
cvs or svn or git ... <-- Add this file to the repository
|
||||
</code></pre></div>
|
||||
|
||||
<p>Java source code that is defined in packages must be organized in a directory
|
||||
hierarchy (under the <strong>src/</strong> subdirectory) that matches the
|
||||
package names. For example, a Java class named
|
||||
<code>com.mycompany.mypackage.MyClass.java</code> should be stored in file
|
||||
<code>src/com/mycompany/mypackage/MyClass.java</code>.
|
||||
Whenever you create a new file, don't forget to add it to the source code
|
||||
control system.</p>
|
||||
|
||||
<p>To edit an existing source file, you will generally just start editing
|
||||
and testing, then commit the changed file when everything works.</p>
|
||||
|
||||
</div></div>
|
||||
|
||||
|
||||
<div class="subsection"><h4 id="Build_the_Web_Application">Build the Web Application</h4><div class="text">
|
||||
|
||||
<p>When you are ready to compile the application, issue the following
|
||||
commands (generally, you will want a shell window open that is set to
|
||||
the project source directory, so that only the last command is needed):</p>
|
||||
<div class="codeBox"><pre><code>cd {my home directory}
|
||||
cd myapp <-- Normally leave a window open here
|
||||
ant</code></pre></div>
|
||||
|
||||
<p>The Ant tool will be execute the default "compile" target in your
|
||||
<code>build.xml</code> file, which will compile any new or updated Java
|
||||
code. If this is the first time you compile after a "build clean",
|
||||
it will cause everything to be recompiled.</p>
|
||||
|
||||
<p>To force the recompilation of your entire application, do this instead:</p>
|
||||
<div class="codeBox"><pre><code>cd {my home directory}
|
||||
cd myapp
|
||||
ant all</code></pre></div>
|
||||
|
||||
<p>This is a very good habit immediately before checking in changes, to
|
||||
make sure that you have not introduced any subtle problems that Javac's
|
||||
conditional checking did not catch.</p>
|
||||
|
||||
</div></div>
|
||||
|
||||
|
||||
<div class="subsection"><h4 id="Test_Your_Web_Application">Test Your Web Application</h4><div class="text">
|
||||
|
||||
<p>To test your application, you will want to install it under Tomcat. The
|
||||
quickest way to do that is to use the custom Ant tasks that are included in
|
||||
the sample <code>build.xml</code> script. Using these commands might follow
|
||||
a pattern like this:</p>
|
||||
<ul>
|
||||
<li><p><em>Start Tomcat if needed</em>. If Tomcat is not already running,
|
||||
you will need to start it in the usual way.
|
||||
</p></li>
|
||||
<li><p><em>Compile your application</em>. Use the <code>ant compile</code>
|
||||
command (or just <code>ant</code>, since this is the default). Make
|
||||
sure that there are no compilation errors.
|
||||
</p></li>
|
||||
<li><p><em>Install the application</em>. Use the <code>ant install</code>
|
||||
command. This tells Tomcat to immediately start running your app on
|
||||
the context path defined in the <code>app.path</code> build property.
|
||||
Tomcat does <strong>NOT</strong> have to be restarted for this to
|
||||
take effect.
|
||||
</p></li>
|
||||
<li><p><em>Test the application</em>. Using your browser or other testing
|
||||
tools, test the functionality of your application.
|
||||
</p></li>
|
||||
<li><p><em>Modify and rebuild as needed</em>. As you discover that changes
|
||||
are required, make those changes in the original <strong>source</strong>
|
||||
files, not in the output build directory, and re-issue the
|
||||
<code>ant compile</code> command. This ensures that your changes will be
|
||||
available to be saved (via your chosen source code control system) later on
|
||||
-- the output build directory is deleted and recreated as necessary.
|
||||
</p></li>
|
||||
<li><p><em>Reload the application</em>. Tomcat will recognize changes in
|
||||
JSP pages automatically, but it will continue to use the old versions
|
||||
of any servlet or JavaBean classes until the application is reloaded.
|
||||
You can trigger this by executing the <code>ant reload</code> command.
|
||||
</p></li>
|
||||
<li><p><em>Remove the application when you are done</em>. When you are through
|
||||
working on this application, you can remove it from live execution by
|
||||
running the <code>ant remove</code> command.
|
||||
</p></li>
|
||||
</ul>
|
||||
|
||||
<p>Do not forget to commit your changes to the source code repository when
|
||||
you have completed your testing!</p>
|
||||
|
||||
</div></div>
|
||||
|
||||
|
||||
<div class="subsection"><h4 id="Creating_a_Release">Creating a Release</h4><div class="text">
|
||||
|
||||
<p>When you are through adding new functionality, and you've tested everything
|
||||
(you DO test, don't you :-), it is time to create the distributable version
|
||||
of your web application that can be deployed on the production server. The
|
||||
following general steps are required:</p>
|
||||
<ul>
|
||||
<li><p>Issue the command <code>ant all</code> from the project source
|
||||
directory, to rebuild everything from scratch one last time.
|
||||
</p></li>
|
||||
<li><p>Use the source code control system to tag the current state of the code
|
||||
to create an identifier for all of the source files utilized to create this
|
||||
release. This allows you to reliably reconstruct a release (from sources)
|
||||
at a later time.
|
||||
</p></li>
|
||||
<li><p>Issue the command <code>ant dist</code> to create a distributable
|
||||
web application archive (WAR) file, as well as a JAR file containing
|
||||
the corresponding source code.
|
||||
</p></li>
|
||||
<li><p>Package the contents of the <code>dist</code> directory using the
|
||||
<strong>tar</strong> or <strong>zip</strong> utility, according to
|
||||
the standard release procedures used by your organization.
|
||||
</p></li>
|
||||
</ul>
|
||||
|
||||
</div></div>
|
||||
|
||||
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|
||||
508
tomcat/webapps.dist/docs/appdev/sample/build.xml
Normal file
508
tomcat/webapps.dist/docs/appdev/sample/build.xml
Normal file
@@ -0,0 +1,508 @@
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<!--
|
||||
General purpose build script for web applications and web services,
|
||||
including enhanced support for deploying directly to a Tomcat
|
||||
based server.
|
||||
|
||||
This build script assumes that the source code of your web application
|
||||
is organized into the following subdirectories underneath the source
|
||||
code directory from which you execute the build script:
|
||||
|
||||
docs Static documentation files to be copied to
|
||||
the "docs" subdirectory of your distribution.
|
||||
|
||||
src Java source code (and associated resource files)
|
||||
to be compiled to the "WEB-INF/classes"
|
||||
subdirectory of your web application.
|
||||
|
||||
web Static HTML, JSP, and other content (such as
|
||||
image files), including the WEB-INF subdirectory
|
||||
and its configuration file contents.
|
||||
-->
|
||||
|
||||
|
||||
<!-- A "project" describes a set of targets that may be requested
|
||||
when Ant is executed. The "default" attribute defines the
|
||||
target which is executed if no specific target is requested,
|
||||
and the "basedir" attribute defines the current working directory
|
||||
from which Ant executes the requested task. This is normally
|
||||
set to the current working directory.
|
||||
-->
|
||||
|
||||
<project name="My Project" default="compile" basedir=".">
|
||||
|
||||
|
||||
|
||||
<!-- ===================== Property Definitions =========================== -->
|
||||
|
||||
|
||||
<!--
|
||||
|
||||
Each of the following properties are used in the build script.
|
||||
Values for these properties are set by the first place they are
|
||||
defined, from the following list:
|
||||
|
||||
* Definitions on the "ant" command line (ant -Dfoo=bar compile).
|
||||
|
||||
* Definitions from a "build.properties" file in the top level
|
||||
source directory of this application.
|
||||
|
||||
* Definitions from a "build.properties" file in the developer's
|
||||
home directory.
|
||||
|
||||
* Default definitions in this build.xml file.
|
||||
|
||||
You will note below that property values can be composed based on the
|
||||
contents of previously defined properties. This is a powerful technique
|
||||
that helps you minimize the number of changes required when your development
|
||||
environment is modified. Note that property composition is allowed within
|
||||
"build.properties" files as well as in the "build.xml" script.
|
||||
|
||||
-->
|
||||
|
||||
<property file="build.properties"/>
|
||||
<property file="${user.home}/build.properties"/>
|
||||
|
||||
|
||||
<!-- ==================== File and Directory Names ======================== -->
|
||||
|
||||
|
||||
<!--
|
||||
|
||||
These properties generally define file and directory names (or paths) that
|
||||
affect where the build process stores its outputs.
|
||||
|
||||
app.name Base name of this application, used to
|
||||
construct filenames and directories.
|
||||
Defaults to "myapp".
|
||||
|
||||
app.path Context path to which this application should be
|
||||
deployed (defaults to "/" plus the value of the
|
||||
"app.name" property).
|
||||
|
||||
app.version Version number of this iteration of the application.
|
||||
|
||||
build.home The directory into which the "prepare" and
|
||||
"compile" targets will generate their output.
|
||||
Defaults to "build".
|
||||
|
||||
catalina.home The directory in which you have installed
|
||||
a binary distribution of Tomcat. This will
|
||||
be used by the "deploy" target.
|
||||
|
||||
dist.home The name of the base directory in which
|
||||
distribution files are created.
|
||||
Defaults to "dist".
|
||||
|
||||
manager.password The login password of a user that is assigned the
|
||||
"manager-script" role (so that they can execute
|
||||
commands via the "/manager" web application)
|
||||
|
||||
manager.url The URL of the "/manager" web application on the
|
||||
Tomcat installation to which we will deploy web
|
||||
applications and web services.
|
||||
|
||||
manager.username The login username of a user that is assigned the
|
||||
"manager-script" role (so that they can execute
|
||||
commands via the "/manager" web application)
|
||||
|
||||
-->
|
||||
|
||||
<property name="app.name" value="myapp"/>
|
||||
<property name="app.path" value="/${app.name}"/>
|
||||
<property name="app.version" value="0.1-dev"/>
|
||||
<property name="build.home" value="${basedir}/build"/>
|
||||
<property name="catalina.home" value="../../../.."/> <!-- UPDATE THIS! -->
|
||||
<property name="dist.home" value="${basedir}/dist"/>
|
||||
<property name="docs.home" value="${basedir}/docs"/>
|
||||
<property name="manager.url" value="http://localhost:8080/manager/text"/>
|
||||
<property name="src.home" value="${basedir}/src"/>
|
||||
<property name="web.home" value="${basedir}/web"/>
|
||||
|
||||
|
||||
<!-- ==================== External Dependencies =========================== -->
|
||||
|
||||
|
||||
<!--
|
||||
|
||||
Use property values to define the locations of external JAR files on which
|
||||
your application will depend. In general, these values will be used for
|
||||
two purposes:
|
||||
* Inclusion on the classpath that is passed to the Javac compiler
|
||||
* Being copied into the "/WEB-INF/lib" directory during execution
|
||||
of the "deploy" target.
|
||||
|
||||
Because we will automatically include all of the Java classes that Tomcat
|
||||
exposes to web applications, we will not need to explicitly list any of those
|
||||
dependencies. You only need to worry about external dependencies for JAR
|
||||
files that you are going to include inside your "/WEB-INF/lib" directory.
|
||||
|
||||
-->
|
||||
|
||||
<!-- Dummy external dependency -->
|
||||
<!--
|
||||
<property name="foo.jar"
|
||||
value="/path/to/foo.jar"/>
|
||||
-->
|
||||
|
||||
|
||||
<!-- ==================== Compilation Classpath =========================== -->
|
||||
|
||||
<!--
|
||||
|
||||
Rather than relying on the CLASSPATH environment variable, Ant includes
|
||||
features that makes it easy to dynamically construct the classpath you
|
||||
need for each compilation. The example below constructs the compile
|
||||
classpath to include the servlet.jar file, as well as the other components
|
||||
that Tomcat makes available to web applications automatically, plus anything
|
||||
that you explicitly added.
|
||||
|
||||
-->
|
||||
|
||||
<path id="compile.classpath">
|
||||
|
||||
<!-- Include all JAR files that will be included in /WEB-INF/lib -->
|
||||
<!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->
|
||||
<!--
|
||||
<pathelement location="${foo.jar}"/>
|
||||
-->
|
||||
|
||||
<!-- Include all elements that Tomcat exposes to applications -->
|
||||
<fileset dir="${catalina.home}/bin">
|
||||
<include name="*.jar"/>
|
||||
</fileset>
|
||||
<pathelement location="${catalina.home}/lib"/>
|
||||
<fileset dir="${catalina.home}/lib">
|
||||
<include name="*.jar"/>
|
||||
</fileset>
|
||||
|
||||
</path>
|
||||
|
||||
|
||||
|
||||
<!-- ================== Custom Ant Task Definitions ======================= -->
|
||||
|
||||
|
||||
<!--
|
||||
|
||||
These properties define custom tasks for the Ant build tool that interact
|
||||
with the "/manager" web application installed with Tomcat. Before they
|
||||
can be successfully utilized, you must perform the following steps:
|
||||
|
||||
- Copy the file "lib/catalina-ant.jar" from your Tomcat
|
||||
installation into the "lib" directory of your Ant installation.
|
||||
|
||||
- Create a "build.properties" file in your application's top-level
|
||||
source directory (or your user login home directory) that defines
|
||||
appropriate values for the "manager.password", "manager.url", and
|
||||
"manager.username" properties described above.
|
||||
|
||||
For more information about the Manager web application, and the functionality
|
||||
of these tasks, see <http://localhost:8080/tomcat-docs/manager-howto.html>.
|
||||
|
||||
-->
|
||||
|
||||
<taskdef resource="org/apache/catalina/ant/catalina.tasks"
|
||||
classpathref="compile.classpath"/>
|
||||
|
||||
|
||||
<!-- ==================== Compilation Control Options ==================== -->
|
||||
|
||||
<!--
|
||||
|
||||
These properties control option settings on the Javac compiler when it
|
||||
is invoked using the <javac> task.
|
||||
|
||||
compile.debug Should compilation include the debug option?
|
||||
|
||||
compile.deprecation Should compilation include the deprecation option?
|
||||
|
||||
-->
|
||||
|
||||
<property name="compile.debug" value="true"/>
|
||||
<property name="compile.deprecation" value="false"/>
|
||||
|
||||
|
||||
|
||||
<!-- ==================== All Target ====================================== -->
|
||||
|
||||
<!--
|
||||
|
||||
The "all" target is a shortcut for running the "clean" target followed
|
||||
by the "compile" target, to force a complete recompile.
|
||||
|
||||
-->
|
||||
|
||||
<target name="all" depends="clean,compile"
|
||||
description="Clean build and dist directories, then compile"/>
|
||||
|
||||
|
||||
|
||||
<!-- ==================== Clean Target ==================================== -->
|
||||
|
||||
<!--
|
||||
|
||||
The "clean" target deletes any previous "build" and "dist" directory,
|
||||
so that you can be ensured the application can be built from scratch.
|
||||
|
||||
-->
|
||||
|
||||
<target name="clean"
|
||||
description="Delete old build and dist directories">
|
||||
<delete dir="${build.home}"/>
|
||||
<delete dir="${dist.home}"/>
|
||||
</target>
|
||||
|
||||
|
||||
|
||||
<!-- ==================== Compile Target ================================== -->
|
||||
|
||||
<!--
|
||||
|
||||
The "compile" target transforms source files (from your "src" directory)
|
||||
into object files in the appropriate location in the build directory.
|
||||
This example assumes that you will be including your classes in an
|
||||
unpacked directory hierarchy under "/WEB-INF/classes".
|
||||
|
||||
-->
|
||||
|
||||
<target name="compile" depends="prepare"
|
||||
description="Compile Java sources">
|
||||
|
||||
<!-- Compile Java classes as necessary -->
|
||||
<mkdir dir="${build.home}/WEB-INF/classes"/>
|
||||
<javac srcdir="${src.home}"
|
||||
destdir="${build.home}/WEB-INF/classes"
|
||||
debug="${compile.debug}"
|
||||
deprecation="${compile.deprecation}">
|
||||
<classpath refid="compile.classpath"/>
|
||||
</javac>
|
||||
|
||||
<!-- Copy application resources -->
|
||||
<copy todir="${build.home}/WEB-INF/classes">
|
||||
<fileset dir="${src.home}" excludes="**/*.java"/>
|
||||
</copy>
|
||||
|
||||
</target>
|
||||
|
||||
|
||||
|
||||
<!-- ==================== Dist Target ===================================== -->
|
||||
|
||||
|
||||
<!--
|
||||
|
||||
The "dist" target creates a binary distribution of your application
|
||||
in a directory structure ready to be archived in a tar.gz or zip file.
|
||||
Note that this target depends on two others:
|
||||
|
||||
* "compile" so that the entire web application (including external
|
||||
dependencies) will have been assembled
|
||||
|
||||
* "javadoc" so that the application Javadocs will have been created
|
||||
|
||||
-->
|
||||
|
||||
<target name="dist" depends="compile,javadoc"
|
||||
description="Create binary distribution">
|
||||
|
||||
<!-- Copy documentation subdirectories -->
|
||||
<mkdir dir="${dist.home}/docs"/>
|
||||
<copy todir="${dist.home}/docs">
|
||||
<fileset dir="${docs.home}"/>
|
||||
</copy>
|
||||
|
||||
<!-- Create application JAR file -->
|
||||
<jar jarfile="${dist.home}/${app.name}-${app.version}.war"
|
||||
basedir="${build.home}"/>
|
||||
|
||||
<!-- Copy additional files to ${dist.home} as necessary -->
|
||||
|
||||
</target>
|
||||
|
||||
|
||||
|
||||
<!-- ==================== Install Target ================================== -->
|
||||
|
||||
<!--
|
||||
|
||||
The "install" target tells the specified Tomcat installation to dynamically
|
||||
install this web application and make it available for execution. It does
|
||||
*not* cause the existence of this web application to be remembered across
|
||||
Tomcat restarts; if you restart the server, you will need to re-install all
|
||||
this web application.
|
||||
|
||||
If you have already installed this application, and simply want Tomcat to
|
||||
recognize that you have updated Java classes (or the web.xml file), use the
|
||||
"reload" target instead.
|
||||
|
||||
NOTE: This target will only succeed if it is run from the same server that
|
||||
Tomcat is running on.
|
||||
|
||||
NOTE: This is the logical opposite of the "remove" target.
|
||||
|
||||
-->
|
||||
|
||||
<target name="install" depends="compile"
|
||||
description="Install application to servlet container">
|
||||
|
||||
<deploy url="${manager.url}"
|
||||
username="${manager.username}"
|
||||
password="${manager.password}"
|
||||
path="${app.path}"
|
||||
localWar="file://${build.home}"/>
|
||||
|
||||
</target>
|
||||
|
||||
|
||||
<!-- ==================== Javadoc Target ================================== -->
|
||||
|
||||
<!--
|
||||
|
||||
The "javadoc" target creates Javadoc API documentation for the Java
|
||||
classes included in your application. Normally, this is only required
|
||||
when preparing a distribution release, but is available as a separate
|
||||
target in case the developer wants to create Javadocs independently.
|
||||
|
||||
-->
|
||||
|
||||
<target name="javadoc" depends="compile"
|
||||
description="Create Javadoc API documentation">
|
||||
|
||||
<mkdir dir="${dist.home}/docs/api"/>
|
||||
<javadoc sourcepath="${src.home}"
|
||||
destdir="${dist.home}/docs/api"
|
||||
packagenames="*">
|
||||
<classpath refid="compile.classpath"/>
|
||||
</javadoc>
|
||||
|
||||
</target>
|
||||
|
||||
|
||||
|
||||
<!-- ====================== List Target =================================== -->
|
||||
|
||||
<!--
|
||||
|
||||
The "list" target asks the specified Tomcat installation to list the
|
||||
currently running web applications, either loaded at startup time or
|
||||
installed dynamically. It is useful to determine whether or not the
|
||||
application you are currently developing has been installed.
|
||||
|
||||
-->
|
||||
|
||||
<target name="list"
|
||||
description="List installed applications on servlet container">
|
||||
|
||||
<list url="${manager.url}"
|
||||
username="${manager.username}"
|
||||
password="${manager.password}"/>
|
||||
|
||||
</target>
|
||||
|
||||
|
||||
<!-- ==================== Prepare Target ================================== -->
|
||||
|
||||
<!--
|
||||
|
||||
The "prepare" target is used to create the "build" destination directory,
|
||||
and copy the static contents of your web application to it. If you need
|
||||
to copy static files from external dependencies, you can customize the
|
||||
contents of this task.
|
||||
|
||||
Normally, this task is executed indirectly when needed.
|
||||
|
||||
-->
|
||||
|
||||
<target name="prepare">
|
||||
|
||||
<!-- Create build directories as needed -->
|
||||
<mkdir dir="${build.home}"/>
|
||||
<mkdir dir="${build.home}/WEB-INF"/>
|
||||
<mkdir dir="${build.home}/WEB-INF/classes"/>
|
||||
|
||||
|
||||
<!-- Copy static content of this web application -->
|
||||
<copy todir="${build.home}">
|
||||
<fileset dir="${web.home}"/>
|
||||
</copy>
|
||||
|
||||
<!-- Copy external dependencies as required -->
|
||||
<!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->
|
||||
<mkdir dir="${build.home}/WEB-INF/lib"/>
|
||||
<!--
|
||||
<copy todir="${build.home}/WEB-INF/lib" file="${foo.jar}"/>
|
||||
-->
|
||||
|
||||
<!-- Copy static files from external dependencies as needed -->
|
||||
<!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->
|
||||
|
||||
</target>
|
||||
|
||||
|
||||
<!-- ==================== Reload Target =================================== -->
|
||||
|
||||
<!--
|
||||
|
||||
The "reload" signals the specified application Tomcat to shut itself down
|
||||
and reload. This can be useful when the web application context is not
|
||||
reloadable and you have updated classes or property files in the
|
||||
/WEB-INF/classes directory or when you have added or updated jar files in the
|
||||
/WEB-INF/lib directory.
|
||||
|
||||
NOTE: The /WEB-INF/web.xml web application configuration file is not reread
|
||||
on a reload. If you have made changes to your web.xml file you must stop
|
||||
then start the web application.
|
||||
|
||||
-->
|
||||
|
||||
<target name="reload" depends="compile"
|
||||
description="Reload application on servlet container">
|
||||
|
||||
<reload url="${manager.url}"
|
||||
username="${manager.username}"
|
||||
password="${manager.password}"
|
||||
path="${app.path}"/>
|
||||
|
||||
</target>
|
||||
|
||||
|
||||
<!-- ==================== Remove Target =================================== -->
|
||||
|
||||
<!--
|
||||
|
||||
The "remove" target tells the specified Tomcat installation to dynamically
|
||||
remove this web application from service.
|
||||
|
||||
NOTE: This is the logical opposite of the "install" target.
|
||||
|
||||
-->
|
||||
|
||||
<target name="remove"
|
||||
description="Remove application on servlet container">
|
||||
|
||||
<undeploy url="${manager.url}"
|
||||
username="${manager.username}"
|
||||
password="${manager.password}"
|
||||
path="${app.path}"/>
|
||||
|
||||
</target>
|
||||
|
||||
|
||||
</project>
|
||||
17
tomcat/webapps.dist/docs/appdev/sample/docs/README.txt
Normal file
17
tomcat/webapps.dist/docs/appdev/sample/docs/README.txt
Normal file
@@ -0,0 +1,17 @@
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
This is a dummy README file for the sample
|
||||
web application.
|
||||
55
tomcat/webapps.dist/docs/appdev/sample/index.html
Normal file
55
tomcat/webapps.dist/docs/appdev/sample/index.html
Normal file
@@ -0,0 +1,55 @@
|
||||
<!DOCTYPE html>
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="author" content="Ben Souther" />
|
||||
<title>Sample Application</title>
|
||||
</head>
|
||||
<body>
|
||||
<h2>Sample Application</h2>
|
||||
<p>
|
||||
The example app has been packaged as a war file and can be downloaded
|
||||
<a href="sample.war">here</a> (Note: make sure your browser doesn't
|
||||
change file extension or append a new one).
|
||||
</p>
|
||||
<p>
|
||||
The easiest way to run this application is simply to move the war file
|
||||
to your <b>CATALINA_BASE/webapps</b> directory. A default Tomcat install
|
||||
will automatically expand and deploy the application for you. You can
|
||||
view it with the following URL (assuming that you're running tomcat on
|
||||
port 8080 which is the default):
|
||||
<br />
|
||||
<a href="http://localhost:8080/sample">http://localhost:8080/sample</a>
|
||||
</p>
|
||||
<p>
|
||||
If you just want to browse the contents, you can unpack the war file
|
||||
with the <b>jar</b> command.
|
||||
</p>
|
||||
<pre>
|
||||
jar -xvf sample.war
|
||||
</pre>
|
||||
<p>
|
||||
Note: <b>CATALINA_BASE</b> is usually the directory in which you
|
||||
unpacked the Tomcat distribution. For more information on
|
||||
<b>CATALINA_HOME</b>, <b>CATALINA_BASE</b> and the difference between
|
||||
them see <b>RUNNING.txt</b> in the directory you unpacked your Tomcat
|
||||
distribution.
|
||||
</p>
|
||||
</body>
|
||||
</html>
|
||||
BIN
tomcat/webapps.dist/docs/appdev/sample/sample.war
Normal file
BIN
tomcat/webapps.dist/docs/appdev/sample/sample.war
Normal file
Binary file not shown.
@@ -0,0 +1,83 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package mypackage;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
|
||||
/**
|
||||
* Simple servlet to validate that the Hello, World example can
|
||||
* execute servlets. In the web application deployment descriptor,
|
||||
* this servlet must be mapped to correspond to the link in the
|
||||
* "index.html" file.
|
||||
*
|
||||
* @author Craig R. McClanahan <Craig.McClanahan@eng.sun.com>
|
||||
*/
|
||||
|
||||
public final class Hello extends HttpServlet {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* Respond to a GET request for the content produced by
|
||||
* this servlet.
|
||||
*
|
||||
* @param request The servlet request we are processing
|
||||
* @param response The servlet response we are producing
|
||||
*
|
||||
* @exception IOException if an input/output error occurs
|
||||
* @exception ServletException if a servlet error occurs
|
||||
*/
|
||||
@Override
|
||||
public void doGet(HttpServletRequest request,
|
||||
HttpServletResponse response)
|
||||
throws IOException, ServletException {
|
||||
|
||||
response.setContentType("text/html");
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
try (PrintWriter writer = response.getWriter()) {
|
||||
|
||||
writer.println("<!DOCTYPE html><html>");
|
||||
writer.println("<head>");
|
||||
writer.println("<meta charset=\"UTF-8\" />");
|
||||
writer.println("<title>Sample Application Servlet Page</title>");
|
||||
writer.println("</head>");
|
||||
writer.println("<body>");
|
||||
|
||||
|
||||
writer.println("<div style=\"float: left; padding: 10px;\">");
|
||||
writer.println("<img src=\"images/tomcat.gif\" alt=\"\" />");
|
||||
writer.println("</div>");
|
||||
writer.println("<h1>Sample Application Servlet</h1>");
|
||||
writer.println("<p>");
|
||||
writer.println("This is the output of a servlet that is part of");
|
||||
writer.println("the Hello, World application.");
|
||||
writer.println("</p>");
|
||||
|
||||
writer.println("</body>");
|
||||
writer.println("</html>");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
40
tomcat/webapps.dist/docs/appdev/sample/web/WEB-INF/web.xml
Normal file
40
tomcat/webapps.dist/docs/appdev/sample/web/WEB-INF/web.xml
Normal file
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
|
||||
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
|
||||
version="4.0">
|
||||
|
||||
<display-name>Hello, World Application</display-name>
|
||||
<description>
|
||||
This is a simple web application with a source code organization
|
||||
based on the recommendations of the Application Developer's Guide.
|
||||
</description>
|
||||
|
||||
<servlet>
|
||||
<servlet-name>HelloServlet</servlet-name>
|
||||
<servlet-class>mypackage.Hello</servlet-class>
|
||||
</servlet>
|
||||
|
||||
<servlet-mapping>
|
||||
<servlet-name>HelloServlet</servlet-name>
|
||||
<url-pattern>/hello</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
</web-app>
|
||||
37
tomcat/webapps.dist/docs/appdev/sample/web/hello.jsp
Normal file
37
tomcat/webapps.dist/docs/appdev/sample/web/hello.jsp
Normal file
@@ -0,0 +1,37 @@
|
||||
<%--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
--%>
|
||||
<%@ page session="false" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>Sample Application JSP Page</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div style="float: left; padding: 10px;">
|
||||
<img src="images/tomcat.gif" alt="" />
|
||||
</div>
|
||||
<h1>Sample Application JSP Page</h1>
|
||||
This is the output of a JSP page that is part of the Hello, World
|
||||
application.
|
||||
|
||||
|
||||
<%= new String("Hello!") %>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
BIN
tomcat/webapps.dist/docs/appdev/sample/web/images/tomcat.gif
Normal file
BIN
tomcat/webapps.dist/docs/appdev/sample/web/images/tomcat.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.0 KiB |
39
tomcat/webapps.dist/docs/appdev/sample/web/index.html
Normal file
39
tomcat/webapps.dist/docs/appdev/sample/web/index.html
Normal file
@@ -0,0 +1,39 @@
|
||||
<!DOCTYPE html><!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>Sample "Hello, World" Application</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div style="float: left; padding: 10px;">
|
||||
<img src="images/tomcat.gif" alt="" />
|
||||
</div>
|
||||
<h1>Sample "Hello, World" Application</h1>
|
||||
<p>This is the home page for a sample application used to illustrate the
|
||||
source directory organization of a web application utilizing the principles
|
||||
outlined in the Application Developer's Guide.
|
||||
|
||||
<p>To prove that they work, you can execute either of the following links:</p>
|
||||
<ul>
|
||||
<li>To a <a href="hello.jsp">JSP page</a>.</li>
|
||||
<li>To a <a href="hello">servlet</a>.</li>
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
251
tomcat/webapps.dist/docs/appdev/source.html
Normal file
251
tomcat/webapps.dist/docs/appdev/source.html
Normal file
@@ -0,0 +1,251 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link href="../images/docs-stylesheet.css" rel="stylesheet" type="text/css"><title>Application Developer's Guide (9.0.74) - Source Organization</title><meta name="author" content="Craig R. McClanahan"></head><body><div id="wrapper"><header><div id="header"><div><div><div class="logo noPrint"><a href="https://tomcat.apache.org/"><img alt="Tomcat Home" src="../images/tomcat.png"></a></div><div style="height: 1px;"></div><div class="asfLogo noPrint"><a href="https://www.apache.org/" target="_blank"><img src="../images/asf-logo.svg" alt="The Apache Software Foundation" style="width: 266px; height: 83px;"></a></div><h1>Application Developer's Guide</h1><div class="versionInfo">
|
||||
Version 9.0.74,
|
||||
<time datetime="2023-04-13">Apr 13 2023</time></div><div style="height: 1px;"></div><div style="clear: left;"></div></div></div></div></header><div id="middle"><div><div id="mainLeft" class="noprint"><div><nav><div><h2>Links</h2><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">App Dev Guide Home</a></li><li><a href="https://cwiki.apache.org/confluence/display/TOMCAT/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul></div><div><h2>Contents</h2><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></div></nav></div></div><div id="mainRight"><div id="content"><h2>Source Organization</h2><h3 id="Table_of_Contents">Table of Contents</h3><div class="text">
|
||||
<ul><li><a href="#Directory_Structure">Directory Structure</a><ol><li><a href="#External_Dependencies">External Dependencies</a></li></ol></li><li><a href="#Source_Code_Control">Source Code Control</a></li><li><a href="#BUILD.XML_Configuration_File">BUILD.XML Configuration File</a></li></ul>
|
||||
</div><h3 id="Directory_Structure">Directory Structure</h3><div class="text">
|
||||
|
||||
<p><em>The description below uses the variable name $CATALINA_BASE to refer the
|
||||
base directory against which most relative paths are resolved. If you have
|
||||
not configured Tomcat for multiple instances by setting a CATALINA_BASE
|
||||
directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,
|
||||
the directory into which you have installed Tomcat.</em></p>
|
||||
|
||||
<p>A key recommendation of this manual is to separate the directory
|
||||
hierarchy containing your source code (described in this section) from
|
||||
the directory hierarchy containing your deployable application
|
||||
(described in the preceding section). Maintaining this separation has
|
||||
the following advantages:</p>
|
||||
<ul>
|
||||
<li><p>The contents of the source directories can be more easily administered,
|
||||
moved, and backed up if the "executable" version of the application
|
||||
is not intermixed.
|
||||
</p></li>
|
||||
<li><p>Source code control is easier to manage on directories that contain
|
||||
only source files.
|
||||
</p></li>
|
||||
<li><p>The files that make up an installable distribution of your
|
||||
application are much easier to select when the deployment
|
||||
hierarchy is separate.</p></li>
|
||||
</ul>
|
||||
|
||||
<p>As we will see, the <code>ant</code> development tool makes the creation
|
||||
and processing of such directory hierarchies nearly painless.</p>
|
||||
|
||||
<p>The actual directory and file hierarchy used to contain the source code
|
||||
of an application can be pretty much anything you like. However, the
|
||||
following organization has proven to be quite generally applicable, and is
|
||||
expected by the example <code>build.xml</code> configuration file that
|
||||
is discussed below. All of these components exist under a top level
|
||||
<em>project source directory</em> for your application:</p>
|
||||
<ul>
|
||||
<li><strong>docs/</strong> - Documentation for your application, in whatever
|
||||
format your development team is using.<br><br></li>
|
||||
<li><strong>src/</strong> - Java source files that generate the servlets,
|
||||
beans, and other Java classes that are unique to your application.
|
||||
If your source code is organized in packages (<strong>highly</strong>
|
||||
recommended), the package hierarchy should be reflected as a directory
|
||||
structure underneath this directory.<br><br></li>
|
||||
<li><strong>web/</strong> - The static content of your web site (HTML pages,
|
||||
JSP pages, JavaScript files, CSS stylesheet files, and images) that will
|
||||
be accessible to application clients. This directory will be the
|
||||
<em>document root</em> of your web application, and any subdirectory
|
||||
structure found here will be reflected in the request URIs required to
|
||||
access those files.<br><br></li>
|
||||
<li><strong>web/WEB-INF/</strong> - The special configuration files required
|
||||
for your application, including the web application deployment descriptor
|
||||
(<code>web.xml</code>, defined in the
|
||||
<a href="https://cwiki.apache.org/confluence/display/TOMCAT/Specifications">Servlet Specification</a>),
|
||||
tag library descriptors for custom tag libraries
|
||||
you have created, and other resource files you wish to include within
|
||||
your web application. Even though this directory appears to be a
|
||||
subdirectory of your <em>document root</em>, the Servlet Specification
|
||||
prohibits serving the contents of this directory (or any file it contains)
|
||||
directly to a client request. Therefore, this is a good place to store
|
||||
configuration information that is sensitive (such as database connection
|
||||
usernames and passwords), but is required for your application to
|
||||
operate successfully.</li>
|
||||
</ul>
|
||||
|
||||
<p>During the development process, two additional directories will be
|
||||
created on a temporary basis:</p>
|
||||
<ul>
|
||||
<li><strong>build/</strong> - When you execute a default build
|
||||
(<code>ant</code>), this directory will contain an exact image
|
||||
of the files in the web application archive for this application.
|
||||
Tomcat allows you to deploy an application in an unpacked
|
||||
directory like this, either by copying it to the
|
||||
<code>$CATALINA_BASE/webapps</code> directory, or by <em>installing</em>
|
||||
it via the "Manager" web application. The latter approach is very
|
||||
useful during development, and will be illustrated below.
|
||||
<br><br></li>
|
||||
<li><strong>dist/</strong> - When you execute the <code>ant dist</code>
|
||||
target, this directory will be created. It will create an exact image
|
||||
of the binary distribution for your web application, including an license
|
||||
information, documentation, and README files that you have prepared.</li>
|
||||
</ul>
|
||||
|
||||
<p>Note that these two directories should <strong>NOT</strong> be archived in
|
||||
your source code control system, because they are deleted and recreated (from
|
||||
scratch) as needed during development. For that reason, you should not edit
|
||||
any source files in these directories if you want to maintain a permanent
|
||||
record of the changes, because the changes will be lost the next time that a
|
||||
build is performed.</p>
|
||||
|
||||
<div class="subsection"><h4 id="External_Dependencies">External Dependencies</h4><div class="text">
|
||||
|
||||
<p>What do you do if your application requires JAR files (or other
|
||||
resources) from external projects or packages? A common example is that
|
||||
you need to include a JDBC driver in your web application, in order to
|
||||
operate.</p>
|
||||
|
||||
<p>Different developers take different approaches to this problem.
|
||||
Some will encourage checking a copy of the JAR files you depend on into
|
||||
the source code control archives for every application that requires those
|
||||
JAR files. However, this can cause significant management issues when you
|
||||
use the same JAR in many applications - particular when faced with a need
|
||||
to upgrade to a different version of that JAR file.</p>
|
||||
|
||||
<p>Therefore, this manual recommends that you <strong>NOT</strong> store
|
||||
a copy of the packages you depend on inside the source control archives
|
||||
of your applications. Instead, the external dependencies should be
|
||||
integrated as part of the process of <strong>building</strong> your
|
||||
application. In that way, you can always pick up the appropriate version
|
||||
of the JAR files from wherever your development system administrator has
|
||||
installed them, without having to worry about updating your application
|
||||
every time the version of the dependent JAR file is changed.</p>
|
||||
|
||||
<p>In the example Ant <code>build.xml</code> file, we will demonstrate
|
||||
how to define <em>build properties</em> that let you configure the locations
|
||||
of the files to be copied, without having to modify <code>build.xml</code>
|
||||
when these files change. The build properties used by a particular
|
||||
developer can be customized on a per-application basis, or defaulted to
|
||||
"standard" build properties stored in the developer's home directory.</p>
|
||||
|
||||
<p>In many cases, your development system administrator will have already
|
||||
installed the required JAR files into the <code>lib</code> directory of Tomcat.
|
||||
If this has been done, you need
|
||||
to take no actions at all - the example <code>build.xml</code> file
|
||||
automatically constructs a compile classpath that includes these files.</p>
|
||||
|
||||
</div></div>
|
||||
|
||||
</div><h3 id="Source_Code_Control">Source Code Control</h3><div class="text">
|
||||
|
||||
<p>As mentioned earlier, it is highly recommended that you place all of the
|
||||
source files that comprise your application under the management of a
|
||||
source code control system. If you elect to do this, every directory and file
|
||||
in the source hierarchy should be registered and saved -- but none of the
|
||||
generated files. If you register binary format files (such as images or JAR
|
||||
libraries), be sure to indicate this to your source code control system.</p>
|
||||
|
||||
<p>We recommended (in the previous section) that you should not store the
|
||||
contents of the <code>build/</code> and <code>dist/</code> directories
|
||||
created by your development process in the source code control system. Source
|
||||
code control systems typically provide mechanisms to ignore these directories
|
||||
(Git uses a <code>.gitignore</code> file, Subversion uses the
|
||||
<code>svn:ignore</code> property, CVS uses a <code>.cvsignore</code> file, etc.)
|
||||
You should configure your source code control system to ignore:</p>
|
||||
<ul>
|
||||
<li>build</li>
|
||||
<li>dist</li>
|
||||
<li>build.properties</li>
|
||||
</ul>
|
||||
|
||||
<p>The reason for mentioning <code>build.properties</code> here will be
|
||||
explained in the <a href="processes.html">Processes</a> section.</p>
|
||||
|
||||
<p>Detailed instructions for your source code control environment are beyond
|
||||
the scope of this manual.</p>
|
||||
|
||||
</div><h3 id="BUILD.XML_Configuration_File">BUILD.XML Configuration File</h3><div class="text">
|
||||
|
||||
<p>We will be using the <strong>ant</strong> tool to manage the compilation of
|
||||
our Java source code files, and creation of the deployment hierarchy. Ant
|
||||
operates under the control of a build file, normally called
|
||||
<code>build.xml</code>, that defines the processing steps required. This
|
||||
file is stored in the top-level directory of your source code hierarchy, and
|
||||
should be checked in to your source code control system.</p>
|
||||
|
||||
<p>Like a Makefile, the <code>build.xml</code> file provides several
|
||||
"targets" that support optional development activities (such as creating
|
||||
the associated Javadoc documentation, erasing the deployment home directory
|
||||
so you can build your project from scratch, or creating the web application
|
||||
archive file so you can distribute your application. A well-constructed
|
||||
<code>build.xml</code> file will contain internal documentation describing
|
||||
the targets that are designed for use by the developer, versus those targets
|
||||
used internally. To ask Ant to display the project documentation, change to
|
||||
the directory containing the <code>build.xml</code> file and type:</p>
|
||||
<div class="codeBox"><pre><code>ant -projecthelp</code></pre></div>
|
||||
|
||||
<p>To give you a head start, a <a href="build.xml.txt">basic build.xml file</a>
|
||||
is provided that you can customize and install in the project source directory
|
||||
for your application. This file includes comments that describe the various
|
||||
targets that can be executed. Briefly, the following targets are generally
|
||||
provided:</p>
|
||||
<ul>
|
||||
<li><strong>clean</strong> - This target deletes any existing
|
||||
<code>build</code> and <code>dist</code> directories, so that they
|
||||
can be reconstructed from scratch. This allows you to guarantee that
|
||||
you have not made source code modifications that will result in
|
||||
problems at runtime due to not recompiling all affected classes.
|
||||
<br><br></li>
|
||||
<li><strong>compile</strong> - This target is used to compile any source code
|
||||
that has been changed since the last time compilation took place. The
|
||||
resulting class files are created in the <code>WEB-INF/classes</code>
|
||||
subdirectory of your <code>build</code> directory, exactly where the
|
||||
structure of a web application requires them to be. Because
|
||||
this command is executed so often during development, it is normally
|
||||
made the "default" target so that a simple <code>ant</code> command will
|
||||
execute it.
|
||||
<br><br></li>
|
||||
<li><strong>all</strong> - This target is a short cut for running the
|
||||
<code>clean</code> target, followed by the <code>compile</code> target.
|
||||
Thus, it guarantees that you will recompile the entire application, to
|
||||
ensure that you have not unknowingly introduced any incompatible changes.
|
||||
<br><br></li>
|
||||
<li><strong>javadoc</strong> - This target creates Javadoc API documentation
|
||||
for the Java classes in this web application. The example
|
||||
<code>build.xml</code> file assumes you want to include the API
|
||||
documentation with your app distribution, so it generates the docs
|
||||
in a subdirectory of the <code>dist</code> directory. Because you normally
|
||||
do not need to generate the Javadocs on every compilation, this target is
|
||||
usually a dependency of the <code>dist</code> target, but not of the
|
||||
<code>compile</code> target.
|
||||
<br><br></li>
|
||||
<li><strong>dist</strong> - This target creates a distribution directory for
|
||||
your application, including any required documentation, the Javadocs for
|
||||
your Java classes, and a web application archive (WAR) file that will be
|
||||
delivered to system administrators who wish to install your application.
|
||||
Because this target also depends on the <code>deploy</code> target, the
|
||||
web application archive will have also picked up any external dependencies
|
||||
that were included at deployment time.</li>
|
||||
</ul>
|
||||
|
||||
<p>For interactive development and testing of your web application using
|
||||
Tomcat, the following additional targets are defined:</p>
|
||||
<ul>
|
||||
<li><strong>install</strong> - Tell the currently running Tomcat to make
|
||||
the application you are developing immediately available for execution
|
||||
and testing. This action does not require Tomcat to be restarted, but
|
||||
it is also not remembered after Tomcat is restarted the next time.
|
||||
<br><br></li>
|
||||
<li><strong>reload</strong> - Once the application is installed, you can
|
||||
continue to make changes and recompile using the <code>compile</code>
|
||||
target. Tomcat will automatically recognize changes made to JSP pages,
|
||||
but not to servlet or JavaBean classes - this command will tell Tomcat
|
||||
to restart the currently installed application so that such changes are
|
||||
recognized.
|
||||
<br><br></li>
|
||||
<li><strong>remove</strong> - When you have completed your development and
|
||||
testing activities, you can optionally tell Tomcat to remove this
|
||||
application from service.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>Using the development and testing targets requires some additional
|
||||
one-time setup that is described on the next page.</p>
|
||||
|
||||
</div></div></div></div></div><footer><div id="footer">
|
||||
Copyright © 1999-2023, The Apache Software Foundation
|
||||
</div></footer></div></body></html>
|
||||
166
tomcat/webapps.dist/docs/appdev/web.xml.txt
Normal file
166
tomcat/webapps.dist/docs/appdev/web.xml.txt
Normal file
@@ -0,0 +1,166 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<!DOCTYPE web-app
|
||||
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
|
||||
"http://java.sun.com/dtd/web-app_2_3.dtd">
|
||||
|
||||
<web-app>
|
||||
|
||||
|
||||
<!-- General description of your web application -->
|
||||
|
||||
<display-name>My Web Application</display-name>
|
||||
<description>
|
||||
This is version X.X of an application to perform
|
||||
a wild and wonderful task, based on servlets and
|
||||
JSP pages. It was written by Dave Developer
|
||||
(dave@mycompany.com), who should be contacted for
|
||||
more information.
|
||||
</description>
|
||||
|
||||
|
||||
<!-- Context initialization parameters that define shared
|
||||
String constants used within your application, which
|
||||
can be customized by the system administrator who is
|
||||
installing your application. The values actually
|
||||
assigned to these parameters can be retrieved in a
|
||||
servlet or JSP page by calling:
|
||||
|
||||
String value =
|
||||
getServletContext().getInitParameter("name");
|
||||
|
||||
where "name" matches the <param-name> element of
|
||||
one of these initialization parameters.
|
||||
|
||||
You can define any number of context initialization
|
||||
parameters, including zero.
|
||||
-->
|
||||
|
||||
<context-param>
|
||||
<param-name>webadmin</param-name>
|
||||
<param-value>myaddress@mycompany.com</param-value>
|
||||
<description>
|
||||
The EMAIL address of the administrator to whom questions
|
||||
and comments about this application should be addressed.
|
||||
</description>
|
||||
</context-param>
|
||||
|
||||
|
||||
<!-- Servlet definitions for the servlets that make up
|
||||
your web application, including initialization
|
||||
parameters. With Tomcat, you can also send requests
|
||||
to servlets not listed here with a request like this:
|
||||
|
||||
http://localhost:8080/{context-path}/servlet/{classname}
|
||||
|
||||
but this usage is not guaranteed to be portable. It also
|
||||
makes relative references to images and other resources
|
||||
required by your servlet more complicated, so defining
|
||||
all of your servlets (and defining a mapping to them with
|
||||
a servlet-mapping element) is recommended.
|
||||
|
||||
Servlet initialization parameters can be retrieved in a
|
||||
servlet or JSP page by calling:
|
||||
|
||||
String value =
|
||||
getServletConfig().getInitParameter("name");
|
||||
|
||||
where "name" matches the <param-name> element of
|
||||
one of these initialization parameters.
|
||||
|
||||
You can define any number of servlets, including zero.
|
||||
-->
|
||||
|
||||
<servlet>
|
||||
<servlet-name>controller</servlet-name>
|
||||
<description>
|
||||
This servlet plays the "controller" role in the MVC architecture
|
||||
used in this application. It is generally mapped to the ".do"
|
||||
filename extension with a servlet-mapping element, and all form
|
||||
submits in the app will be submitted to a request URI like
|
||||
"saveCustomer.do", which will therefore be mapped to this servlet.
|
||||
|
||||
The initialization parameter names for this servlet are the
|
||||
"servlet path" that will be received by this servlet (after the
|
||||
filename extension is removed). The corresponding value is the
|
||||
name of the action class that will be used to process this request.
|
||||
</description>
|
||||
<servlet-class>com.mycompany.mypackage.ControllerServlet</servlet-class>
|
||||
<init-param>
|
||||
<param-name>listOrders</param-name>
|
||||
<param-value>com.mycompany.myactions.ListOrdersAction</param-value>
|
||||
</init-param>
|
||||
<init-param>
|
||||
<param-name>saveCustomer</param-name>
|
||||
<param-value>com.mycompany.myactions.SaveCustomerAction</param-value>
|
||||
</init-param>
|
||||
<!-- Load this servlet at server startup time -->
|
||||
<load-on-startup>5</load-on-startup>
|
||||
</servlet>
|
||||
|
||||
<servlet>
|
||||
<servlet-name>graph</servlet-name>
|
||||
<description>
|
||||
This servlet produces GIF images that are dynamically generated
|
||||
graphs, based on the input parameters included on the request.
|
||||
It is generally mapped to a specific request URI like "/graph".
|
||||
</description>
|
||||
</servlet>
|
||||
|
||||
|
||||
<!-- Define mappings that are used by the servlet container to
|
||||
translate a particular request URI (context-relative) to a
|
||||
particular servlet. The examples below correspond to the
|
||||
servlet descriptions above. Thus, a request URI like:
|
||||
|
||||
http://localhost:8080/{contextpath}/graph
|
||||
|
||||
will be mapped to the "graph" servlet, while a request like:
|
||||
|
||||
http://localhost:8080/{contextpath}/saveCustomer.do
|
||||
|
||||
will be mapped to the "controller" servlet.
|
||||
|
||||
You may define any number of servlet mappings, including zero.
|
||||
It is also legal to define more than one mapping for the same
|
||||
servlet, if you wish to.
|
||||
-->
|
||||
|
||||
<servlet-mapping>
|
||||
<servlet-name>controller</servlet-name>
|
||||
<url-pattern>*.do</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<servlet-mapping>
|
||||
<servlet-name>graph</servlet-name>
|
||||
<url-pattern>/graph</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
|
||||
<!-- Define the default session timeout for your application,
|
||||
in minutes. From a servlet or JSP page, you can modify
|
||||
the timeout for a particular session dynamically by using
|
||||
HttpSession.getMaxInactiveInterval(). -->
|
||||
|
||||
<session-config>
|
||||
<session-timeout>30</session-timeout> <!-- 30 minutes -->
|
||||
</session-config>
|
||||
|
||||
|
||||
</web-app>
|
||||
Reference in New Issue
Block a user