285 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
		
		
			
		
	
	
			285 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| 
								 | 
							
								<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide - Development Processes</title><meta name="author" value="Craig R. McClanahan"><meta name="email" value="craigmcc@apache.org"></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="
							 | 
						||
| 
								 | 
							
								      The Apache Tomcat Servlet/JSP Container
							 | 
						||
| 
								 | 
							
								    " border="0"></a></td><td><font face="arial,helvetica,sanserif"><h1>Apache Tomcat 6.0</h1></font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="true"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li></ul><p><strong>Contents</strong></p><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></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left"><table border="0" width="100%" cellspacing="4"><tr><td align="left" valign="top"><h1>Application Developer's Guide</h1><h2>Development Processes</h2></td><td align="right" valign="top" nowrap="true"><small><a href="printer/processes.html"><img src="../images/printer.gif" border="0" alt="Printer Friendly Version"><br>print-friendly<br>version
							 | 
						||
| 
								 | 
							
								                    </a></small></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Development Processes"><strong>Development Processes</strong></a></font></td></tr><tr><td><blockquote>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<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 assume that you will be using CVS for source
							 | 
						||
| 
								 | 
							
								code control, and that you have already configured access to the appropriate
							 | 
						||
| 
								 | 
							
								CVS repository.  Instructions for doing this are beyond the scope of this
							 | 
						||
| 
								 | 
							
								manual.  If you are using a different source code control environment, you
							 | 
						||
| 
								 | 
							
								will need to figure out the corresponding commands for your system.</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="One-Time Setup of Ant and Tomcat for Development"><strong>One-Time Setup of Ant and Tomcat for Development</strong></a></font></td></tr><tr><td><blockquote>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<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><em>Configure the Ant custom tasks</em>.  The implementation code for the
							 | 
						||
| 
								 | 
							
								    Ant custom tasks is in a JAR file named
							 | 
						||
| 
								 | 
							
								    <code>$CATALINA_HOME/server/lib/catalina-ant.jar</code>, which must be
							 | 
						||
| 
								 | 
							
								    copied in to the <code>lib</code> directory of your Ant installation.
							 | 
						||
| 
								 | 
							
								    <br><br></li>
							 | 
						||
| 
								 | 
							
								<li><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</code> assigned to
							 | 
						||
| 
								 | 
							
								    him or her.  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</code> role.
							 | 
						||
| 
								 | 
							
								    <br><br></li>
							 | 
						||
| 
								 | 
							
								</ul>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</blockquote></td></tr></table>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Create Project Source Code Directory"><strong>Create Project Source Code Directory</strong></a></font></td></tr><tr><td><blockquote>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<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 CVS
							 | 
						||
| 
								 | 
							
								repository.  This might be done by a series of commands like this, where
							 | 
						||
| 
								 | 
							
								<code>{project}</code> is the name under which your project should be
							 | 
						||
| 
								 | 
							
								stored in the CVS repository, and {username} is your login username:</p>
							 | 
						||
| 
								 | 
							
								<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
							 | 
						||
| 
								 | 
							
								cd {my home directory}
							 | 
						||
| 
								 | 
							
								mkdir myapp	<-- Assumed "project source directory"
							 | 
						||
| 
								 | 
							
								cd myapp
							 | 
						||
| 
								 | 
							
								mkdir docs
							 | 
						||
| 
								 | 
							
								mkdir src
							 | 
						||
| 
								 | 
							
								mkdir web
							 | 
						||
| 
								 | 
							
								mkdir web/WEB-INF
							 | 
						||
| 
								 | 
							
								cvs import -m "Initial Project Creation" {project} \
							 | 
						||
| 
								 | 
							
									{username} start
							 | 
						||
| 
								 | 
							
								</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<p>Now, to verify that it was created correctly in CVS, we will perform a
							 | 
						||
| 
								 | 
							
								checkout of the new project:</p>
							 | 
						||
| 
								 | 
							
								<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
							 | 
						||
| 
								 | 
							
								cd ..
							 | 
						||
| 
								 | 
							
								mv myapp myapp.bu
							 | 
						||
| 
								 | 
							
								cvs checkout {project}
							 | 
						||
| 
								 | 
							
								</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<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 align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
							 | 
						||
| 
								 | 
							
								cd {my home directory}
							 | 
						||
| 
								 | 
							
								cd myapp
							 | 
						||
| 
								 | 
							
								emacs build.xml		<-- if you want a real editor :-)
							 | 
						||
| 
								 | 
							
								cvs add build.xml
							 | 
						||
| 
								 | 
							
								cvs commit
							 | 
						||
| 
								 | 
							
								</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<p>Until you perform the CVS commit, your changes are local to your own
							 | 
						||
| 
								 | 
							
								development directory.  Committing makes those changes visible to other
							 | 
						||
| 
								 | 
							
								developers on your team that are sharing the same CVS repository.</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<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 5 is installed, and the manager application username and password.
							 | 
						||
| 
								 | 
							
								You might end up with something like this:</p>
							 | 
						||
| 
								 | 
							
								<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
							 | 
						||
| 
								 | 
							
								# Context path to install this application on
							 | 
						||
| 
								 | 
							
								app.path=/hello
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Tomcat 5 installation directory
							 | 
						||
| 
								 | 
							
								catalina.home=/usr/local/apache-tomcat-6.0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Manager webapp username and password
							 | 
						||
| 
								 | 
							
								manager.username=myusername
							 | 
						||
| 
								 | 
							
								manager.password=mypassword
							 | 
						||
| 
								 | 
							
								</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<p>In general, you will <strong>not</strong> want to check the
							 | 
						||
| 
								 | 
							
								<code>build.properties</code> file in to the CVS 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 align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
							 | 
						||
| 
								 | 
							
								cd {my home directory}
							 | 
						||
| 
								 | 
							
								cd myapp/web/WEB-INF
							 | 
						||
| 
								 | 
							
								emacs web.xml
							 | 
						||
| 
								 | 
							
								cvs add web.xml
							 | 
						||
| 
								 | 
							
								cvs commit
							 | 
						||
| 
								 | 
							
								</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Note that this is only an example web.xml file.  The full definition
							 | 
						||
| 
								 | 
							
								of the deployment descriptor file is in the
							 | 
						||
| 
								 | 
							
								<a href="http://java.sun.com/products/servlet">Servlet Specification.</a>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</blockquote></td></tr></table>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Edit Source Code and Pages"><strong>Edit Source Code and Pages</strong></a></font></td></tr><tr><td><blockquote>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<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>Whenever you wish to refresh your development directory to reflect the
							 | 
						||
| 
								 | 
							
								work performed by other developers, you will ask CVS to do it for you:</p>
							 | 
						||
| 
								 | 
							
								<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
							 | 
						||
| 
								 | 
							
								cd {my home directory}
							 | 
						||
| 
								 | 
							
								cd myapp
							 | 
						||
| 
								 | 
							
								cvs update -dP
							 | 
						||
| 
								 | 
							
								</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<p>To create a new file, go to the appropriate directory, create the file,
							 | 
						||
| 
								 | 
							
								and register it with CVS.  When you are satisfied with it's contents (after
							 | 
						||
| 
								 | 
							
								building and testing is successful), commit the new file to the repository.
							 | 
						||
| 
								 | 
							
								For example, to create a new JSP page:</p>
							 | 
						||
| 
								 | 
							
								<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
							 | 
						||
| 
								 | 
							
								cd {my home directory}
							 | 
						||
| 
								 | 
							
								cd myapp/web		<-- Ultimate destination is document root
							 | 
						||
| 
								 | 
							
								emacs mypage.jsp
							 | 
						||
| 
								 | 
							
								cvs add mypage.jsp
							 | 
						||
| 
								 | 
							
								... build and test the application ...
							 | 
						||
| 
								 | 
							
								cvs commit
							 | 
						||
| 
								 | 
							
								</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></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 subdirectory, don't forget to
							 | 
						||
| 
								 | 
							
								register it with CVS.</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<p>To edit an existing source file, you will generally just start editing
							 | 
						||
| 
								 | 
							
								and testing, then commit the changed file when everything works.  Although
							 | 
						||
| 
								 | 
							
								CVS can be configured to required you to "check out" or "lock" a file you
							 | 
						||
| 
								 | 
							
								are going to be modifying, this is generally not used.</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</blockquote></td></tr></table>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Build the Web Application"><strong>Build the Web Application</strong></a></font></td></tr><tr><td><blockquote>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<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 align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
							 | 
						||
| 
								 | 
							
								cd {my home directory}
							 | 
						||
| 
								 | 
							
								cd myapp		<-- Normally leave a window open here
							 | 
						||
| 
								 | 
							
								ant
							 | 
						||
| 
								 | 
							
								</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></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 align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
							 | 
						||
| 
								 | 
							
								cd {my home directory}
							 | 
						||
| 
								 | 
							
								cd myapp
							 | 
						||
| 
								 | 
							
								ant all
							 | 
						||
| 
								 | 
							
								</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></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>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</blockquote></td></tr></table>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Test Your Web Application"><strong>Test Your Web Application</strong></a></font></td></tr><tr><td><blockquote>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<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><em>Start Tomcat 5 if needed</em>.  If Tomcat 5 is not already running,
							 | 
						||
| 
								 | 
							
								    you will need to start it in the usual way.
							 | 
						||
| 
								 | 
							
								    <br><br></li>
							 | 
						||
| 
								 | 
							
								<li><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.
							 | 
						||
| 
								 | 
							
								    <br><br></li>
							 | 
						||
| 
								 | 
							
								<li><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.<br><br></li>
							 | 
						||
| 
								 | 
							
								<li><em>Test the application</em>.  Using your browser or other testing
							 | 
						||
| 
								 | 
							
								    tools, test the functionality of your application.
							 | 
						||
| 
								 | 
							
								    <br><br></li>
							 | 
						||
| 
								 | 
							
								<li><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 <code>cvs commit</code>) later on --
							 | 
						||
| 
								 | 
							
								    the output build directory is deleted and recreated as necessary.
							 | 
						||
| 
								 | 
							
								    <br><br></li>
							 | 
						||
| 
								 | 
							
								<li><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.
							 | 
						||
| 
								 | 
							
								    <br><br></li>
							 | 
						||
| 
								 | 
							
								<li><em>Remove the application when you re 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.</li>
							 | 
						||
| 
								 | 
							
								</ul>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<p>Do not forget to commit your changes to the source code repository when
							 | 
						||
| 
								 | 
							
								you have completed your testing!</p>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</blockquote></td></tr></table>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Creating a Release"><strong>Creating a Release</strong></a></font></td></tr><tr><td><blockquote>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<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>Issue the command <code>ant all</code> from the project source
							 | 
						||
| 
								 | 
							
								    directory, to rebuild everything from scratch one last time.
							 | 
						||
| 
								 | 
							
								    <br><br></li>
							 | 
						||
| 
								 | 
							
								<li>Use the <code>cvs tag</code> command 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.</li>
							 | 
						||
| 
								 | 
							
								<li>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.
							 | 
						||
| 
								 | 
							
								    <br><br></li>
							 | 
						||
| 
								 | 
							
								<li>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.</li>
							 | 
						||
| 
								 | 
							
								</ul>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</blockquote></td></tr></table>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
							 | 
						||
| 
								 | 
							
								        Copyright © 1999-2006, Apache Software Foundation
							 | 
						||
| 
								 | 
							
								        </em></font></div></td></tr></table></body></html>
							 |