remm 2005/08/26 05:30:11
Modified: webapps/docs deployer-howto.xml
Log:
- Brand new deployer specs.
- Submitted by Allistair Crossley.
Revision Changes Path
1.8 +313 -164 jakarta-tomcat-catalina/webapps/docs/deployer-howto.xml
Index: deployer-howto.xml
===================================================================
RCS file: /home/cvs/jakarta-tomcat-catalina/webapps/docs/deployer-howto.xml,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- deployer-howto.xml 1 Sep 2004 22:04:28 -0000 1.7
+++ deployer-howto.xml 26 Aug 2005 12:30:11 -0000 1.8
@@ -7,174 +7,323 @@
&project;
<properties>
- <author email="[EMAIL PROTECTED]">Remy Maucherat</author>
- <title>Deployer HOW-TO</title>
+ <author>Allistair Crossley</author>
+ <title>Tomcat Web Application Deployment</title>
</properties>
<body>
-<section name="Table of Contents">
-
-<p>
-<a href="#Introduction">Introduction</a><br />
-<a href="#Context descriptors">Context XML descriptors</a><br />
-<a href="#Deploying on Tomcat startup">Deploying on Tomcat startup</a><br />
-<a href="#Deploying on a running Tomcat server">Deploying on running Tomcat
server</a><br />
-<a href="#Deploying using the Client Deployer Package">Deploying using the
Client Deployer Package</a><br />
-<blockquote>
-</blockquote>
-</p>
-
-</section>
-
-<section name="Introduction">
-
-<p>The deployer, as its name implies, allows deploying and undeploying web
-applications to the Tomcat server, either statically (the application is
-setup before the server is started), or dynamically (in conjunction with the
-Tomcat Manager web application or manipulating already deployed
applications).
-</p>
-
-</section>
-
-<section name="Context descriptors">
-
-<p>A Context XML descriptor is a fragment of XML data which contains a valid
-Context element which would normally be found in the main server
configuration
-file (conf/server.xml), and allows easy and automated manipulation
-of web applications by the various management tools available in Tomcat.
-For a given host, the Context descriptors are located in
-<code>$CATALINA_HOME/conf/[enginename]/[hostname]/foo.xml</code>. Note that
-while the name of the file is not tied to the webapp name, Tomcat will create
-Context descriptors which match the webapp name whenever it will generate a
-Context descriptor.
-</p>
-
-<p>Context descriptors allow defining all aspects and configuration
parameters
-of a Context, such as naming resources and session manager configuration.
-It should be noted that the docBase specified in the Context element can
-refer to either the .WAR or the directory which will be created when the
-.WAR is expanded or the .WAR itself.</p>
-
-</section>
-
-<section name="Deploying on Tomcat startup">
-
-<p>The webapps which are present in the host appBase will be deployed if the
-host "deployOnStartup" property is true. The deployment process is
-the following:
-<ul>
- <li>The Context XML declarations will be deployed first</li>
- <li>Expanded web applications not referenced by Context XML declarations
- will then be deployed; if they have an associated .WAR file and it is
- newer than the expanded web application, the expanded directory will
- be removed and the webapp will be redeployed from the .WAR</li>
- <li>.WAR files will be deployed</li>
-</ul>
-For each deployed web application, a matching Context XML descriptor will be
-created unless one exists already.
-</p>
-
-</section>
-
-<section name="Deploying on a running Tomcat server">
-
-<p>If the host "autoDeploy" property is true, the host will attempt to
deploy
-and update web applications dynamically, as needed. The host will need to
-have background processing enabled for automatic reloading to work, which
-is the default.</p>
-
-<p>This includes:
-<ul>
- <li>Deployment of WARs which are copied to the host appBase.</li>
- <li>Deployment of expanded web applications which are copied to the host
- appBase.</li>
- <li>Redeployment of a web application which has been deployed from a WAR
- when the WAR is updated: the expanded web application is removed,
- and the WAR is expanded again. This will not happen if the host is
- configured so that WARs are not expanded, in which case the webapp
- will be simply redeployed.</li>
- <li>Redeployment of the web application if the /WEB-INF/web.xml file is
- updated.</li>
- <li>Redeployment of the web application if the context XML file from
which
- the web application has been deployed is updated.</li>
- <li>Redeployment of the web application if a context XML file (with a
- name corresponding to the context path of the previously deployed
- application) is added in the
- <code>$CATALINA_HOME/conf/[enginename]/[hostname]/</code>
folder.</li>
- <li>Undeployment of the web application if its document base is deleted
- (on Windows, this assumes that anti locking features are enabled,
otherwise
- it is not possible to delete the resources of a running web
application).</li>
-</ul>
-Note: Web application reloading can also be configured in the loader, in
which
-case loaded classes will be tracked for changes.
-</p>
-
-</section>
-
-<section name="Deploying using the Client Deployer Package">
-
-<p>The client deployer is a package which can be used to validate, compile,
-and deploy a web application to a production or development server. It
should
-be noted that this feature uses the Tomcat manager for automatic deployment.
-</p>
-
-<p>The deployer includes the Catalina manager Ant tasks, the Jasper page
-compiler for JSP compilation before deployment, as well as a task which
-validates the webapp's deployment descriptor. The validator task (class
-<code>org.apache.catalina.ant.ValidatorTask</code>) allows only one
parameter:
-the base path of an expanded web application.</p>
-
-<p>The deployer uses an unpacked web application as input (see the list of
the
-properties used by the deployer below). A web application which
-is programatically deployed with the deployer may include Tomcat specific
-deployment configuration, by including a Context configuration XML file in
-<code>/META-INF/context.xml</code>.</p>
-
-<p>The deployer package includes a ready to use Ant script, with the
following
-targets:
-<ul>
- <li><code>compile</code> (default): Compile and validate the web
- application. This can be used standalone, and does not need a running
- Tomcat server. The compiled application will only run on the
associated
- Tomcat 5.5.x server release, and is not guaranteed to work on another
- Tomcat release, as the code generated by Jasper depends on its
runtime
- component. It should also be noted that this target will also compile
- automatically any Java source file located in the
- <code>/WEB-INF/classes</code> folder of the web application.</li>
- <li><code>deploy</code>: Deploy a web application (compiled or not) to
- a Tomcat server</li>
- <li><code>undeploy</code>: Undeploy a web application</li>
- <li><code>start</code>: Start web application</li>
- <li><code>reload</code>: Reload web application</li>
- <li><code>stop</code>: Stop web application</li>
-</ul>
-The following properties can be specified, either as system properties, or by
-using a <code>deployer.properties</code> file located in the root folder of
the
-deployer package:
-<ul>
- <li><code>build</code>: The build folder used will be, by default,
- <code>${build}/webapp${path}</code>. After the end of the execution
- of the <code>compile</code> target, the web application WAR will be
- located at <code>${build}/webapp${path}.war</code>.</li>
- <li><code>webapp</code>: Folder containing the expanded web application
- which will be compiled and validated. By default, the folder is
- <code>myapp</code>.</li>
- <li><code>path</code>: Deployed context path of the web application,
- by default <code>/myapp</code>.</li>
- <li><code>url</code>: Absolute URL to the manager web application of a
- running Tomcat server, which will be used to deploy and undeploy the
- web application. By default, the deployer will attempt to access
- a Tomcat instance running on localhost, at
- <code>http://localhost:8080/manager</code>.</li>
- <li><code>username</code>: Username to be used to connect to the Tomcat
- manager.</li>
- <li><code>password</code>: Password to be used to connect to the Tomcat
- manager.</li>
-</ul>
-</p>
-
-</section>
+ <section name="Table of Contents">
+ <ul>
+ <li><a href="#Introduction">Introduction</a></li>
+ <li><a href="#Installation">Installation</a></li>
+ <li><a href="#A word on Contexts">A word on Contexts</a></li>
+ <li><a href="#Deployment on Tomcat startup">Deployment on Tomcat
startup</a></li>
+ <li><a href="#Deploying on a running Tomcat server">Deploying on a
running Tomcat server</a></li>
+ <li><a href="#Deploying using the Tomcat Manager">Deploying using
the Tomcat Manager</a></li>
+ <li><a href="#Deploying using the Client Deployer Package">Deploying
using
+ the Tomcat Client Deployer</a></li>
+ </ul>
+
+ </section>
+
+ <section name="Introduction">
+ <p>
+ Deployment is the term used for the process of installing a web
+ application (either a 3rd party WAR or your own custom web
application)
+ into the Tomcat server.
+ </p>
+ <p>
+ Web application deployment may be accomplished in a number of
ways
+ within the Tomcat server.
+ <ul>
+ <li>Statically; the web application is setup before Tomcat
is started</li>
+ <li>
+ Dynamically; in conjunction with the Tomcat Manager web
application or
+ manipulating already deployed web applications
+ </li>
+ </ul>
+ </p>
+ <p>
+ The Tomcat Manager is a tool that allows URL-based web
application
+ deployment features. There is also a tool called the Client
Deployer,
+ which is a command shell based script that interacts with the
Tomcat
+ Manager but provides additional functionality such as compiling
and
+ validating web applications as well as packaging web application
into
+ web application resource (WAR) files.
+ </p>
+ </section>
+
+ <section name="Installation">
+ <p>
+ There is no installation required for static deployment of web
+ applications as this is provided out of the box by Tomcat. Nor
is any
+ installation required for deployment functions with the Tomcat
Manager,
+ although some configuration is required as detailed in the
+ Tomcat Manager manual. An installation is however required if
you wish
+ to use the Tomcat Client Deployer (TCD).
+ </p>
+ <p>
+ The TCD is not packaged with the Tomcat core
+ distribution, and must therefore be downloaded separately from
+ the Downloads area. The download is usually labelled
+ <i>jakarta-tomcat-5.5.x-deployer</i>.
+ </p>
+ <p>
+ TCD has prerequisites of Apache Ant 1.6.2+ and a Java
installation.
+ Your environment should define an ANT_HOME environment value
pointing to
+ the root of your Ant installation, and a JAVA_HOME value
pointing to
+ your Java installation. Additionally, you should ensure Ant's ant
+ command, and the Java javac compiler command run from the
command shell
+ that your operating system provides.
+ </p>
+ <ol>
+ <li>Download the TCD distribution</li>
+ <li>
+ The TCD package need not be extracted into any existing
Tomcat
+ installation, it can be extracted to any location.
+ </li>
+ <li>Read Using the <a href="#Deploying using the Client Deployer
Package">
+ Tomcat Client Deployer</a></li>
+ </ol>
+ </section>
+
+ <section name="A word on Contexts">
+ <p>
+ In talking about deployment of web applications, the concept of a
+ <i>Context</i> is required to be understood. A Context is what
Tomcat
+ calls a web application.
+ </p>
+ <p>
+ In order to configure a Context within Tomcat a <i>Context
Descriptor</i>
+ is required. A Context Descriptor is simply an XML file that
contains
+ Tomcat related configuration for a Context, e.g naming resources
or
+ session manager configuration. In earlier versions of
+ Tomcat the content of a Context Descriptor configuration was
often stored within
+ Tomcat's primary configuration file <i>server.xml</i> but this
is now
+ discouraged (although it currently still works).
+ </p>
+ <p>
+ Context Descriptors not only help Tomcat to know how to
configure
+ Contexts but other tools such as the Tomcat Manager and TDC
often use
+ these Context Descriptors to perform their roles properly.
+ </p>
+ <p>
+ The locations for Context Descriptors are;
+ <ol>
+
<li>$CATALINA_HOME/conf/[enginename]/[hostname]/context.xml</li>
+
<li>$CATALINA_HOME/webapps/[webappname]/META-INF/context.xml</li>
+ </ol>
+ If a Context Descriptor is not provided for a Context, Tomcat
+ automatically creates one and places it in (1) with a filename of
+ [webappname].xml although if manually created, the filename need
not
+ match the web application name as Tomcat is concerned only with
the
+ Context configuration contained within the Context Descriptor
file(s).
+ </p>
+ </section>
+
+ <section name="Deployment on Tomcat startup">
+ <p>
+ If you are not interested in using the Tomcat Manager, or TCD,
+ then you'll need to deploy your web applications
+ statically to Tomcat, followed by a Tomcat startup. The location
you
+ deploy web applications to for this type of deployment is called
the
+ <code>appBase</code> which is specified per Host. You either
copy a
+ so-called <i>exploded web application</i>, i.e non-compressed,
to this
+ location, or a compressed web application resource .WAR file.
+ </p>
+ <p>
+ The web applications present in the location specified by the
Host's
+ (default Host is "localhost") <code>appBase</code> attribute
(default
+ appBase is "$CATALINA_HOME/webapps") will be deployed on Tomcat
startup
+ only if the Host's <code>deployOnStartup</code> attribute is
"true".
+ </p>
+ <p>
+ The following deployment sequence will occur on Tomcat startup
in that
+ case:
+ </p>
+ <ol>
+ <li>Any Context Descriptors will be deployed first.</li>
+ <li>
+ Exploded web applications not referenced by any Context
+ Descriptor will then be deployed. If they have an associated
+ .WAR file in the appBase and it is newer than the exploded
web application,
+ the exploded directory will be removed and the webapp will
be
+ redeployed from the .WAR
+ </li>
+ <li>.WAR files will be deployed</li>
+ </ol>
+ <p>
+ Note again that for each deployed web application, a
+ Context Descriptor will be created <i>unless one exists
already</i>.
+ </p>
+ </section>
+
+ <section name="Deploying on a running Tomcat server">
+ <p>
+ It is possible to deploy web applications to a running Tomcat
server.
+ </p>
+ <p>
+ If the Host <code>autoDeploy</code> attribute is "true", the
Host will
+ attempt to deploy and update web applications dynamically, as
needed,
+ for example if a new .WAR is dropped into the
<code>appBase</code>.
+ For this to work, the Host needs to have background processing
+ enabled which is the default configuration.
+ </p>
+
+ <p>
+ <code>autoDeploy</code> set to "true" and a running Tomcat
allows for:
+ </p>
+ <ul>
+ <li>Deployment of .WAR files copied into the Host
<code>appBase</code>.</li>
+ <li>
+ Deployment of exploded web applications which are
+ copied into the Host <code>appBase</code>.
+ </li>
+ <li>
+ Re-deployment of a web application which has already been
deployed from
+ a .WAR when the new .WAR is provided. In this case the
exploded
+ web application is removed, and the .WAR is expanded again.
+ Note that the explosion will not occur if the Host is
configured
+ so that .WARs are not exploded with a <code>unpackWARs</code>
+ attribute set to "false", in which case the web application
+ will be simply redeployed as a compressed archive.
+ </li>
+ <li>
+ Re-deployment of a web application if the /WEB-INF/web.xml
file (or any
+ other resource defined as a WatchedResource) is updated.
+ </li>
+ <li>
+ Re-deployment of a web application if the Context Descriptor
file from which
+ the web application has been deployed is updated.
+ </li>
+ <li>
+ Re-deployment of a web application if a Context Descriptor
file (with a
+ filename corresponding to the Context path of the previously
deployed
+ web application) is added to the
+ <code>$CATALINA_HOME/conf/[enginename]/[hostname]/</code>
+ directory.
+ </li>
+ <li>
+ Undeployment of a web application if its document base
(docBase)
+ is deleted. Note that on Windows, this assumes that
anti-locking
+ features (see Context configuration) are enabled, otherwise
it is not
+ possible to delete the resources of a running web
application.
+ </li>
+ </ul>
+ <p>
+ Note that web application reloading can also be configured in
the loader, in which
+ case loaded classes will be tracked for changes.
+ </p>
+ </section>
+
+ <section name="Deploying using the Tomcat Manager">
+ <p>
+ The Tomcat Manager is covered in its <a
href="manager-howto.html">own manual page</a>.
+ </p>
+ </section>
+
+ <section name="Deploying using the Client Deployer Package">
+ <p>
+ Finally, deployment of web application may be achieved using the
+ Tomcat Client Deployer. This is a package which can be used to
+ validate, compile, compress to .WAR, and deploy web applications
to
+ production or development Tomcat servers. It should be noted
that this feature
+ uses the Tomcat Manager and as such the target Tomcat server
should be
+ running.
+ </p>
+
+ <p>
+ It is assumed the user will be familar with Apache Ant for using
the TCD.
+ Apache Ant is a scripted build tool. The TCD comes pre-packaged
with a
+ build script to use. Only a modest understanding of Apache Ant is
+ required (installation as listed earlier in this page, and
familiarity
+ with using the operating system command shell and configuring
+ environment variables).
+ </p>
+
+ <p>
+ The TCD includes Ant tasks, the Jasper page compiler for JSP
compilation
+ before deployment, as well as a task which
+ validates the web application Context Descriptor. The validator
task (class
+ <code>org.apache.catalina.ant.ValidatorTask</code>) allows only
one parameter:
+ the base path of an exploded web application.
+ </p>
+
+ <p>
+ The TCD uses an exploded web application as input (see the list
of the
+ properties used below). A web application that is
programatically
+ deployed with the deployer may include a Context Desciptor in
+ <code>/META-INF/context.xml</code>.
+ </p>
+
+ <p>
+ The TCD includes a ready-to-use Ant script, with the following
targets:
+ </p>
+ <ul>
+ <li>
+ <code>compile</code> (default): Compile and validate the web
+ application. This can be used standalone, and does not need
a running
+ Tomcat server. The compiled application will only run on the
associated
+ Tomcat 5.5.x server release, and is not guaranteed to work
on another
+ Tomcat release, as the code generated by Jasper depends on
its runtime
+ component. It should also be noted that this target will
also compile
+ automatically any Java source file located in the
+ <code>/WEB-INF/classes</code> folder of the web
application.</li>
+ <li>
+ <code>deploy</code>: Deploy a web application (compiled or
not) to
+ a Tomcat server.
+ </li>
+ <li><code>undeploy</code>: Undeploy a web application</li>
+ <li><code>start</code>: Start web application</li>
+ <li><code>reload</code>: Reload web application</li>
+ <li><code>stop</code>: Stop web application</li>
+ </ul>
+
+ <p>
+ In order for the deployment to be configured, create a file
+ called <code>deployer.properties</code> in the TCD installation
+ directory root. In this file, add the following name=value pairs
per
+ line:
+ </p>
+
+ <p>
+ Additionally, you will need to ensure that a user has been
+ setup for the target Tomcat Manager (which TCD uses) otherwise
the TCD
+ will not authenticate with the Tomcat Manager and the deployment
will
+ fail. To do this, see the Tomcat Manager page.
+ </p>
+
+ <ul>
+ <li>
+ <code>build</code>: The build folder used will be, by
default,
+ <code>${build}/webapp/${path}</code>. After the end of the
execution
+ of the <code>compile</code> target, the web application .WAR
will be
+ located at <code>${build}/webapp/${path}.war</code>.
+ </li>
+ <li>
+ <code>webapp</code>: The directory containing the exploded
web application
+ which will be compiled and validated. By default, the folder
is
+ <code>myapp</code>.
+ </li>
+ <li>
+ <code>path</code>: Deployed context path of the web
application,
+ by default <code>/myapp</code>.
+ </li>
+ <li>
+ <code>url</code>: Absolute URL to the Tomcat Manager web
application of a
+ running Tomcat server, which will be used to deploy and
undeploy the
+ web application. By default, the deployer will attempt to
access
+ a Tomcat instance running on localhost, at
+ <code>http://localhost:8080/manager</code>.
+ </li>
+ <li>
+ <code>username</code>: Tomcat Manager username (user should
have a role of
+ manager)
+ </li>
+ <li><code>password</code>: Tomcat Manager password.</li>
+ </ul>
+ </section>
</body>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]