| <?xml version="1.0"?> |
| <!DOCTYPE document [ |
| <!ENTITY project SYSTEM "project.xml"> |
| ]> |
| <document url="deployer-howto.html"> |
| |
| &project; |
| |
| <properties> |
| <author email="remm@apache.org">Remy Maucherat</author> |
| <title>Deployer HOW-TO</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> |
| |
| </body> |
| |
| </document> |