You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ch...@apache.org on 2005/02/23 10:30:22 UTC

svn commit: r154991 - in webservices/axis/trunk/java: maven.xml xdocs/ClientAPI.html xdocs/OMTutorial.html xdocs/userguide.html

Author: chinthaka
Date: Wed Feb 23 01:30:20 2005
New Revision: 154991

URL: http://svn.apache.org/viewcvs?view=rev&rev=154991
Log: (empty)


Modified:
    webservices/axis/trunk/java/maven.xml
    webservices/axis/trunk/java/xdocs/ClientAPI.html
    webservices/axis/trunk/java/xdocs/OMTutorial.html
    webservices/axis/trunk/java/xdocs/userguide.html

Modified: webservices/axis/trunk/java/maven.xml
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/maven.xml?view=diff&r1=154990&r2=154991
==============================================================================
--- webservices/axis/trunk/java/maven.xml (original)
+++ webservices/axis/trunk/java/maven.xml Wed Feb 23 01:30:20 2005
@@ -228,6 +228,7 @@
     <attainGoal name="dist-bin"/>
     <attainGoal name="war"/>
     <attainGoal name="javadoc-gen"/>
+    <attainGoal name="pdf"/>
     <copy todir="target/docs/api">
 		<fileset dir="target/apidocs" />
 	</copy>
@@ -235,6 +236,8 @@
 	<copy file="target/axis2-src-M1.zip" tofile="target/docs/dist/axis2-src-M1.zip"/>
 	<copy file="target/axis2-bin-M1.zip" tofile="target/docs/dist/axis2-bin-M1.zip"/>
 	<copy file="target/axis2.war" tofile="target/docs/dist/axis2.war"/>
+	<copy file="target/pdf/axis2.pdf" tofile="target/docs/axis2.pdf"/>
+	<ant:delete dir="target/pdf"/>
   </preGoal>
   </project>
 

Modified: webservices/axis/trunk/java/xdocs/ClientAPI.html
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/xdocs/ClientAPI.html?view=diff&r1=154990&r2=154991
==============================================================================
--- webservices/axis/trunk/java/xdocs/ClientAPI.html (original)
+++ webservices/axis/trunk/java/xdocs/ClientAPI.html Wed Feb 23 01:30:20 2005
@@ -78,10 +78,10 @@
 </source>
 <h3>Engine</h3>
 <p>This is Axis 2 engine and it does not make any difference whether the engine is used in the client side or the server side.&nbsp; </p>
-<h3>Correlator</h3>Correlator is required when client uses the non-blocking API to invoke a web service. Its stores callback object with a key field as messageID. This is a singleton class which consists of following two methods. 
-<p>&nbsp;&nbsp;<span class="style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void addCorrelationInfo(String msgid, Callback callbackObj)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-</span></p>
-<p class="style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Callback getCorrelationInfo(String MessageID)</p>
+<h3>Correlator</h3>
+<p>Correlator is required when client uses the non-blocking API to invoke a web service. Its stores callback object with a key field as messageID. This is a singleton class which consists of following two methods. </p>
+<pre><span class="style1"> public void addCorrelationInfo(String msgid, Callback callbackObj)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    </span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+   public Callback getCorrelationInfo(String MessageID) </pre>
 <h3>Listener </h3>
 <p>A separate listener is required to provide the asynchronous communication between the client and the service. That is, when the client retrieves the response (if any) using a separate transport connection, listener will act as an addressable end point to the service so that it can send the service responses directly to the listener.</p>
 <h3>ClientProvider</h3>
@@ -90,37 +90,47 @@
 <h2>How Axis 2 Architecture Supports the above Message Patterns</h2>
 <h3>Robust Invocation</h3>
 <p>This invocation is mainly a one way operation. However it supports the returning faults from the service. The transport protocol used in this message pattern should be bi-directional.&nbsp; The following code snippet shows how the client can use above method of invocation and the sequence diagram shows the complete message. </p>
-<p><strong>Code Snippet</strong></p><source></source>
-<p class="style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call.setTo(EPR)</p>
-<p class="style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call.setAction(String)</p>
-<p class="style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call.setTransportType(String)</p>
-<p class="style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call.send(SOAPEnvelope) </p></source>
-<p><strong>Message Path and Sequence Diagram</strong></p>a -&gt; call.send(SOAPEnvelope)<p>b -&gt; engine.send( ..)</p>
-<p>c -&gt; Send the SOAP message</p>
-<div align="center">
+<p><strong>Code Snippet</strong></p>
+ <pre>call.setTo(EPR)
+ call.setAction(String)
+call.setTransportType(String)
+call.send(SOAPEnvelope)  </pre>
+ <p><strong>Message Path and Sequence Diagram</strong></p>
+ <pre>a -&gt; call.send(SOAPEnvelope)
+b -&gt; engine.send( ..) 
+c -&gt; Send the SOAP message </pre>
+ <div align="center">
 	<pre> 
 <img height=149 src="images/image004.jpg" width=416 DESIGNTIMEURL="images/image004.jpg"></pre>
 </div>
 <p align=center>Figure 2- Sequence diagram corresponding to send ()</p>
 <h3>Fire and Forget Invocation</h3>
 <p>This method of invocation does not wait for any kind of response, not even for a fault. Once the request is written to the wire the method immediately returns to the client. Transport can be either unidirectional or bi-directional. Following code snippet shows how the client can use above API method and the sequence diagram shows the complete message. </p>
-<p><strong>Code Snippet</strong></p><source class="style1">&nbsp; call.setTo(EPR)<p>&nbsp;&nbsp; call.setAction(String)</p>
-<p>&nbsp;&nbsp; call.setTransportType(String)</p>
-<p>&nbsp;&nbsp; call.sendAsync(SOAPEnvelope) </p></source>
+<p><strong>Code Snippet</strong></p>
+<pre>call.setTo(EPR)<br>
+call.setAction(String)<br>
+call.setTransportType(String)<br>
+call.sendAsync(SOAPEnvelope) </pre>
 <p><strong>Message Path and Sequence Diagram</strong></p>
-<pre>a -&gt; call.send(SOAPEnvelope)</pre><pre>b -&gt; engine.send( ..)</pre><pre>c -&gt; Send the SOAP message</pre>
+<pre>a -&gt; call.send(SOAPEnvelope) 
+b -&gt; engine.send( ..) 
+c -&gt; Send the SOAP message </pre>
 <p align=center><img height=147 src="images/image006.jpg" width=434 DESIGNTIMEURL="images/image006.jpg"></p>
 <p align=center>Figure 3 – Sequence diagram corresponds to sendAsync()</p>
 <h3>Blocking Invocation of type In-Out</h3>
 <p>This invocation pattern lets the client to invoke a web service and wait till the response is received before proceeding to the next line of invocation. This is very much similar to the Call.invoke() with response types in Axis 1.1. In this approach, the transport specified should be a bi-directional transport and the response is retrieved using the same transport connection. The client will hang till the entire communication completes.</p>
-<p><strong>Code Snippet&nbsp;</strong></p>               
-<span class="style1">call.setTO(EPR)</span>
-<p class="style1"> call.setAction(String)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
-</p>
-<p class="style1">call.setTransportType(String)</p>
-<p class="style1">SOAPEnvelope env=call.sendReceive(SOAPEnvelope)</p>
+<p><strong>Code Snippet&nbsp;</strong></p>
+<pre><span class="style1">call.setTO(EPR)</span> call.setAction(String)
+call.setTransportType(String)
+SOAPEnvelope env=call.sendReceive(SOAPEnvelope) </pre>
 <p><strong>Message Path and Sequence Diagram</strong></p>
-a -&gt; call.sendReceive(SOAPEnvelope)<pre>b- &gt; engine.send (..)</pre><pre>c -&gt; Send the SOAP message</pre><pre>d -&gt; Receive the response over the synchronous transport</pre><pre>w -&gt; ProviderX will be called as the last step in engine.receive(..) </pre><pre>e -&gt; provider returns&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </pre><pre>f -&gt; Call hand over the response to the client</pre>
+<pre>a -&gt; call.sendReceive(SOAPEnvelope)
+b- &gt; engine.send (..) 
+c -&gt; Send the SOAP message 
+d -&gt; Receive the response over the synchronous transport 
+w -&gt; ProviderX will be called as the last step in engine.receive(..) 
+e -&gt; provider returns&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+f -&gt; Call hand over the response to the client </pre>
 <p align=center><img height=199 src="images/image008.jpg" width=439 DESIGNTIMEURL="images/image008.jpg"></p>
 <p align=center>Figure 4 – Sequence diagram corresponds to sendRecieve()</p>
 <h3>Non Blocking Invocation of type In-Out</h3>
@@ -128,9 +138,20 @@
 <p><strong>Method 1: Without a Client Side Listener</strong></p>
 <p>The communication happens using a single transport connection. With respect to the transport protocol used, the web service response is received using the same connection. However the client will not block till it receive the response. Instead it can proceed to the next line of execution by registering a Callback object.&nbsp; The following code snippet shows how the client can use above API method and the sequence diagram shows the complete message. To use this pattern client should use the value “<strong>true</strong>” for the parameter “useSeparateListener” in the setListenerTransport(..) method.</p>
 <p><strong>Code Snippet</strong></p>
-<pre>&nbsp;<span class="style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call.setTO(EPR)</span></pre><pre class="style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call.setAction(String)</pre><pre class="style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call.setTransportType(String)</pre><pre class="style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call.setListenerTransport(String transportType,boolean useSeparateListener) </pre><pre class="style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call.sendReceiveAsync (SOAPEnvelope, Callback)</pre>
+<pre>call.setTO(EPR)
+call.setAction(String) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+call.setTransportType(String)
+call.setListenerTransport(String transportType,boolean useSeparateListener)
+call.sendReceiveAsync (SOAPEnvelope, Callback) </pre>
 <p><strong>Message Path and Sequence Diagram</strong></p>
-<pre>a -&gt; call.sendReceiveAsync (SOAPEnvelope, callbackObj)</pre><pre>p -&gt; correlator.addCorrelationInfor(msgID,allbackObjRef)</pre><pre>b- &gt; engine.send (..)</pre><pre>c -&gt; Send the SOAP message</pre><pre>d -&gt; Receive the response over the synchronous transport</pre><pre>w -&gt; ProviderX will be called as the last step in engine.receive(..) </pre><pre>q -&gt; correlator.getCorrelationInfo(msgID)</pre><pre>g -&gt; callbackObj.onComplet()</pre>
+<pre>a -&gt; call.sendReceiveAsync (SOAPEnvelope, callbackObj) 
+p -&gt; correlator.addCorrelationInfor(msgID,allbackObjRef) 
+b- &gt; engine.send (..) 
+c -&gt; Send the SOAP message 
+d -&gt; Receive the response over the synchronous transport 
+w -&gt; ProviderX will be called as the last step in engine.receive(..) 
+q -&gt; correlator.getCorrelationInfo(msgID) 
+g -&gt; callbackObj.onComplete() </pre>
 <div align="center">
 	<pre><img height=225 src="images/image010.jpg" width=643 DESIGNTIMEURL="images/image010.jpg"></pre>
 </div>
@@ -139,17 +160,39 @@
 <p>In this method client will have the usage of non-blocking API with a separate listener to accept the service response asynchronously. Outgoing transport does not wait for the response. Instead corresponding incoming message is processed by different transport, which is created by call object while it is sending the request. The correlation between the request and the response messages is achieved using a similar message ID mechanism as in WS-Addressing. Once the WS-Addressing support is implemented the client will only use &lt;wsa:MessageID&gt; and the &lt;was:RelatesTo&gt; headers to achieve the correlation. </p>
 <p>The following code snippet shows how the client can use that above API method and the sequence diagram shows the complete message. To use this pattern client should use the value “<strong>false</strong>” for the parameter “useSeparateListener” in the setListenerTransport(..) method.</p>
 <p><strong>Code Snippet</strong></p>
-<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="style1">call.setTO(EPR)</span></pre><pre class="style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call.setAction(String)</pre><pre class="style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call.setTransportType(String)</pre><pre class="style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call.setListenerTransport(String transportType,boolean useSeparateListener) </pre><pre class="style1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call.sendReceiveAsync (SOAPEnvelope, Callback)</pre>
-<p><strong><u>&nbsp;</u></strong></p>
-<p><strong>Message Path and Sequence Diagram</strong></p>a -&gt; call.sendReceiveAsync (SOAPEnvelope, callbackObj)<p>p -&gt; correlator.addCorrelationInfor(msgID,allbackObjRef)</p>
-<pre>b- &gt; engine.send (..)</pre><pre>c -&gt; Send the SOAP message</pre><pre>r -&gt; Receive the response by the listener</pre><pre>s -&gt; engine.receive(..)</pre><pre>w -&gt; ProviderX will be called as the last step in engine.receive(..) </pre><pre>q -&gt; correlator.getCorrelationInfo(msgID)</pre><pre>g -&gt; callbackObj.onComplet()</pre>
+<pre>call.setTO(EPR)</span> 
+call.setAction(String) 
+call.setTransportType(String)
+call.setListenerTransport(String transportType,boolean useSeparateListener)
+call.sendReceiveAsync (SOAPEnvelope, Callback) </pre>
+<p><strong>Message Path and Sequence Diagram</strong></p>
+<pre>a -&gt; call.sendReceiveAsync (SOAPEnvelope, callbackObj)
+ p -&gt; correlator.addCorrelationInfor(msgID,allbackObjRef) 
+b- &gt; engine.send (..) 
+ c -&gt; Send the SOAP message 
+ r -&gt; Receive the response by the listener 
+ s -&gt; engine.receive(..) 
+ w -&gt; ProviderX will be called as the last step in engine.receive(..) 
+ q -&gt; correlator.getCorrelationInfo(msgID) 
+g -&gt; callbackObj.onComplete() </pre>
 <p align=center><img height=234 src="images/image012.jpg" width=648 DESIGNTIMEURL="images/image012.jpg"></p>
 <p align=center>Figure 6 – Sequence diagram corresponds to sendRecieveAync with one way transport.</p>
 <p><strong><u>Asynchronous invocation with one way transport</u></strong></p>
 <p>The programming model almost similar to asynchronous invocation with two way transport. Only difference is that &nbsp;for outgoing and incoming messages, it uses two engine instances, and outgoing transport dose not wait for response. Instead, corresponding incoming message is processed by different transport which is created by call object while it is sending the request. Here the Listener is the newly created transport, which is running to get the incoming message. Corresponding sequence diagram is shown in Figure 6, code snippet and message paths are described below. </p>
 <h3>Code Snippet </h3>
-<pre class="style1">call.setTO(EPR)</pre><pre class="style1">call.setAction(String)</pre><pre class="style1">call.setListenerTransport(“http”, false)</pre><pre class="style1">call.sendReceiveAsync(SOAPEnvelope, Callback)</pre>
-<h3>Message paths</h3><pre>a -&gt; call.sendReceiveAsync (SOAPEnvelope, callbackObj)</pre><pre>p -&gt; correlator.addCorrelationInfor(msgID,allbackObjRef)</pre><pre>b- &gt; engine.send (..)</pre><pre>c -&gt; Send the SOAP message</pre><pre>r -&gt; Receive the response by the listener</pre><pre>s -&gt; engine.receive(..)</pre><pre>w -&gt; ProviderX will be called as the last step in engine.receive(..) </pre><pre>q -&gt; correlator.getCorrelationInfo(msgID)</pre><pre>g -&gt; callbackObj.onComplet()</pre>
+<pre>call.setTO(EPR)
+ call.setAction(String) 
+call.setListenerTransport(“http”, false) 
+call.sendReceiveAsync(SOAPEnvelope, Callback) </pre>
+<h3>Message paths</h3>
+<pre>a -&gt; call.sendReceiveAsync (SOAPEnvelope, callbackObj) p -&gt; correlator.addCorrelationInfor(msgID,allbackObjRef) 
+b- &gt; engine.send (..) 
+c -&gt; Send the SOAP message 
+r -&gt; Receive the response by the listener 
+s -&gt; engine.receive(..) 
+w -&gt; ProviderX will be called as the last step in engine.receive(..) 
+ q -&gt; correlator.getCorrelationInfo(msgID) 
+g -&gt; callbackObj.onComplete() </pre>
 <p align=center><img height=234 src="images/image013.jpg" width=648 DESIGNTIMEURL="images/image013.jpg"></p>
 <p align=center>Figure 6 – Sequence diagram corresponds to sendRecieveAync with one way transport.</p>
 <h2>What is supported in M1</h2>

Modified: webservices/axis/trunk/java/xdocs/OMTutorial.html
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/xdocs/OMTutorial.html?view=diff&r1=154990&r2=154991
==============================================================================
--- webservices/axis/trunk/java/xdocs/OMTutorial.html (original)
+++ webservices/axis/trunk/java/xdocs/OMTutorial.html Wed Feb 23 01:30:20 2005
@@ -86,15 +86,15 @@
 
 <h2>Section 2 - Working with OM</h2> 
 <h3>Obtaining the OM binary</h3>
-<p>OM is not a separate product but part of Axis2. However since Axis 2 has a modular build structure
+<p>OM is not a separate product but part of Axis2. However since Axis2 has a modular build structure
 It is possible to obtain a "OM only" jar. 
 <p>
 The easiest way to obtain the OM binary is to download the Axis2 binary distribution. The lib directory will
 contain the axis2-om-M1.jar. However more adventures users can build the OM from source. The next section describes how
-to build Om from source.
+to build OM from source.
 </p>
 Axis build is based on Maven. For further information on Maven (and the binary download) please visit <a href="http://maven.apache.org.">the Maven site</a></p>
-<p>Once Maven is properly installed the source should be downloaded from the <a href="http://svn.apache.org/repos/asf/webservices/axis/trunk/java/modules/om">Axis 2 SVN repository</a>. (For further information on SVN and client programs for both windows and Linux please visit <a href="http://svn.tigris.org">svn.tigris.org</a></p>
+<p>Once Maven is properly installed the source should be downloaded from the <a href="http://svn.apache.org/repos/asf/webservices/axis/trunk/java/modules/om">Axis2 SVN repository</a>. (For further information on SVN and client programs for both windows and Linux please visit <a href="http://svn.tigris.org">svn.tigris.org</a></p>
 <p>After the source download OM-binary can be built. 
 For both Windows and Linux move to the project directory and execute the command "maven jar". All other necessary jars will be automatically downloaded.
 When the build finishes successfully, the axis2-om-M1.jar can be found in the newly created "targets" directory</p>

Modified: webservices/axis/trunk/java/xdocs/userguide.html
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/xdocs/userguide.html?view=diff&r1=154990&r2=154991
==============================================================================
--- webservices/axis/trunk/java/xdocs/userguide.html (original)
+++ webservices/axis/trunk/java/xdocs/userguide.html Wed Feb 23 01:30:20 2005
@@ -22,10 +22,10 @@
 <body>
 <h1 align="center"><a name="_Toc96697849">Axis 2.0 User's Guide </a></h1>
 <p>&nbsp; </p>
-<h3><a name="_Toc96698076"></a><a name="_Toc96697851">Introduction </a></h3>
+<h3><a name="_Toc96698076"></a>Introduction </h3>
 <p>Welcome to Axis 2.0, the next generation of Apache Axis !!! This User Guide will help you to understand what you will get from Axis 2.0 and how to get started. </p>
 <p>We hope you will benefit from the power of Axis 2.0. </p>
-<h3><a name="_Toc96698077"></a><a name="_Toc96697852">What is Axis 2.0 ? </a></h3>
+<h3><a name="_Toc96698077"></a>What is Axis 2.0 ? </h3>
 <p>Before we start, its highly recommended to read <a href="http://ws.apache.org/axis/java/user-guide.html">Axis 1.x User's guide </a>, if you are new to Axis. </p>
 <p>Axis 2.0 is the next generation of Apache Axis. In late August 2004, during the Axis Summit held in Colombo, Sri Lanka, a new architecture was introduced to have a much more flexible, efficient and configurable Axis. Even though the architecture is new, some of the well established concepts from Axis 1.x, like handlers are preserved in Axis 2.0 also. Axis 2.0 comes with lots of new features, enhancements and new industry specification implementations. </p>
 <p>After months of continued discussion and coding effort in this direction, Axis 2.0 now delivers the following key features: </p>
@@ -44,7 +44,7 @@
 <p>We hope you enjoy using Axis. Please note that this is an open-source effort - if you feel the code could use some new features or fixes, please get involved and lend a hand! The Axis developer community welcomes your participation . </p>
 <p>Let us know what you think! </p>
 <p>Please send feedback about the package to &quot; <a href="mailto:axis-user@ws.apache.org">axis-user@ws.apache.org </a>&quot; and make sure to prefix the subject of the mail with “[Axis2]”. </p>
-<h3><a name="_Toc96698078"></a><a name="_Toc96697853">What's in this release? </a></h3>
+<h3><a name="_Toc96698078"></a>What's in this release? </h3>
 <p>This release includes the following features: </p>
 <ul>
   <li>SOAP 1.1/1.2 compliant engine </li>
@@ -57,7 +57,7 @@
   <li>WSDL 1.1 and 2.0 compliant Component Model </li>
   <li>Examples, including a client and server for the one-way, two-way and synchronous, asynchronous web services invocation </li>
 </ul>
-<h3><a name="_Toc96698079"></a><a name="_Toc96697854">What's still to do? </a></h3>
+<h3><a name="_Toc96698079"></a>What's still to do? </h3>
 <p>Please see a list of what we think needs doing - and please consider helping out if you're interested &amp; able! </p>
 <ul>
   <li>Encoding/data binding </li>
@@ -67,15 +67,15 @@
   <li>Server side sync/async support </li>
   <li>Complete XML infoset support for AXIOM </li>
 </ul>
-<h2><a name="_Toc96698080"></a><a name="_Toc96697855">Installation Guide </a></h2>
-<h3><a name="_Toc96698081"></a><a name="_Toc96697856">Introduction </a></h3>
+<h2><a name="_Toc96698080"></a>Installation Guide </h2>
+<h3><a name="_Toc96698081"></a>Introduction </h3>
 <p>Axis 2.0 can be downloaded as a <a href="releases.html">zipped binary </a> or the <a href="cvs-usage.html">source </a>. This section describes how Axis2 can be installed either as a standalone server or as part of a J2EE compliant servlet container. </p>
-<h3><a name="_Toc96698082"></a><a name="_Toc96697857">Prerequisites </a></h3>
+<h3><a name="_Toc96698082"></a>Prerequisites </h3>
 <p>Axis2 requires the Java Runtime Environment to be properly installed. Axis is developed to be run on JRE 1.4 and upwards but it has not been fully tested with the latest JRE 1.5. Hence it is safe to run Axis with Java 1.4. If the JRE is not already in place it must be installed to proceed further. For instructions on setting up the JRE in different operating systems, please visit <a href="http://java.sun.com/">http://java.sun.com </a>. </p>
 <p>All the required jars are shipped with the binary distribution and if the source distribution is used, running the maven build will automatically download the required jars for you. </p>
 <p>Following sections describe how each type of distribution needs to be installed. Since the process with the source distribution is similar to the binary distribution after building, the first section explains the process of building Axis from source. If you have the binary distribution you can skip the build sections and directly go to the binary installation section. </p>
-<h3><a name="_Toc96698083"></a><a name="_Toc96697858">Building Axis2 from source </a></h3>
-<h4><a name="_Toc96698084"></a><a name="_Toc96697859">Setting up the Environment and the tools </a></h4>
+<h3><a name="_Toc96698083"></a>Building Axis2 from source </h3>
+<h4><a name="_Toc96698084"></a>Setting up the Environment and the tools </h4>
 <p>The Axis2 build is based on <a href="http://maven.apache.org/">Maven </a>. Hence the prerequisite to build Axis2 from source is to have Maven installed. Even though extensive instruction guides are available at the Maven site, this guide also contains the “easiest path” for quick environment setting. Advanced users who wish to know more about Maven can visit <a href="http://maven.apache.org/start/index.html">here </a>. </p>
 <p>For Windows users the easiest way is to download the windows installer package. Once the installer package is run, all the necessary environment variables will be properly set. Once Maven is installed, the success of the installation can be tested by typing “maven –version” in the command prompt. </p>
 <p>&nbsp; </p>
@@ -83,14 +83,14 @@
 <p>&nbsp; </p>
 <p>For Linux users the tar ball or the zip archive is the best options. (Unfortunately there is no rpm as such that can be easily installed) Once the archive is downloaded expand it to a directory of choice and set the environment variable “MAVEN_HOME” and add MAVEN_HOME/bin to the path as well. More instructions for installing Maven in UNIX based operating systems can be found <a href="http://maven.apache.org/start/install.html">here </a>. </p>
 <p>Once maven is properly installed it's all that is needed to start building Axis2. </p>
-<h4><a name="_Toc96698085"></a><a name="_Toc96697860">The Axis source distribution </a></h4>
+<h4><a name="_Toc96698085"></a>The Axis source distribution </h4>
 <p>The <a href="releases.html">source distribution </a> is available as a zipped archive or a tar ball. All the necessary build scripts are included with the source distribution. Once the source archive is expanded into a directory of choice, moving to the particular directory and typing maven will build the axis jar file. </p>
 <p align="center"><img width="540" height="292" src="images/clip_image004.jpg"></p>
 <p>Once the command completes, the binaries (jar files in this case) can be found at a newly created “target” directory. </p>
 <p><strong>Note – For the first Maven build (if the maven repository is not built first) it will take a while since required jars need to be downloaded. However this is a once only process and will not affect any successive builds. </strong></p>
 <p><strong> </strong>The default maven build will however build only the Axis2 jar file. To obtain a WAR (Web Archive), “maven war” command should be issued. This will create a complete WAR with the name axis2.war inside the target directory. </p>
 <p>Once this build step is complete, the binaries are ready to be deployed. </p>
-<h3><a name="_Toc96698086"></a><a name="_Toc96697861">Installing Axis2 in a Servlet container </a></h3>
+<h3><a name="_Toc96698086"></a>Installing Axis2 in a Servlet container </h3>
 <p>Installation of the WAR is quite simple. It's a matter of dropping the war in the webapps folders and most servlet containers will automatically install the war. However some servlet containers may require a restart in order to capture the new web application. Please refer your servlet container documentation for more information about this. </p>
 <p>Once the WAR is successfully installed it can be tested by pointing the web browser to the <strong>http:// &lt;host :port&gt;/ axis2. </strong>It should produce the following page. </p>
 <p align="center"><strong><img width="624" height="439" src="images/clip_image006.jpg"></strong></p>
@@ -108,7 +108,7 @@
 </p>
 <!-- Image goes here -->
 
-<h3><a name="_Toc96698087"></a><a name="_Toc96697862">Running the Axis2 standalone server </a></h3>
+<h3><a name="_Toc96698087"></a>Running the Axis2 standalone server </h3>
 <p>Since a J2EE servlet container can be heavy in certain cases, a simple socket server is provided with Axis2. </p>
 Start scripts are inluded in the bin directory of the binary distribution.</p>
 <p>For windows</p>
@@ -127,7 +127,7 @@
  Note - the directory entered as the repository loacation needs to have a services directory inside. This is
  absolutely required and AXIS will not create it automatically in the case of the simple axis server. 
  </b></p>
-<h2><a name="_Toc96697863"></a><a name="_Toc96698088">Samples </a></h2>
+<h2><a name="_Toc96697863"></a>Samples </h2>
 <p>There are three sample programs, which are listed below, that will be explained in this user guide and the relevant code can be found in the source directory under ../modules/samples/src/java/userguide/sample1. </p>
 <ol>
   <li>Case1: Echo Synchronous call. </li>
@@ -232,7 +232,7 @@
     <td valign="top"><p>The jar that bundles the server side and client side code. </p></td>
   </tr>
 </table>
-<h3><a name="_Toc96698089"></a><a name="_Toc96697864">Pre-Conditions </a></h3>
+<h3><a name="_Toc96698089"></a>Pre-Conditions </h3>
 <p>Axis2 should be installed (see the Installation guide above). For simplicity samples will assume the servlet container is Tomcat. </p>
 <p>AXIS_HOME environment variable be set. (Rationale: The compile time and runtime libraries required in the classpath for the samples will be picked up form the deployed Asix2.) </p>
 <p align="center"><img width="384" height="430" src="images/clip_image014.jpg"></p>
@@ -251,7 +251,7 @@
 	<li>sample1-all.jar – Compiled sources required for running the client applications (Packaged to modules/samples/build/lib)</li>
 </ul>
 <p>Once the sample is compiled once, all the required jar files for deploying and running all three Cases of the sample will be compiled and packaged.</p>
-<h3><a name="_Toc96698091"></a><a name="_Toc96697866">Sample1- Case1 : Echo Synchronous call </a></h3>
+<h3><a name="_Toc96698091"></a>Sample1- Case1 : Echo Synchronous call </h3>
 <p>The sample1 - Case1: Echo synchronous call is intended to demonstrate the synchronous web service call in Axis2 with both the client side and client side running Axis2. In the next few steps the user will be walked through in: </p>
 <ul>
   <li>Compiling and building a web service </li>
@@ -302,7 +302,7 @@
 <p>&gt;ant echo </p>
 <p>in the command prompt. If all goes well the user will get the following output where the program will print the request SOAP message and the response SOAP message, which will be same as the request message. </p>
 <p align="center"><img width="648" height="269" src="images/clip_image022.jpg"></p>
-<h3><a name="_Toc96698092"></a><a name="_Toc96697867">Sample1 - Case2: Echo Synchronous call with a phased handler. </a></h3>
+<h3><a name="_Toc96698092"></a>Sample1 - Case2: Echo Synchronous call with a phased handler. </h3>
 <p>This example will go one step forward from the example above and will deploy a web service with a Logging handler. The client application will not change, of course with an exception; the Endpoint Reference will be changed to refer the new service <strong>“Sample1WithHandler” </strong>. </p>
 <p>There is a Handler (LoggingHandler.java) that is introduced in this case and it will basically log the fact that it got called. The code can be found in LoggingHandler.java. </p>
 <pre class="style1 style2 style3">public void invoke(MessageContext msgContext) throws AxisFault { 
@@ -381,7 +381,7 @@
 <p>in the command prompt. If all goes well the user will get the following output where the program will print the request SOAP message and the response SOAP message, which will be same as the request message. </p>
 <p align="center"><img width="648" height="265" src="images/clip_image024.jpg"></p>
 <p>The service <strong>“sample1withhandler” </strong> will run its logging handler as it gets called and it will log the call as the handler gets called in the inflow. This logged information can be found in the server logs. </p>
-<h3><a name="_Toc96698093"></a><a name="_Toc96697868">Sample1 - Case3: Echo Asynchronous call. </a></h3>
+<h3><a name="_Toc96698093"></a>Sample1 - Case3: Echo Asynchronous call. </h3>
 <p>In this case the example focuses on calling a synchronous web service in an asynchronous manner in the client side. If this example is compared with the first example, which is <strong>“Echo Synchronous call” </strong>, the server side is identical for both the cases. The difference will be in the web service client that will be used. </p>
 <p>In this case the client will make a web service call and it will register a call back handler and sends the message out. The difference will be that the client application that is doing the web service call will not hang till the response. Rather it will get returned and once the response returns the client will get notified by way of the registered callback (This is one of the two methods this can be done in Axis 2.0. Refer <a href="ClientAPI.html">Client Api Tutorial </a> for more information). </p>
 <p>The callback handler that will be used is ClientEchoCallbackHandler.java and the client program is AsynchronousClient.java. </p>
@@ -398,8 +398,8 @@
 <p>&nbsp; </p>
 <strong><br>
 </strong>
-<h2><a name="_Toc96698094"></a><a name="_Toc96697869">Writing your own Service and a client </a></h2>
-<h3><a name="_Toc96698095"></a><a name="_Toc96697870">Writing a New Service </a></h3>
+<h2><a name="_Toc96698094"></a>Writing your own Service and a client </h2>
+<h3><a name="_Toc96698095"></a>Writing a New Service </h3>
 <p>Writing a new Web Service in Axis2-M1 requires you to do following steps </p>
 <p><strong>&#149;&nbsp; Writing a new Web Service implementation class </strong></p>
 <p>Axis2 M1 does not support data binding and supports only the XML level messaging. The default provider (do not worry about this if you do not know what it is) only supports the java methods having the return type as OMElement and only parameter as an OMElement. </p>
@@ -427,7 +427,7 @@
 service.xml as well. The tool start script can be found in the bin directory. 
 
 
-<h3><a name="_Toc96698096"></a><a name="_Toc96697871">Writing a Client for the Axis2-M1 </a></h3>
+<h3><a name="_Toc96698096"></a>Writing a Client for the Axis2-M1 </h3>
 <p>Axis2 M1 supports HTTP transport only. Axis2-M1 supports the following interaction patterns. </p>
 <p>&#149;&nbsp; Blocking invocation of type in-out (request/response) </p>
 <p>&#149;&nbsp; Non blocking invocation of type in-out (Without a separate Listener) </p>
@@ -452,7 +452,7 @@
  </span></li>
 </ol>
 <p>for more information in handling the OM objects please read the <a href="OMTutorial.html">OM Tutorial </a>. </p>
-<h4><a name="_Toc96698097"></a><a name="_Toc96697872">Synchronous Client </a></h4>
+<h4><a name="_Toc96698097"></a>Synchronous Client </h4>
 <p>Invoking the synchronous web service call can be done with the following code. </p>
 <pre class="style4">EndpointReference targetEPR = <strong>new </strong>EndpointReference(AddressingConstants.WSA_TO, &quot;http://127.0.0.1:&quot; + (EngineUtils.TESTING_PORT) + &quot;/axis/services/echo&quot; );  
 Call call = <strong>new </strong>Call();  
@@ -461,7 +461,7 @@
 <p>&#149;&nbsp; The Endpoint Reference (EPR) is the To location of the web service. </p>
 <p>&#149;&nbsp; call.setTo() method registers the created EPR with the call object. </p>
 <p>&#149;&nbsp; call.sendRecieve() method invokes the web service at the location specified by the EPR using the given SOAP Message. </p>
-<h4><a name="_Toc96698098"></a><a name="_Toc96697873">Asynchronous Client </a></h4>
+<h4><a name="_Toc96698098"></a>Asynchronous Client </h4>
 <p>Invoking the asynchronous web service call can be done with the following code. </p>
 <pre class="style4">EndpointReference targetEPR = <strong>new </strong>EndpointReference(AddressingConstants.WSA_TO, &quot;http://127.0.0.1:&quot; + (EngineUtils.TESTING_PORT)+ &quot;/axis/services/echo&quot; );  
 Call call = <strong>new </strong>Call();