You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@axis.apache.org by ve...@apache.org on 2012/01/08 23:35:17 UTC

svn commit: r1228986 [2/3] - in /axis/axis1/java/trunk: docs/ docs/images/ src/site/ src/site/resources/ src/site/resources/images/ src/site/xdoc/

Copied: axis/axis1/java/trunk/src/site/xdoc/developers-guide.xml (from r1228952, axis/axis1/java/trunk/docs/developers-guide.html)
URL: http://svn.apache.org/viewvc/axis/axis1/java/trunk/src/site/xdoc/developers-guide.xml?p2=axis/axis1/java/trunk/src/site/xdoc/developers-guide.xml&p1=axis/axis1/java/trunk/docs/developers-guide.html&r1=1228952&r2=1228986&rev=1228986&view=diff
==============================================================================
--- axis/axis1/java/trunk/docs/developers-guide.html (original)
+++ axis/axis1/java/trunk/src/site/xdoc/developers-guide.xml Sun Jan  8 22:35:16 2012
@@ -1,41 +1,38 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
 <html>
 <head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Axis Developer's Guide</title>
-    <link href="axis.css" rel=stylesheet type=text/css>
 </head>
 <body text="#000000" bgcolor="#FFFFFF">
 
 <center>
 <h1>
-<img SRC="images/axis.jpg" height=96 width=176></h1></center>
+<img SRC="images/axis.jpg" height="96" width="176"/></h1></center>
 
 <h1>
 Axis Developer's Guide</h1>
 <i>1.4 Version</i>
-<br><i>Feedback: <a href="mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a></i>
+<br/><i>Feedback: <a href="mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a></i>
 <h3>
 Table of Contents</h3>
 <a href="#Introduction">Introduction</a>
-<br><a href="#General Guidelines">General Guidelines</a>
-<br><a href="#Development Environment">Development Environment</a>
-<br><a href="#Pluggable-Components">Pluggable-Components</a>
-<br>&nbsp;&nbsp;&nbsp;<a href="#Discovery">Discovery</a>
-<br>&nbsp;&nbsp;&nbsp;<a href="#Logging/Tracing">Logging/Tracing</a>
-<br>&nbsp;&nbsp;&nbsp;<a href="#Axis Servlet Query String Plug-ins">Axis Servlet Query String Plug-ins</a>
-<br><a href="#Configuration Properties">Configuration Properties</a>
-<br><a href="#Exception Handling">Exception Handling</a>
-<br><a href="#Compile And Run">Compile and Run</a>
-<br><a href="#Internationalization">Internationalization</a>
-<br>&nbsp;&nbsp;&nbsp;<a href="#Extending Message Files">Extending Message Files</a>
-<br><a href="#Adding Testcases">Adding Testcases</a>
-<br><a href="#TestStructure">Test and Samples Structure</a>
-<br><a href="#CodeChecks">Adding Source Code Checks</a>
-<br><a href="#JUnit">JUnit and Axis</a>
-<br><a href="#Debugging">Debugging</a>
-<br><a href="#TCK">Running the JAX-RPC Compatibility Tests</a>
-<br>&nbsp;
+<br/><a href="#General Guidelines">General Guidelines</a>
+<br/><a href="#Development Environment">Development Environment</a>
+<br/><a href="#Pluggable-Components">Pluggable-Components</a>
+<br/>&#160;&#160;&#160;<a href="#Discovery">Discovery</a>
+<br/>&#160;&#160;&#160;<a href="#Logging/Tracing">Logging/Tracing</a>
+<br/>&#160;&#160;&#160;<a href="#Axis Servlet Query String Plug-ins">Axis Servlet Query String Plug-ins</a>
+<br/><a href="#Configuration Properties">Configuration Properties</a>
+<br/><a href="#Exception Handling">Exception Handling</a>
+<br/><a href="#Compile And Run">Compile and Run</a>
+<br/><a href="#Internationalization">Internationalization</a>
+<br/>&#160;&#160;&#160;<a href="#Extending Message Files">Extending Message Files</a>
+<br/><a href="#Adding Testcases">Adding Testcases</a>
+<br/><a href="#TestStructure">Test and Samples Structure</a>
+<br/><a href="#CodeChecks">Adding Source Code Checks</a>
+<br/><a href="#JUnit">JUnit and Axis</a>
+<br/><a href="#Debugging">Debugging</a>
+<br/><a href="#TCK">Running the JAX-RPC Compatibility Tests</a>
+<br/>&#160;
 <h2>
 <a NAME="Introduction"></a>Introduction</h2>
 This guide is a collection of topics related to developing code for Axis.
@@ -57,7 +54,7 @@ Code changes should comply with <a href=
 Conventions for the Java Programming Language"</a></li>
 
 <li>
-When fixing a <a href="http://nagoya.apache.org/bugzilla/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&product=Axis&short_desc=&short_desc_type=allwordssubstr&long_desc=&long_desc_type=allwordssubstr&bug_file_loc=&bug_file_loc_type=allwordssubstr&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&order=bugs.bug_id">
+When fixing a <a href="http://nagoya.apache.org/bugzilla/buglist.cgi?bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=Axis&amp;short_desc=&amp;short_desc_type=allwordssubstr&amp;long_desc=&amp;long_desc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_file_loc_type=allwordssubstr&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;order=bugs.bug_id">
 "Axis Bugzilla Bug"</a> include the href of the 
 bug in the svn commit message.</li>
 
@@ -71,7 +68,7 @@ impact on users must be considered and, 
 
 <li>
 If you are making a big change that may affect interoperability, please 
-run the <a href="http://xml.apache.org/~rubys/echotest.pl">echotest2 round 2 interop test</a> to ensure that your change does not result in any new interop failures.  You will also need the <a href="http://xml.apache.org/~rubys/client_deploy.wsdd">client_deploy.wsdd</a>.  Here are the <a href="http://xml.apache.org/~rubys/ApacheClientInterop.html">nightly interop test results</a>.
+run the <a href="http://xml.apache.org/~rubys/echotest.pl">echotest2 round 2 interop test</a> to ensure that your change does not result in any new interop failures.  You will also need the <a href="http://xml.apache.org/~rubys/client_deploy.wsdd">client_deploy.wsdd</a>.  Here are the <a href="http://xml.apache.org/~rubys/ApacheClientInterop.html">nightly interop test results</a>.</li>
 </ul>
 
 <h2>
@@ -91,18 +88,18 @@ The following packages are required for 
 Install Java 1.3.1 JDK (or later).</li>
 </ul>
 
-<p><br>The Axis jar files are built in the <tt>xml-axis/java/build/lib</tt>
-directory.&nbsp;&nbsp; Here is an example CLASSPATH, which I use when developing
-code:
+<p><br/>The Axis jar files are built in the <tt>xml-axis/java/build/lib</tt>
+directory.&#160;&#160; Here is an example CLASSPATH, which I use when developing
+code:</p>
 <blockquote>
 <blockquote><tt><font color="#009900">D:\\xerces\\xerces-1_4_2\\xerces.jar</font></tt>
-<br><tt><font color="#009900">G:\\junit3.7\\junit.jar</font></tt>
-<br><tt><font color="#009900">G:\\xml-axis\\java\\build\\lib\\commons-discovery.jar</font></tt>
-<br><tt><font color="#009900">G:\\xml-axis\\java\\build\\lib\\commons-logging.jar</font></tt>
-<br><tt><font color="#009900">G:\\xml-axis\\java\\build\\lib\\wsdl4j.jar</font></tt>
-<br><tt><font color="#009900">G:\\xml-axis\\java\\build\\lib\\axis.jar</font></tt>
-<br><tt><font color="#009900">G:\\xml-axis\\java\\build\\lib\\log4j-1.2.8.jar</font></tt>
-<br><tt><font color="#009900">G:\\xml-axis\\java\\build\\classes</font></tt></blockquote>
+<br/><tt><font color="#009900">G:\\junit3.7\\junit.jar</font></tt>
+<br/><tt><font color="#009900">G:\\xml-axis\\java\\build\\lib\\commons-discovery.jar</font></tt>
+<br/><tt><font color="#009900">G:\\xml-axis\\java\\build\\lib\\commons-logging.jar</font></tt>
+<br/><tt><font color="#009900">G:\\xml-axis\\java\\build\\lib\\wsdl4j.jar</font></tt>
+<br/><tt><font color="#009900">G:\\xml-axis\\java\\build\\lib\\axis.jar</font></tt>
+<br/><tt><font color="#009900">G:\\xml-axis\\java\\build\\lib\\log4j-1.2.8.jar</font></tt>
+<br/><tt><font color="#009900">G:\\xml-axis\\java\\build\\classes</font></tt></blockquote>
 </blockquote>
 If you access the internet via a proxy server, you'll need to set an environment
 variable so that the Axis tests do the same. Set ANT_OPTS to, for example:
@@ -122,8 +119,9 @@ An Axis-specific component factory shoul
 <ol>
 org.apache.axis.components.&lt;componentType>.&lt;factoryClassName>
 </ol>
+<p>
 For example, <code>org.apache.axis.components.logger.LogFactory</code> is the factory,
-or discovery mechanism, for the logger component/service.
+or discovery mechanism, for the logger component/service.</p>
 <p>
 The <code>org.apache.axis.components.image</code> package demonstrates
 both a factory, and supporting classes for different image tools used
@@ -132,7 +130,7 @@ external tooling, isolating it behind a 
 provides only a limited interface to meet Axis minimal requirements.
 This allows future designers
 and implementors to gain an explicit understanding of the Axis's
-specific requirements on these tools.
+specific requirements on these tools.</p>
 <h3>
 <a NAME="Logging/Tracing"></a>Logging/Tracing</h3>
 Axis logging and tracing is based on the Logging component of the
@@ -148,13 +146,13 @@ The interface maps closely to Log4J and 
 <h4>Using the Logger SPI</h4>
 <p>
 To use the JCL SPI from a Java class,
-include the following import statements:
+include the following import statements:</p>
 <ul>
 <code>
 import org.apache.commons.logging.Log;
-<br>
+<br/>
 import org.apache.axis.components.logger.LogFactory;
-<br>&nbsp;
+<br/>&#160;
 </code>
 </ul>
 For each class definition, declare and initialize a
@@ -162,31 +160,31 @@ For each class definition, declare and i
 <ul>
 <code>
 public class CLASS
-<br>{
-<br>&nbsp;&nbsp;&nbsp;private static Log log = LogFactory.getLog(CLASS.class);
-<br>&nbsp;&nbsp;&nbsp;...
-<br>&nbsp;
+<br/>{
+<br/>&#160;&#160;&#160;private static Log log = LogFactory.getLog(CLASS.class);
+<br/>&#160;&#160;&#160;...
+<br/>&#160;
 </code>
 </ul>
 <p>
 Messages are logged to a <i>logger</i>, such as <code>log</code>
 by invoking a method corresponding to <i>priority</i>:
 The <code>Log</code> interface defines the following methods for use
-in writing log/trace messages to the log:
+in writing log/trace messages to the log:</p>
 <ul>
 <code>
 log.fatal(Object message);
-<br>log.fatal(Object message, Throwable t);
-<br>log.error(Object message);
-<br>log.error(Object message, Throwable t);
-<br>log.warn(Object message);
-<br>log.warn(Object message, Throwable t);
-<br>log.info(Object message);
-<br>log.info(Object message, Throwable t);
-<br>log.debug(Object message);
-<br>log.debug(Object message, Throwable t);
-<br>log.trace(Object message);
-<br>log.trace(Object message, Throwable t);
+<br/>log.fatal(Object message, Throwable t);
+<br/>log.error(Object message);
+<br/>log.error(Object message, Throwable t);
+<br/>log.warn(Object message);
+<br/>log.warn(Object message, Throwable t);
+<br/>log.info(Object message);
+<br/>log.info(Object message, Throwable t);
+<br/>log.debug(Object message);
+<br/>log.debug(Object message, Throwable t);
+<br/>log.trace(Object message);
+<br/>log.trace(Object message, Throwable t);
 </code>
 </ul>
 While semantics for these methods are ultimately
@@ -194,15 +192,15 @@ defined by the implementation of the Log
 it is expected that the severity of messages is ordered
 as shown in the above list.
 <p>
-In addition to the logging methods, the following are provided:
+In addition to the logging methods, the following are provided:</p>
 <ul>
 <code>
 log.isFatalEnabled();
-<br>log.isErrorEnabled();
-<br>log.isWarnEnabled();
-<br>log.isInfoEnabled();
-<br>log.isDebugEnabled();
-<br>log.isTraceEnabled();
+<br/>log.isErrorEnabled();
+<br/>log.isWarnEnabled();
+<br/>log.isInfoEnabled();
+<br/>log.isDebugEnabled();
+<br/>log.isTraceEnabled();
 </code>
 </ul>
 These are typically used to guard code that
@@ -219,27 +217,27 @@ The following guidelines are suggested:
 <li>fatal - Severe errors that cause the Axis server to terminate prematurely.
 Expect these to be immediately visible on a console,
 and MUST be internationalized.</li>
-<br>&nbsp;
+<br/>&#160;
 <li>error - Other runtime errors or unexpected conditions.
 Expect these to be immediately visible on a console,
 and MUST be internationalized.</li>
-<br>&nbsp;
+<br/>&#160;
 <li>warn - Use of deprecated APIs, poor use of API, Almost errors, other
 runtime situations that are undesirable or unexpected, but not
 necessarily "wrong".
 Expect these to be immediately visible on a console,
 and MUST be internationalized.</li>
-<br>&nbsp;
+<br/>&#160;
 <li>info -
 Interesting runtime events (startup/shutdown).
 Expect these to be immediately visible on a console,
 so be conservative and keep to a minimum.
 These MUST be internationalized.</li>
-<br>&nbsp;
+<br/>&#160;
 <li>debug - detailed information on flow of through the system.
 Expect these to be written to logs only.
 These NEED NOT be internationalized, but it never hurts...</li>
-<br>&nbsp;
+<br/>&#160;
 <li>trace - more detailed information.
 Expect these to be written to logs only.
 These NEED NOT be internationalized, but it never hurts...</li>
@@ -255,7 +253,7 @@ Configuration of the behavior of the JCL
 logging toolkit being used.
 The JCL SPI (and hence Axis) uses
 <a href="http://jakarta.apache.org/log4j/docs/index.html">Log4J</a>
-by default if it is available (in the CLASSPATH).
+by default if it is available (in the CLASSPATH).</p>
 <h5>Log4J</h5>
 As
 <a href="http://jakarta.apache.org/log4j/docs/index.html">Log4J</a>
@@ -268,18 +266,18 @@ Configure Log4J using system properties 
 <p>
 Use this system property to specify the name of a Log4J configuration file.
 If not specified, the default configuration file is <i>log4j.properties</i>.
-A <i>log4j.properties</i> file is provided in <code>axis.jar</code>.
+A <i>log4j.properties</i> file is provided in <code>axis.jar</code>.</p>
 <p>This properties file can sometimes be overridden by placing a file of
 the same name so as to appear before <code>axis.jar</code> in the CLASSPATH.
 However, the precise behaviour depends on the classloader that is in use
-at the time, so we don't recommend this technique.
+at the time, so we don't recommend this technique.</p>
 <p>
 A safe way of overriding the properties file is to replace it in axis.jar.
 However, this isn't very convenient, especially if you want to tweak the
 properties during a debug session to filter out unwanted log entries.
 A more convenient alternative is to use an absolute file path to specify
 the properties file. This will even ignore web app's and their classloaders.
-So, for example on Linux, you could specify the system property:
+So, for example on Linux, you could specify the system property:</p>
 <pre>
 log4j.configuration=file:/home/fred/log4j.props
 </pre>
@@ -287,12 +285,12 @@ log4j.configuration=file:/home/fred/log4
 <li><strong>log4j.debug</strong>
 A good way of telling where log4j is getting its configuration from is to
 set this system property and look at the messages on standard output.
-<br>&nbsp;
+<br/>&#160;
 </li>
 <li><strong>log4j.rootCategory=<i>priority</i> [, <i>appender</i>]*</strong>
 Set the default (root) logger priority.
 
-<br>&nbsp;
+<br/>&#160;
 </li>
 <li><strong>log4j.logger.<i>logger.name</i>=<i>priority</i></strong>
 Set the priority for the named logger
@@ -317,11 +315,11 @@ and
 Likewise, setting
 <code>log4j.logger.org.apache.axis=DEBUG</code>
 will enable debug message for all Axis classes,
-but not for other Jakarta projects.
+but not for other Jakarta projects.</p>
 <p>
 A combination of settings will enable you to see the log events that
 you are interested in and omit the others.
-For example, the combination:
+For example, the combination:</p>
 <pre>
 log4j.logger.org.apache.axis=DEBUG 
 log4j.logger.org.apache.axis.encoding=INFO
@@ -330,7 +328,7 @@ log4j.logger.org.apache.axis.message=INF
 </pre>
 cuts down the number of a log entries produced by a single request to
 a manageable number.
-<br>&nbsp;
+<br/>&#160;
 </li>
 <li><strong>log4j.appender.<i>appender</i>.Threshold=<i>priority</i></strong>
 Log4J <i>appenders</i> correspond to different output devices:
@@ -342,11 +340,11 @@ This allows different levels of detail t
 at different log destinations.
 <p>
 For example: one can capture DEBUG (and higher) level information in a logfile,
-while limiting console output to INFO (and higher).
+while limiting console output to INFO (and higher).</p>
 </li>
 </ul>
 <h3>
-<a name="Axis Servlet Query String Plug-ins">Axis Servlet Query String Plug-ins</h3>
+<a name="Axis Servlet Query String Plug-ins"/>Axis Servlet Query String Plug-ins</h3>
 Any servlet that is derived from the <code>org.apache.axis.transport.http.AxisServlet</code> class 
 supports a number of standard query strings (<i>?list</i>, <i>?method</i>, and <i>?wsdl</i>) that 
 provide information from or perform operations on a web service (for instance, <i>?method</i> is 
@@ -362,53 +360,53 @@ objects (such as the Axis engine instanc
 <code>getProperty</code> method.  The following constants can be used to retrieve various objects provided 
 by the Axis servlet invoking the query string plug-in:
 <ul>
-<li><strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_NAME</strong><br>
+<li><strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_NAME</strong><br/>
 A <code>String</code> containing the name of the query string plug-in.  For instance, if the query string <i>?wsdl</i> is 
 provided, the name of the plugin is <i>wsdl</i>.
-<br><br>
+<br/><br/>
 </li>
-<li><strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_SERVICE_NAME</strong><br>
+<li><strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_SERVICE_NAME</strong><br/>
 A <code>String</code> containing the name of the Axis servlet that inovked the query string plug-in.
-<br><br>
+<br/><br/>
 </li>
-<li><strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_IS_DEVELOPMENT</strong><br>
+<li><strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_IS_DEVELOPMENT</strong><br/>
 A <code>Boolean</code> containing <code>true</code> if this version of Axis is considered to be in development 
 mode, <code>false</code> otherwise.
-<br><br>
+<br/><br/>
 </li>
-<li><strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_ENABLE_LIST</strong><br>
+<li><strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_ENABLE_LIST</strong><br/>
 A <code>Boolean</code> containing <code>true</code> if listing of the Axis server configuration is allowed, 
 <code>false</code> otherwise.
-<br><br>
+<br/><br/>
 </li>
-<li><strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_ENGINE</strong><br>
+<li><strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_ENGINE</strong><br/>
 A <code>org.apache.axis.server.AxisServer</code> object containing the engine for the Axis server.
-<br><br>
+<br/><br/>
 </li>
-<li><strong>org.apache.axis.transport.http.HTTPConstants.MC_HTTP_SERVLETREQUEST</strong><br>
+<li><strong>org.apache.axis.transport.http.HTTPConstants.MC_HTTP_SERVLETREQUEST</strong><br/>
 The <code>javax.servlet.http.HttpServletRequest</code> object from the Axis servlet that invoked the 
 query string plug-in
-<br><br>
+<br/><br/>
 </li>
-<li><strong>org.apache.axis.transport.http.HTTPConstants.MC_HTTP_SERVLETRESPONSE</strong><br>
+<li><strong>org.apache.axis.transport.http.HTTPConstants.MC_HTTP_SERVLETRESPONSE</strong><br/>
 The <code>javax.servlet.http.HttpServletResponse</code> object from the Axis servlet that invoked the 
 query string plug-in
-<br><br>
+<br/><br/>
 </li>
-<li><strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_WRITER</strong><br>
+<li><strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_WRITER</strong><br/>
 The <code>java.io.PrintWriter</code> object from the Axis servlet that invoked the 
 query string plug-in
-<br><br>
+<br/><br/>
 </li>
-<li><strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_LOG</strong><br>
+<li><strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_LOG</strong><br/>
 The <code>org.apache.commons.logging.Log</code> object from the Axis servlet that invoked the query 
 string plug-in, which is used to log messages.
-<br><br>
+<br/><br/>
 </li>
-<li><strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_EXCEPTION_LOG</strong><br>
+<li><strong>org.apache.axis.transport.http.HTTPConstants.PLUGIN_EXCEPTION_LOG</strong><br/>
 The <code>org.apache.commons.logging.Log</code> object from the Axis servlet that invoked the query 
 string plug-in, which is used to log exceptions.
-<br><br>
+<br/><br/>
 </li>
 </ul>
 Query string plug-in development is much like normal servlet development since the same basic 
@@ -446,7 +444,7 @@ query other sources of configuration inf
 Using this central point of access will allow the
 global configuration system to be redesigned
 to better support multiple Axis engines in a
-single JVM.
+single JVM.</p>
 
 <h2>
 <a NAME="Exception Handling"></a>Exception Handling</h2>
@@ -458,18 +456,18 @@ they are included here for two reasons.
 First, because they are not listed elsewhere in the
 Apache/Jakarta guidelines (or haven't been found).
 Second, because adherence to these guidelines is
-considered crucial to enterprise ready middleware.
+considered crucial to enterprise ready middleware.</p>
 <p>
 These guidelines are fundamentally independent of programming language.
 They are based on experience, but proper credit must be given to
 <i>More Effective C++</i>, by Scott Meyers,
-for opening the eyes of the innocent(?) many years ago.
+for opening the eyes of the innocent(?) many years ago.</p>
 <p>
 Finally, these are guidelines.
 There will always be exceptions to these guidelines,
 in which case all that can be asked (as per these guidelines)
 is that they be logged in the form of comments in the code.
-<p>
+</p>
 <ul>
 <li><h3>Primary Rule: Only Catch An Exception If You Know What To Do With It</h3></li>
 If code catches an exception, it should know what to do with it
@@ -478,7 +476,7 @@ Any exception to this rule must be docum
 Code reviewers are invited to put on their vulture beaks and peck away...
 <p>
 There are a few corrollaries to this rule.
-<p>
+</p>
 <ul>
 <li><h4>Handle Specific Exceptions in Inner Code</h4></li>
 Inner code is code <i>deep</i> within the program.
@@ -488,7 +486,6 @@ or categories of exceptions (parents in 
 and normal flow restored to the code.
 Note that behaviour of this sort may be significantly
 different between non-interactive code versus an interactive tool.
-<p>
 <li><h4>Catch All Exceptions in Outermost Flow of Control</h4></li>
 Ultimately, all exceptions must be dealt with at one level or another.
 For command-line tools, this means the <code>main</code>
@@ -503,14 +500,13 @@ While there is generally not much that c
 at a minimum the code should <u>log the exception</u>.
 In addition to logging, the Axis Server wraps all such exceptions
 in AxisFaults and returns them
-to the client code.
+to the client code.</p>
 <p>
 This may seem contrary to the primary rule,
 but in fact we are claiming that Axis does know
 what to do with this type of exception:
-exit gracefully.
+exit gracefully.</p>
 </ul>
-<p>
 <li><h3>Catching and Logging Exceptions</h3></li>
 When an Exception is going to cross a component boundry
 (client/server, or system/business logic),
@@ -518,8 +514,7 @@ the exception must be caught and logged 
 throwing component.
 It may then be rethrown, or wrapped, as described below.
 <p>
-When in doubt, log the exception.
-<p>
+When in doubt, log the exception.</p>
 <ul>
 <li><h4>Catch and Throw</h4></li>
 If an exception is caught and rethrown (unresolved),
@@ -527,12 +522,11 @@ logging of the exception is at the discr
 If any comments are logged, the exception should also be logged.
 <p>
 When in doubt, log the exception and any related local information
-that can help to identify the complete context of the exception.
+that can help to identify the complete context of the exception.</p>
 <p>
 Log the exception as an <i>error</i> (<code>log.error()</code>)
 if it is known to be an unresolved or unresolvable error,
-otherwise log it at the <i>informative</i> level (<code>log.info()</code>).
-<p>
+otherwise log it at the <i>informative</i> level (<code>log.info()</code>).</p>
 <li><h4>Catch and Wrap</h4></li>
 When exception <code>e</code> is caught and wrapped
 by a new exception <code>w</code>,
@@ -541,7 +535,7 @@ log exception <code>e</code> before thro
 Log the exception as an <i>error</i> (<code>log.error()</code>)
 if it is known to be an unresolved or unresolvable error,
 otherwise log it at the <i>informative</i> level (<code>log.info()</code>).
-<p>
+</p>
 <li><h4>Catch and Resolve</h4></li>
 When exception <code>e</code> is caught and resolved,
 logging of the exception is at the discretion of the coder and reviewers.
@@ -549,7 +543,7 @@ If any comments are logged, the exceptio
 Issues that must be balanced are performance and problem resolvability.
 <p>
 Note that in many cases, ignoring the exception may be appropriate.
-<p>
+</p>
 </ul>
 <li><h3>Respect Component Boundries</h3></li>
 There are multiple aspects of this guideline.
@@ -560,7 +554,6 @@ client's should have limited exposure/vi
 implementation details of a server - particularly
 when the server is published to outside parties.
 This implies a well designed server interface.
-<p>
 <ul>
 <li><h4>Isolate System Logic from Business Logic</h4></li>
 Exceptions generated by the Axis runtime
@@ -573,7 +566,7 @@ and a generally descriptive Exception ra
 Exceptions raised in the business logic
 (this includes the server and Axis handlers)
 must be delivered to the client code.
-<p>
+</p>
 <li><h4>Protect System Code from User Code</h4></li>
 Protect the Axis runtime from uncontrolled user business logic.
 For Axis, this means that dynamically configurable
@@ -585,7 +578,6 @@ Exceptions generated by user code and ca
 <li>Logged, and</li>
 <li>Delivered to the client program</li>
 </ul>
-<p>
 <li><h4>Isolate Visibility into Server from Client</h4></li>
 Specific exceptions should be logged at the server side,
 and a more general exception thrown to the client.
@@ -594,29 +586,26 @@ This prevents clues as to the nature of 
 from being revealed to client code.
 The Axis component boundries that should be respected are:
 <ul>
-<li>Client Code <--> AxisClient</li>
-<li>AxisClient <--> AxisServlet (AxisServer/AxisEngine)</li>
-<li>AxisServer/AxisEngine <--> Web Service</li>
+<li>Client Code &lt;--> AxisClient</li>
+<li>AxisClient &lt;--> AxisServlet (AxisServer/AxisEngine)</li>
+<li>AxisServer/AxisEngine &lt;--> Web Service</li>
 </ul>
 </ul>
-<p>
 <li><h3>Throwing Exceptions in Constructors</h3></li>
 Before throwing an exception in a constructor,
 ensure that any resources owned by the object are cleaned up.
 For objects holding resources,
 this requires catching <u>all</u> exceptions thrown by methods called
 within the constructor, cleaning up, and rethrowing the exceptions.
-<p>
-</ul>
 </ul>
 
 <h2>
 <a NAME="Compile And Run"></a>Compile and Run</h2>
 The <tt>xml-axis/java/build.xml</tt> file is the primary 'make' file used
-by ant to build the application and run the tests.&nbsp; The <tt>build.xml</tt>
-file defines ant build <i>targets</i>.&nbsp; Read the build.xml file for
-more information.&nbsp; Here are some of the useful targets:
-<br>&nbsp;
+by ant to build the application and run the tests.&#160; The <tt>build.xml</tt>
+file defines ant build <i>targets</i>.&#160; Read the build.xml file for
+more information.&#160; Here are some of the useful targets:
+<br/>&#160;
 <ul>
 <li>
 <tt>compile -> compiles the source and creates xml-axis/java/build/lib/axis.jar</tt></li>
@@ -630,20 +619,20 @@ more information.&nbsp; Here are some of
 <li>
 <tt>all-tests -> compiles and runs all of the tests</tt></li>
 
-<br>&nbsp;</ul>
+<br/>&#160;</ul>
 To compile the source code:
 <blockquote><tt>cd xml-axis/java</tt>
-<br><tt>ant compile</tt></blockquote>
+<br/><tt>ant compile</tt></blockquote>
 To run the tests:
 <blockquote><tt>cd xml-axis/java</tt>
-<br><tt>ant functional-tests</tt></blockquote>
+<br/><tt>ant functional-tests</tt></blockquote>
 <b>Note: </b>these tests start a server on port 8080. If this clashes with
 the port used by your web application server (such as Tomcat), you'll need
 to change one of the ports or stop your web application server when running
 the tests.
 <p><b>Please run <tt><font color="#009900">ant functional-tests</font></tt>
 and <tt><font color="#009900">ant all-tests</font></tt> before checking
-in new code.</b>
+in new code.</b></p>
 <h2>
 <a NAME="Internationalization"></a>Internationalization</h2>
 If you make changes to the source code that results in the generation of
@@ -654,19 +643,18 @@ guidelines to ensure that your text is p
 <ol>
 <li>
 Your text string should be added as a property to the resource.properties
-file (xml-axis/java/src/org/apache/axis/i18n/resource.properties).&nbsp;
+file (xml-axis/java/src/org/apache/axis/i18n/resource.properties).&#160;
 Note that some of the utility applications (i.e. tcpmon) have their own
 resource property files (tcpmon.properties).
 </li>
-<br>&nbsp;
+<br/>&#160;
 <li>
-The resource.properties file contains translation and usage instructions.&nbsp;
+The resource.properties file contains translation and usage instructions.&#160;
 Entries in a message resource file are of the form
 <font color="#009900">&lt;key&gt;=&lt;message&gt;</font>.
 Here is an example message:</li>
-<p>
-<p><font color="#009900">sample00=My name is {0}, and my title is {1}.</font>
-<br>&nbsp;
+<p><font color="#009900">sample00=My name is {0}, and my title is {1}.</font></p>
+<br/>&#160;
 <ol>
 <li>
 sample00 is the key that the code will use to access this message.</li>
@@ -675,39 +663,37 @@ The text after the = is the message text
 <li>
 The <font color="#009900">{<i>number</i>}</font> syntax defines the location
 for inserts.</li>
-<p>
 </ol>
 <li>
 The code should use the
 static method org.apache.axis.i18n.Messages.getMessage
-to obtain the text and add inserts.&nbsp; Here is an example usage:</li>
-<p>
+to obtain the text and add inserts.&#160; Here is an example usage:</li>
 <p><font color="#009900">Messages.getMessage("sample00", "Rich Scheuerle",
-"Software Developer");</font>
+"Software Developer");</font></p>
 
-<br>&nbsp;
+<br/>&#160;
 <li>
 <font color="#000000">All keys in the properties file should use the syntax
 &lt;string>&lt;2-digit-suffix>.</font></li>
 
-<br>&nbsp;
+<br/>&#160;
 <ol>
 <li>
 <font color="#000000"><b>Never change the message text in the properties
-file. </b>The message may be used in multiple places in the code.&nbsp;
+file. </b>The message may be used in multiple places in the code.&#160;
 Plus translation is only done on new keys.</font></li>
 
-<br>&nbsp;
+<br/>&#160;
 <li>
 <font color="#000000">If a code change requires a change to a message,
 create a new entry with an incremented 2-digit suffix.</font></li>
 
-<br>&nbsp;
+<br/>&#160;
 <li>
 <font color="#000000">All new entries should be placed at the bottom of
 the file to ease translation.</font></li>
 
-<br>&nbsp;
+<br/>&#160;
 <li>
 <font color="#000000">We may occasionally want to trim the properties file of old data, but this should only be done on major releases. </font></li>
 </ol>
@@ -717,19 +703,19 @@ the file to ease translation.</font></li
 <a NAME="Example"></a>Example</h4>
 
 Consider the following statement:
-<p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<p><code>&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 if ( operationName == null )</code>
-<br><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-throw new AxisFault( "No operation name specified" );</code>
+<br/><code>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
+throw new AxisFault( "No operation name specified" );</code></p>
 <p>
 We will add an entry into
-org/apache/axis/i18n/resource.properties:
-<p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;noOperation=No operation name specified.</code>
-<p>And change the code to read:
-<p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+org/apache/axis/i18n/resource.properties:</p>
+<p><code>&#160;&#160;&#160;&#160;&#160;&#160;&#160;noOperation=No operation name specified.</code></p>
+<p>And change the code to read:</p>
+<p><code>&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 if ( operationName == null )</code>
-<br><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-throw new AxisFault(Messages.getMessage("noOperation"));</code>
+<br/><code>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
+throw new AxisFault(Messages.getMessage("noOperation"));</code></p>
 
 <h3>
 <a NAME="Interface"></a>Interface</h3>
@@ -743,16 +729,16 @@ Axis provides a single class <code>org.a
 that manages both ResourceBundle and MessageFormat classes.
 Messages methods are:
 
-<p><code>public static java.util.ResourceBundle getResourceBundle();</code>
-<p><code>public static String getMessage(String key) throws java.util.MissingResourceException;</code>
-<p><code>public static String getMessage(String key, String var) throws java.util.MissingResourceException;</code>
-<p><code>public static String getMessage(String key, String var1, String var2) throws java.util.MissingResourceException;</code>
-<p><code>public static String getMessage(String key, String[] vars) throws java.util.MissingResourceException;</code>
+<p><code>public static java.util.ResourceBundle getResourceBundle();</code></p>
+<p><code>public static String getMessage(String key) throws java.util.MissingResourceException;</code></p>
+<p><code>public static String getMessage(String key, String var) throws java.util.MissingResourceException;</code></p>
+<p><code>public static String getMessage(String key, String var1, String var2) throws java.util.MissingResourceException;</code></p>
+<p><code>public static String getMessage(String key, String[] vars) throws java.util.MissingResourceException;</code></p>
 
 <p>Axis programmers can work with the resource bundle directly via a call
 to <code>Messages.getResourceBundle()</code>,
 but the <code>getMessage()</code>
-methods should be used instead for two reasons:
+methods should be used instead for two reasons:</p>
 <ol>
 <li>
 It's a shortcut.  It is cleaner to call</li>
@@ -761,7 +747,7 @@ It's a shortcut.  It is cleaner to call<
 than
 <ol><code>Messages.getResourceBundle().getString("myMsg00");</code></ol>
 
-<br>
+<br/>
 <li>
 The <code>getMessage</code> methods enable messages with variables.</li>
 </ol>
@@ -773,28 +759,28 @@ If you have a message with no variables
 then simply call
 <ol><code>Messages.getMessage("myMsg00");</code></ol>
 
-<p><br>If you have a message with variables, use the syntax
+<p><br/>If you have a message with variables, use the syntax
 <font face="Courier New,Courier">"{X}"</font>
 where <code>X</code> is
-the number of the variable, starting at 0. For example:
+the number of the variable, starting at 0. For example:</p>
 <ol><code>myMsg00=My {0} is {1}.</code></ol>
 then call:
 <ol><code>Messages.getMessage("myMsg00","name", "Russell");</code></ol>
-and the resulting string will be:&nbsp; "My name is Russell."
-<p>You could also call the String array version of <font face="Courier New,Courier"><font size=-1>getMessage</font></font>:
+and the resulting string will be:&#160; "My name is Russell."
+<p>You could also call the String array version of <font face="Courier New,Courier"><font size="-1">getMessage</font></font>:</p>
 <ol><code>Messages.getMessage("myMsg00", new String[] {"name", "Russell"});</code></ol>
 
-<p><br>The String array version of <font face="Courier New,Courier"><font size=-1>getMessage</font></font>
+<p><br/>The String array version of <font face="Courier New,Courier"><font size="-1">getMessage</font></font>
 is all that is necessary, but the vast majority of messages will have 0,
-1 or 2 variables, so the other <font face="Courier New,Courier"><font size=-1>getMessage</font></font>
+1 or 2 variables, so the other <font face="Courier New,Courier"><font size="-1">getMessage</font></font>
 methods are provided as a convenience to avoid the complexity of the String
-array version.
-<p>Note that the <font face="Courier New,Courier"><font size=-1>getMessage</font></font>
-methods throw <font face="Courier New,Courier"><font size=-1>MissingResourceException</font></font>
-if the resource cannot be found.&nbsp; And ParseException if there are
-more {X} entries than arguments.&nbsp; These exceptions are <font face="Courier New,Courier"><font size=-1>RuntimeException'</font></font>s,
-so the caller doesn't have to explicitly catch them.
-<p>The resource bundle properties file is org/apache/axis/i18n/resource.properties.
+array version.</p>
+<p>Note that the <font face="Courier New,Courier"><font size="-1">getMessage</font></font>
+methods throw <font face="Courier New,Courier"><font size="-1">MissingResourceException</font></font>
+if the resource cannot be found.&#160; And ParseException if there are
+more {X} entries than arguments.&#160; These exceptions are <font face="Courier New,Courier"><font size="-1">RuntimeException'</font></font>s,
+so the caller doesn't have to explicitly catch them.</p>
+<p>The resource bundle properties file is org/apache/axis/i18n/resource.properties.</p>
 
 <h3>
 <a NAME="Extending Message Files"></a>Extending Message Files</h3>
@@ -803,17 +789,17 @@ within Axis all messages are placed in
 org.apache.axis.i18n.resource.properties.
 There are facilities for extending the messages without
 modifying this file for integration or 3rd party extensions to Axis.
-See the <a href="integration-guide.html#Extending Message Files"/>Integration Guide</a> for details.
+See the <a href="integration-guide.html#Extending Message Files">Integration Guide</a> for details.
 
 <h2>
 <a NAME="Adding Testcases"></a><font color="#000000">Adding Testcases</font></h2>
 <P>See Also: <a href="#TestStructure">Test and Samples Structure</a></P>
 <font color="#000000"><b>Editor's Note: </b>We need more effort to streamline
-and simplify the addition of tests.&nbsp; We also need to think about categorizing
+and simplify the addition of tests.&#160; We also need to think about categorizing
 tests as the test bucket grows.</font>
-<br>&nbsp;
+<br/>&#160;
 <p><font color="#000000">If you make changes to Axis, please add a test
-that uses your change.&nbsp; Why?</font>
+that uses your change.&#160; Why?</font></p>
 <ul>
 <li>
 <font color="#000000">The test validates that your new code works.</font></li>
@@ -831,7 +817,7 @@ Axis.</font></li>
 development.</font></li>
 </ul>
 
-<p><br><font color="#000000">Some general principles:</font>
+<p><br/><font color="#000000">Some general principles:</font></p>
 <ul>
 <li>
 <font color="#000000">Tests should be self-explanatory.</font></li>
@@ -847,10 +833,10 @@ development.</font></li>
 own directory in the <tt>xml-axis/java/test</tt> directory</font></li>
 </ul>
 
-<p><br><font color="#000000">One way to build a test is to "cut and paste"
-and existing tests, and then modify the test to suit your needs.&nbsp;
+<p><br/><font color="#000000">One way to build a test is to "cut and paste"
+and existing tests, and then modify the test to suit your needs.&#160;
 This approach is becoming more complicated as the different kinds of tests
-grow.</font>
+grow.</font></p>
 <P>
 A good "non-wsdl" test for reference is test/saaj.
 </P>
@@ -859,100 +845,101 @@ A good "non-wsdl" test for reference is 
 <font color="#000000">Here are the steps that I used to create the <tt>sequence</tt>
 test, which generates code from a wsdl file and runs a sequence validation
 test:</font>
-<br>&nbsp;
+<br/>&#160;
 <ol>
 <li>
 <font color="#000000">Created a <tt>xml-axis/java/test/wsdl/sequence</tt>
 directory.</font></li>
 
-<br>
+<br/>
 <li>
 <font color="#000000">Created a <tt>SequenceTest.wsdl</tt> file defining
 the webservice.</font></li>
-<BR>
+<br/>
 <li>
 <font color="#000000">Ran the Wsdl2java emitter to create Java files:</font></li>
 <p><tt><font color="#993366">java org.apache.axis.wsdl.Wsdl2java -t -s
 SequenceTest.wsdl</font></tt>
-<br>
+</p>
 <ol>
 <li>
 <font color="#000000">The -t option causes the emitter to generate a *TestCase.java
 file that hooks into the test harness. This file is operational without
-any additional changes.&nbsp; Copy the *TestCase.java file into the same
-directory as your wsdl file.&nbsp; (Ideally only the Java files that are
-changed need to be in your directory.&nbsp; So this file is not needed,
+any additional changes.&#160; Copy the *TestCase.java file into the same
+directory as your wsdl file.&#160; (Ideally only the Java files that are
+changed need to be in your directory.&#160; So this file is not needed,
 but please make sure to modify your &lt;wsdl2java ...> clause (described
 below) to emit a testcase.</font></li>
 <li>
 <font color="#000000">The -s option causes the emitter to generate a *SOAPBindingImpl.java
-file.&nbsp; The Java file contains empty methods for the service.&nbsp;
-You probably want to fill them in with your own logic.&nbsp; Copy the *SOAPBindingImpl.java
-file into the same directory as your wsdl file.&nbsp; (If no changes are
-needed in the Java file, you don't need to save it.&nbsp; But you will
+file.&#160; The Java file contains empty methods for the service.&#160;
+You probably want to fill them in with your own logic.&#160; Copy the *SOAPBindingImpl.java
+file into the same directory as your wsdl file.&#160; (If no changes are
+needed in the Java file, you don't need to save it.&#160; But you will
 need to make sure that your &lt;wsdl2java ...> clause generates a skeleton).</font></li>
 <li>
-<font color="#000000">Remove all of the Java files that don't require modification.&nbsp;
+<font color="#000000">Remove all of the Java files that don't require modification.&#160;
 So you should have three files in your directory (wsdl file, *TestCase.java,
-and *SOAPBindingImpl.java).&nbsp; My sequence test has an another file
+and *SOAPBindingImpl.java).&#160; My sequence test has an another file
 due to some additional logic that I needed.</font></li>
 </ol>
 <tt><font color="#993366"></font></tt>
-<BR>
+<br/>
 <li>
 <font color="#000000">The <tt>test/wsdl/sequence/build.xml</tt> file
-controls the building of this test.&nbsp; Locate the "compile" target.&nbsp;
+controls the building of this test.&#160; Locate the "compile" target.&#160;
 Add a clause that runs the Wsdl2java code.  I would recommend stealing something from the
 test/wsdl/roundtrip/build.xml file (it does a LOT of wsdl2java and java2wsdl calls).
 Here is the one for SequenceTest:</font></li>
-<p><tt><font color="#663366">&nbsp;&nbsp;&nbsp; </font><font color="#993366">&lt;!--
+<p><tt><font color="#663366">&#160;&#160;&#160; </font><font color="#993366">&lt;!--
 Sequence Test --></font></tt>
-<br><tt><font color="#993366">&nbsp;&nbsp;&nbsp; &lt;wsdl2java url="${axis.home}/test/wsdl/sequence/SequenceTest.wsdl"</font></tt>
-<br><tt><font color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<br/><tt><font color="#993366">&#160;&#160;&#160; &lt;wsdl2java url="${axis.home}/test/wsdl/sequence/SequenceTest.wsdl"</font></tt>
+<br/><tt><font color="#993366">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 output="${axis.home}/build/work"</font></tt>
-<br><tt><font color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<br/><tt><font color="#993366">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 deployscope="session"</font></tt>
-<br><tt><font color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<br/><tt><font color="#993366">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 skeleton="yes"</font></tt>
-<br><tt><font color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<br/><tt><font color="#993366">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 messagecontext="no"</font></tt>
-<br><tt><font color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<br/><tt><font color="#993366">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 noimports="no"</font></tt>
-<br><tt><font color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<br/><tt><font color="#993366">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 verbose="no"</font></tt>
-<br><tt><font color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<br/><tt><font color="#993366">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 testcase="no"></font></tt>
-<br><tt><font color="#993366">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<br/><tt><font color="#993366">&#160;&#160;&#160;&#160;&#160;&#160;&#160;
 &lt;mapping namespace="urn:SequenceTest2" package="test.wsdl.sequence"/&gt;</font></tt>
-<br><tt><font color="#993366">&nbsp;&nbsp;&nbsp; &lt;/wsdl2java></font></tt>
-<br>
+<br/><tt><font color="#993366">&#160;&#160;&#160; &lt;/wsdl2java></font></tt>
+<br/>
+</p>
 <li>
-<font color="#000000">Enable the <font color="#993366">run</font><font color="#000000"> target in the new
+<font color="#000000">Enable the </font><font color="#993366">run</font><font color="#000000"> target in the new
  build.xml file.</font> You need to choose from the execute-Component and the (soon to be introduced) 
 execute-Simple-Test target.  These control HOW the test is invoked when run as a single component.  
 The <font color="#993366">execute-Component</font> sets up the tcp-server and http-server prior to running the test, as 
 well as handles deploying and services that may be needed.  The <font color="#993366">execute-Simple-test</font> 
-simply invokes the raw test class file.<BR>
-<BR>
+simply invokes the raw test class file.<br/>
+</li>
 <li>
-<font color="#000000">Done.&nbsp; Run </font><tt><font color="#993366">ant
+<font color="#000000">Done.&#160; Run </font><tt><font color="#993366">ant
 functional-tests</font><font color="#000000"> </font></tt><font color="#000000">to
-verify.&nbsp; Check in your test.</font></li>
+verify.&#160; Check in your test.</font></li>
 
-<br>&nbsp;</ol>
+<br/>&#160;</ol>
 
-<h2><a NAME="TestStructure"></a>Test Structure</H2>
-<a href="AxisTestRedesign.html">The Test and Samples Redesign Document is here</a><BR>
+<h2><a NAME="TestStructure"></a>Test Structure</h2>
+<a href="AxisTestRedesign.html">The Test and Samples Redesign Document is here</a><br/>
 <P>
 As of Axis 1.0, RC1, we have moved to a "componentized" test structure.  Instead of having one high-level large 
 recursive function, there are smaller, simple "component" build.xml files in the leaf level of the test/** and 
 samples/** trees.</P>
 <P>
-These "component" files have a common layout. Their primary targets are:<BR>
+These "component" files have a common layout. Their primary targets are:<br/>
 <UL>
-<LI>clean - reset the build destination(s)
-<LI>compile - javac, wsdl2java, java2wsdl instructions
-<LI>run - "executes" the test
+<LI>clean - reset the build destination(s)</LI>
+<LI>compile - javac, wsdl2java, java2wsdl instructions</LI>
+<LI>run - "executes" the test</LI>
 </UL>
 </P>
 <P>A "sample" test xml file can be found in test/templateTest</P>
@@ -964,11 +951,11 @@ followed such as using internationalised
 <p>
 If a convention can be reduced to a regular expression match,
 it can be enforced at build time by updating
-java/test/utils/TestSrcContent.java.
+java/test/utils/TestSrcContent.java.</p>
 <p>
 All that is necessary is to add a pattern to the static FileNameContentPattern
 array.
-Each pattern has three parameters:
+Each pattern has three parameters:</p>
 <ol>
 <li>a pattern that matches filenames that are to be checked,</li>
 <li>a pattern to be searched for in the chosen files, and</li>
@@ -977,17 +964,17 @@ Each pattern has three parameters:
 </ol>
 <p>
 A reasonable summary of the regular expression notation is provided in
-the <a href="http://jakarta.apache.org/oro/api/org/apache/oro/text/regex/package-summary.html">Jakarta ORO javadocs</a>.
+the <a href="http://jakarta.apache.org/oro/api/org/apache/oro/text/regex/package-summary.html">Jakarta ORO javadocs</a>.</p>
 
 <h2>
 <a NAME="JUnit"></a>JUnit and Axis</h2>
 
 <p>
 You try to run some JUnit tests on an Axis client that invokes a web service, 
-and you always get this exception:
+and you always get this exception:</p>
 <pre>
 java.lang.ExceptionInInitializerError 
-at org.apache.axis.client.Service.<init>(Service.java:108) 
+at org.apache.axis.client.Service.&lt;init>(Service.java:108) 
 ... 
 
 Caused by: org.apache.commons.logging.LogConfigurationException: ... 
@@ -1003,14 +990,13 @@ reload modified classes every time the u
 the user doesn't need to relaunch the TestRunner after every edit. For this, 
 JUnit uses its own classloader, junit.runner.TestCaseClassLoader. As of JUnit 
 3.8.1, confusion can arise between TestCaseClassLoader and the system class 
-loader as to which loader did or should load which classes.
+loader as to which loader did or should load which classes.</p>
 <p>
-There are two ways to avoid this problem.
+There are two ways to avoid this problem.</p>
 <ul>
 <li>Sure and simple fix. Turn off dynamic class reloading by running 
 junit.swingui.TestRunner with the -noloading argument. 
 </li>
-<p>
 <li>Finicky and fancy fix, only necessary if you want dynamic class reloading. 
 Tell TestCaseClassLoader to ignore certain packages and their sub-packages, 
 deferring them to the system classloader. You can do this using a file located 
@@ -1034,17 +1020,17 @@ excluded.8=net.jini.*
 Copy this file, preserving the directory path, into another location, e.g. 
 deployDir. So the copied properties file's path will be 
 deployDir/junit/runner/excluded.properties. Add an extra entry to the end of 
-this file:
+this file:</p>
 <pre>
 excluded.9=org.apache.*
 </pre>
 <p>
 Edit your classpath so that deployDir appears before junit.jar. This way, the 
 modified excluded.properties will be used, rather than the default. (Don't add 
-the path to excluded.properties itself to the classpath.)
+the path to excluded.properties itself to the classpath.)</p>
 <p>
 This fix will prevent the commons-logging exception. However, other 
-classloading problems might still arise. For example:
+classloading problems might still arise. For example:</p>
 <pre>
 Dec 10, 2002 7:16:16 PM org.apache.axis.encoding.ser.BeanPropertyTarget set 
 SEVERE: Could not convert [Lfoo.bar.Child; to bean field 'childrenAsArray', 
@@ -1060,28 +1046,28 @@ at org.apache.axis.encoding.Deserializer
 </pre>
 <p>
 In this case, you have no choice but to give up on dynamic class reloading and 
-use the -noloading argument.
+use the -noloading argument.</p>
 <p>
 One other heads-up about JUnit testing of an Axis web service. Suppose you have 
 run JUnit tests locally on the component that you want to expose as a web 
 service. You press the "Run" button to initiate a series of tests. Between each 
 test, all your data structures are re-initialized. Your tests produce a long 
-green bar. Good.
+green bar. Good.</p>
 <p>
 Suppose you now want to run JUnit tests on an Axis client that is connecting to 
 an application server running the Axis web application and with it your web 
-service. Between each test, JUnit will automatically re-initialize your client. 
+service. Between each test, JUnit will automatically re-initialize your client.</p> 
 <p>
 Your server-side data structures are a different matter. If you're checking 
 your server data at the end of each test (as you should be) and you run more 
 than one test at a time, the second and later tests will fail because they are 
 generating cumulative data on the Axis server based on preceding tests rather 
-than fresh data based only on the current one.
+than fresh data based only on the current one.</p>
 <p>
 This means that, for each test, you must manually re-initialize your web 
 service. One way to accomplish this is to add to your web service interface a 
 re-initialize operation. Then have the client call that operation at the start 
-of each test.
+of each test.</p>
 
 
 <h2>
@@ -1091,7 +1077,7 @@ of each test.
 <p>
 Here is an easy way to monitor the messages while running
 <code>functional-tests</code> (or <code>all-tests</code>).
-<br>Start up tcpmon listening on 8080 and forwarding to a different port:
+<br/>Start up tcpmon listening on 8080 and forwarding to a different port:</p>
 <blockquote><tt>java org.apache.axis.utils.tcpmon 8080 localhost 8011</tt></blockquote>
 Run your tests, but use the forwarded port for the SimpleAxisServer, and
 indicate that functional-tests should continue if a failure occurs.
@@ -1100,25 +1086,25 @@ indicate that functional-tests should co
 The SOAP messages for all of the tests should appear in the tcpmon window.
 <p>
 <code>tcpmon</code> is described in more detail in the
-<a href="user-guide.html#tcpmon">Axis User's Guide</a>.
+<a href="user-guide.html#tcpmon">Axis User's Guide</a>.</p>
 
 <h4>Using <code>SOAP Monitor</code> to Monitor Functional Tests.</h4>
 <p>
 If you are debugging code that is running as a web application using
 a web application server (such as Tomcat) then you may also use the
 SOAP Monitor utility to view the SOAP request and response messages.
-<br>Start up the SOAP monitor utility by loading the SOAP monitor applet 
+<br/>Start up the SOAP monitor utility by loading the SOAP monitor applet 
 in your web browser window:
 <blockquote><tt>http://localhost:&lt;port&gt;/axis/SOAPMonitor</tt></blockquote>.
 As you run your tests, the SOAP messages should appear in the SOAP 
-monitor window.
+monitor window.</p>
 <p>
 <code>SOAP Monitor</code> is described in more detail in the
-<a href="user-guide.html#soapmon">Axis User's Guide</a>.
+<a href="user-guide.html#soapmon">Axis User's Guide</a>.</p>
 
 <h4>Running a Single Functional Test</h4>
 In one window start the server:
-<br>
+<br/>
 <blockquote><tt>java org.apache.axis.transport.http.SimpleAxisServer -p 8080</tt></blockquote>
 In another window, first deploy the service you're testing:
 <blockquote><tt>java org.apache.axis.client.AdminClient deploy.wsdd</tt></blockquote>
@@ -1129,7 +1115,6 @@ Then bring up the JUnit user interface w
 This section is oriented to the Axis default logger: Log4J.
 For additional information on Log4J, see the section
 <a href="#Configuring the Logger">Configuring the Logger</a>.
-<p>
 <ul>
 <li><h5>Overriding Log4J properties</h5></li>
 The <code>log4j.properties</code> file
@@ -1141,40 +1126,35 @@ most of which involve
 extracting <code>log4j.properties</code> from <code>axis.jar</code>
 and modifying as appropriate.
 <ul>
-<p>
 <li>
 If you are building and executing <code>Java</code> programs from
 a command line or script file,
 include the JVM option
 <code>-Dlog4j.configuration=<i>yourConfigFile</i></code>.
 </li>
-<p>
 <li>
 Set <code>CLASSPATH</code> such that
 your version of <code>log4j.properties</code> appears
 prior to <code>axis.jar</code> in the <code>CLASSPATH</code>.
 </li>
-<p>
 <li>
 If you are building and executing your programs using <code>ant</code>
 (this includes building Axis and running it's tests),
 set the environment variable <code>ANT_OPTS</code> to <code>-Dlog4j.configuration=<i>yourConfigFile</i></code>.
 </li>
-<p>
 <li>
 If you are building Axis, you can change <code>src/log4j.properties</code>
 directly.  Be sure NOT to commit your change(s).
 </li>
 </ul>
 
-<br>
+<br/>
 <li><h5>Turning on ALL DEBUG Output</h5></li>
 <ul>
 <li>
 Set the <code>log4j.rootCategory</code> <i>priority</i> to
 <code>DEBUG</code>.
 </li>
-<p>
 <li>
 Set the <i>priority</i> threshold for an appender to <code>DEBUG</code>
 (The <code>log4j.properties</code> file in Axis defines two appenders:
@@ -1182,25 +1162,22 @@ Set the <i>priority</i> threshold for an
 </li>
 </ul>
 
-<br>
+<br/>
 <li><h5>Selective DEBUG Output</h5></li>
 <ul>
 <li>
 Set the <code>log4j.rootCategory</code> <i>priority</i> to
 <code>INFO</code> or higher.
 </li>
-<p>
 <li>
 Set the <code>log4j.logger.<i>logger.name</i></code> <i>priority</i> to
 <code>DEBUG</code> for the loggers that you are interested in.
 </li>
-<p>
 <li>
 Set the <i>priority</i> threshold for an appender to <code>DEBUG</code>
 (The <code>log4j.properties</code> file in Axis defines two appenders:
 <code>CONSOLE</code> and <code>LOGFILE</code>).
 </li>
-<p>
 <li>
 If you are still seeing more than you want to see,
 you will need to use other tools to extract the information
@@ -1227,14 +1204,14 @@ If you choose to do this, you will need 
 which enforces avoidance of
 <code>System.out.println</code> and <code>System.err.println</code>.
 It follows that you will need to remove your statements
-before checking the code back in.
+before checking the code back in.</p>
 <p>
 As an alternative, 
 we strongly encourage you to 
 take a few moments and introduce debug statements:
 <code>log.debug("reasonably terse and meaningful message")</code>.
 If a debug message is useful for understanding a problem now,
-it may be useful again in the future to you or a peer.
+it may be useful again in the future to you or a peer.</p>
 
 <h2>
 <a NAME="TCK"></a>Running the JAX-RPC Compatibility Tests</h2>
@@ -1246,12 +1223,12 @@ choosing.
 The installation instructions are in the JAX-RPC Release Notes document which
 is stored in the docs directory.
 If you open the index.html file in the docs directory using a web browser,
-you'll see a list of all the documents supplied with the kit.
+you'll see a list of all the documents supplied with the kit.</p>
 <p>
 Note that the kit includes the JavaTest test harness which is used for running
-the compatibility tests.
+the compatibility tests.</p>
 <p>
 If any more information is needed about running these tests, please add
-it here!
+it here!</p>
 </body>
 </html>