ws-axis-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From chinth...@apache.org
Subject svn commit: r370401 [2/3] - in /webservices/axis2/trunk/java/xdocs/0_94: ./ adb/ tools/idea/
Date Thu, 19 Jan 2006 06:50:45 GMT
Modified: webservices/axis2/trunk/java/xdocs/0_94/userguide.html
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/xdocs/0_94/userguide.html?rev=370401&r1=370400&r2=370401&view=diff
==============================================================================
--- webservices/axis2/trunk/java/xdocs/0_94/userguide.html (original)
+++ webservices/axis2/trunk/java/xdocs/0_94/userguide.html Wed Jan 18 22:50:19 2006
@@ -1,1118 +1,1233 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <html>
 <head>
-  <meta http-equiv="content-type" content="">
-  <title>Axis2 User's Guide</title>
+    <meta http-equiv="content-type" content="">
+    <title>Axis2 User's Guide</title>
 </head>
 
 <body lang="en-US" dir="ltr">
-<h1 align="center"><a name="_Toc96697849" id="_Toc96697849"></a>Axis2 User's
-Guide</h1>
+<a name="_Toc96697849" id="_Toc96697849"></a>
+
+<h1 align="center">Axis2 User's
+                   Guide</h1>
 
 <p><i>Version 0.94</i></p>
 <i>User Feedback: <a
-href="mailto:axis-user@ws.apache.org">axis-user@ws.apache.org</a></i>
+        href="mailto:axis-user@ws.apache.org">axis-user@ws.apache.org</a></i>
 
 <h2>Contents</h2>
 <ul>
-  <li><p><a href="#Introduction">Introduction</a></p>
-    <ul>
-      <li><a href="#Attention">Attention</a></li>
-      <li><a href="#What_is_Axis_2_0__">What is Axis2?</a></li>
-      <li><a href="#Featurelist">Axis2 Complete Features List</a>
-        <ul>
-          <li><a href="#experimental">Experimental Features List</a></li>
-          <li><a href="#majorchanges">Major Changes Since Last
-          Release</a></li>
-        </ul>
-      </li>
-      <li><a href="#toolsinrelease">Tools included in this Release</a></li>
-      <li><a href="#WhatsStillToDo">What's still to do?</a></li>
-    </ul>
-  </li>
-  <li><p><a href="#samples">Samples</a></p>
-  </li>
-  <li><p><a href="#WS">Web Services Using Axis2</a></p>
-    <ul>
-      <li><a href="#WSapi">Writing Web Services using Axis2 APIs</a>
+    <li><p><a href="#Introduction">Introduction</a></p>
         <ul>
-          <li><a href="#CreateWS">Creating Web Service (MyService)</a></li>
-          <li><a href="#WriteWS">How to write the Web Service?</a>
-            <ul>
-              <li><a href="#step1">Step1 :Write the Implementation
-              Class</a></li>
-              <li><a href="#step2">Step2 :Write the services.xml file</a></li>
-              <li><a href="#step3">Step3 :Create the Web Service
-              Archive</a></li>
-              <li><a href="#step4">Step4 :Deploy the Web Service</a></li>
-            </ul>
-          </li>
+            <li><a href="#Attention">Attention</a></li>
+            <li><a href="#What_is_Axis_2_0__">What is Axis2?</a></li>
+            <li><a href="#Featurelist">Axis2 Complete Features List</a>
+                <ul>
+                    <li><a href="#experimental">Experimental Features List</a></li>
+                    <li><a href="#majorchanges">Major Changes Since Last
+                                                Release</a></li>
+                </ul>
+            </li>
+            <li><a href="#toolsinrelease">Tools included in this Release</a></li>
+            <li><a href="#WhatsStillToDo">What's still to do?</a></li>
         </ul>
-      </li>
-      <li><p><a href="#generateskl">Writing Web Services by Code Generating
-        Skeleton</a></p>
+    </li>
+    <li><p><a href="#samples">Samples</a></p>
+    </li>
+    <li><p><a href="#WS">Web Services Using Axis2</a></p>
         <ul>
-          <li><a href="#WSDL2JavaTool">WSDL2Java Tool</a></li>
-          <li><a href="#businesslogic">Implement the Business Logic</a></li>
-          <li><a href="#echostring">echoString</a></li>
-          <li><a href="#echostringarray">echoStringArray</a></li>
-          <li><a href="#echostruct">echoStruct</a></li>
-          <li><a href="#servicesxml">services.xml</a></li>
-          <li><a href="#packaging">Packaging</a></li>
+            <li><a href="#WSapi">Writing Web Services using Axis2 APIs</a>
+                <ul>
+                    <li><a href="#CreateWS">Creating Web Service (MyService)</a></li>
+                    <li><a href="#WriteWS">How to write the Web Service?</a>
+                        <ul>
+                            <li><a href="#step1">Step1 :Write the Implementation
+                                                 Class</a></li>
+                            <li><a href="#step2">Step2 :Write the services.xml file</a></li>
+                            <li><a href="#step3">Step3 :Create the Web Service
+                                                 Archive</a></li>
+                            <li><a href="#step4">Step4 :Deploy the Web Service</a></li>
+                        </ul>
+                    </li>
+                </ul>
+            </li>
+            <li><p><a href="#generateskl">Writing Web Services by Code Generating
+                                          Skeleton</a></p>
+                <ul>
+                    <li><a href="#WSDL2JavaTool">WSDL2Java Tool</a></li>
+                    <li><a href="#businesslogic">Implement the Business Logic</a></li>
+                    <li><a href="#echostring">echoString</a></li>
+                    <li><a href="#echostringarray">echoStringArray</a></li>
+                    <li><a href="#echostruct">echoStruct</a></li>
+                    <li><a href="#servicesxml">services.xml</a></li>
+                    <li><a href="#packaging">Packaging</a></li>
+                </ul>
+            </li>
         </ul>
-      </li>
-    </ul>
-  </li>
+    </li>
 </ul>
 <ul>
-  <li><p><a href="#Web_Service_Clients_Using_Axis2">Web Service Clients Using
-    Axis2</a></p>
-    <ul>
-      <li><a href="#primaryAPIs">Writing Web Service Clients using Axis2's
-        Primary APIs</a>
+    <li><p><a href="#Web_Service_Clients_Using_Axis2">Web Service Clients Using
+                                                      Axis2</a></p>
+        <ul>
+            <li><a href="#primaryAPIs">Writing Web Service Clients using Axis2's
+                                       Primary APIs</a>
+                <ul>
+                    <li><a href="#echoblocking">EchoBlockingClient</a></li>
+                    <li><a href="#ping">PingClient</a></li>
+                    <li><a href="#echononblocking">EchoNonBlockingClient</a></li>
+                    <li><a
+                            href="#echononblockingdual">EchoNonBlockingDualClient</a></li>
+                    <li><a href="#echoblockingdual">EchoBlockingDualClient</a></li>
+                </ul>
+            </li>
+            <li><p><a href="#databinding">Writing Web Service Clients using Code
+                                          Generation</a></p>
+                <ul>
+                    <li><a href="#echovoid">Client for echoVoid Operation</a></li>
+                    <li><a href="#clientechostring">Client for echoString
+                                                    Operation</a></li>
+                    <li><a href="#clientechostringarray">Cient for
+                                                         echoStringArray</a></li>
+                    <li><a href="#clientechostruct">Client for echoStruct
+                                                    Operation</a></li>
+                </ul>
+            </li>
+        </ul>
+    </li>
+    <li><p><a href="#Modules">Modules</a></p>
         <ul>
-          <li><a href="#echoblocking">EchoBlockingClient</a></li>
-          <li><a href="#ping">PingClient</a></li>
-          <li><a href="#echononblocking">EchoNonBlockingClient</a></li>
-          <li><a
-          href="#echononblockingdual">EchoNonBlockingDualClient</a></li>
-          <li><a href="#echoblockingdual">EchoBlockingDualClient</a></li>
+            <li><a href="#logging">MyService with a Logging Module</a>
+                <ul>
+                    <li><a href="#step1loggingmodule">Step1 : LoggingModule
+                                                      Class</a></li>
+                    <li><a href="#step2loggingmodule">Step2 : LogHandler</a></li>
+                    <li><a href="#step3loggingmodule">Step3 : module.xml</a></li>
+                    <li><a href="#step4loggingmodule">Step 4: Modify the
+                                                      "axis2.xml"</a></li>
+                    <li><a href="#step5loggingmodule">Step5 : Modify the
+                                                      "services.xml"</a></li>
+                    <li><a href="#step6loggingmodule">Step6 : Packaging</a></li>
+                    <li><a href="#step7loggingmodule">Step7 : Deploy the Module in
+                                                      Axis2</a></li>
+                </ul>
+            </li>
         </ul>
-      </li>
-      <li><p><a href="#databinding">Writing Web Service Clients using Code
-        Generation</a></p>
+    </li>
+    <li><p><a href="#Other_Samples">Other Samples</a></p>
         <ul>
-          <li><a href="#echovoid">Client for echoVoid Operation</a></li>
-          <li><a href="#clientechostring">Client for echoString
-          Operation</a></li>
-          <li><a href="#clientechostringarray">Cient for
-          echoStringArray</a></li>
-          <li><a href="#clientechostruct">Client for echoStruct
-          Operation</a></li>
+            <li><a href="#googlespell">Google Spell Checker Sample</a></li>
+            <li><a href="#googlesearch">Google Search Sample</a></li>
+            <li><a href="#amazonqueuing">Amazon Queuing Service</a></li>
         </ul>
-      </li>
-    </ul>
-  </li>
-  <li><p><a href="#Modules">Modules</a></p>
-    <ul>
-      <li><a href="#logging">MyService with a Logging Module</a>
+    </li>
+    <li><p><a href="#Advanced_Topics">Advanced Topics</a></p>
         <ul>
-          <li><a href="#step1loggingmodule">Step1 : LoggingModule
-          Class</a></li>
-          <li><a href="#step2loggingmodule">Step2 : LogHandler</a></li>
-          <li><a href="#step3loggingmodule">Step3 : module.xml</a></li>
-          <li><a href="#step4loggingmodule">Step 4: Modify the
-          "axis2.xml"</a></li>
-          <li><a href="#step5loggingmodule">Step5 : Modify the
-            "services.xml"</a></li>
-          <li><a href="#step6loggingmodule">Step6 : Packaging</a></li>
-          <li><a href="#step7loggingmodule">Step7 : Deploy the Module in
-            Axis2</a></li>
+            <li><a href="rest-ws.html">RESTful Web Services</a></li>
+            <li><a href="tcp-transport.html">TCP transport</a></li>
+            <li><a href="mail-transport.html">Mail Transport</a></li>
+            <li><a href="http-transport.html">HTTP Transports</a></li>
+            <li><a href="mtom-guide.html">MTOM with Axis2</a></li>
+            <li><a href="security-module.html">Securing SOAP Messages with
+                                               WSS4J</a></li>
         </ul>
-      </li>
-    </ul>
-  </li>
-  <li><p><a href="#Other_Samples">Other Samples</a></p>
-    <ul>
-      <li><a href="#googlespell">Google Spell Checker Sample</a></li>
-      <li><a href="#googlesearch">Google Search Sample</a></li>
-      <li><a href="#amazonqueuing">Amazon Queuing Service</a></li>
-    </ul>
-  </li>
-  <li><p><a href="#Advanced_Topics">Advanced Topics</a></p>
-    <ul>
-      <li><a href="rest-ws.html">RESTful Web Services</a></li>
-      <li><a href="tcp-transport.html">TCP transport</a></li>
-      <li><a href="mail-transport.html">Mail Transport</a></li>
-      <li><a href="http-transport.html">HTTP Transports</a></li>
-      <li><a href="mtom-guide.html">MTOM with Axis2</a></li>
-      <li><a href="security-module.html">Securing SOAP Messages with
-      WSS4J</a></li>
-    </ul>
-  </li>
+    </li>
 </ul>
 
-<h2><a name="_Toc96698076"></a><a name="Introduction"></a>Introduction</h2>
+<a name="_Toc96698076"></a><a name="Introduction"></a>
+
+<h2>Introduction</h2>
 
 <p>Welcome to Axis2, the next generation of Apache Axis!!! This User's Guide
-will help you to understand what Axis2 has to offer and how to get started
-with it. We hope you will benefit from the power of Axis2.</p>
+   will help you to understand what Axis2 has to offer and how to get started
+   with it. We hope you will benefit from the power of Axis2.</p>
+
+<a name="Attention"></a>
 
-<h3><a name="Attention"></a>Attention</h3>
+<h3>Attention</h3>
 <ul>
-  <li><p style="margin-bottom: 0in">This User's Guide is written based on
-    Axis2 standard binary distribution. (The standard binary distribution can
-    be created from the source distribution using the maven goal <code>$maven
-    dist-std-bin</code>). Please refer the <a
-    href="installationguide.html#Download">installation guide</a> for further
-    information on the downloadables available in this release.</p>
-  </li>
-  <li><p>If you are new to Axis, it's highly recommended that you read <a
-    href="http://ws.apache.org/axis/java/user-guide.html"
-    target="_blank">Axis 1.x User's Guide</a> before you go any further in
-    this guide.</p>
-  </li>
+    <li>This User's Guide is written based on
+        Axis2 standard binary distribution. (The standard binary distribution can
+        be created from the source distribution using the maven goal <code>$maven
+                                                                           dist-std-bin</code>).
+                                                                                              Please
+                                                                                              refer
+                                                                                              the <a
+            href="installationguide.html#Download">installation guide</a> for further
+                                                                          information on the
+                                                                          downloadables available in
+                                                                          this release.
+    </li>
+    <li><p>If you are new to Axis, it's highly recommended that you read <a
+            href="http://ws.apache.org/axis/java/user-guide.html"
+            target="_blank">Axis 1.x User's Guide</a> before you go any further in
+                                                      this guide.</p>
+    </li>
 </ul>
 
-<h3><a name="_Toc96698077"></a><a name="What_is_Axis_2_0__"></a>What is
-Axis2?</h3>
+<a name="_Toc96698077"></a><a name="What_is_Axis_2_0__"></a>
+
+<h3>What is
+    Axis2?</h3>
 
 <p>Axis2 is the next generation of Apache Axis. In late August 2004, during
-the Axis2 Summit held in Colombo, Sri Lanka, a new architecture for Axis was
-introduced which was much more flexible, efficient and configurable. Although
-the architecture is new, some of the well established concepts from Axis 1.x
-like handlers are preserved in Axis2. Axis2 comes with many new features,
-enhancements and industry specification implementations.</p>
+   the Axis2 Summit held in Colombo, Sri Lanka, a new architecture for Axis was
+   introduced which was much more flexible, efficient and configurable. Although
+   the architecture is new, some of the well established concepts from Axis 1.x
+   like handlers are preserved in Axis2. Axis2 comes with many new features,
+   enhancements and industry specification implementations.</p>
 
 <p>After months of continued discussion and coding in this direction, Axis2
-now delivers the following key features:</p>
+   now delivers the following key features:</p>
 <ul>
-  <li><p style="margin-bottom: 0in"><strong>Speed</strong> - Axis2 uses its
-    own object model and StAX (Streaming API for XML) parsing to achieve
-    significantly greater speed than earlier versions of Apache Axis.</p>
-  </li>
-  <li><p style="margin-bottom: 0in"><strong>Low memory foot print</strong>-
-    Axis2 was designed ground-up keeping low memory foot print in mind.</p>
-  </li>
-  <li><p style="margin-bottom: 0in"><strong>AXIOM</strong> - Axis2 comes with
-    its own light-weight object model, AXIOM, for message processing which is
-    extensible, high performance and developer convenient</p>
-  </li>
-  <li><p style="margin-bottom: 0in"><strong><a name="hotdeployment">Hot
-    Deployment</a></strong> - Axis2 is equipped with the capability of
-    deploying web service &amp; handlers while system is up and running. In
-    other words, new services can be added to the system without having to
-    shut down server.Drop the required Web service archive into the services
-    directory in the repository and deployment model will automatically
-    deploy the service and make it available for use.</p>
-  </li>
-  <li><p style="margin-bottom: 0in"><strong>Asynchronous Web
-    Services</strong> - Axis2 now supports asynchronous web services &amp;
-    asynchronous web services invocation using non-blocking clients and
-    transports .</p>
-  </li>
-  <li><p style="margin-bottom: 0in"><strong>MEP Support</strong> - Axis2 now
-    comes handy with the flexibility to support Message Exchange Patterns
-    (MEPs) with in-built support for basic MEPs defined in WSDL 2.0.</p>
-  </li>
-  <li><p style="margin-bottom: 0in"><strong>Flexibility</strong> - The Axis2
-    architecture gives the developer complete freedom to insert extensions
-    into the engine for custom header processing, system management, or
-    <em>anything else you can imagine</em>.</p>
-  </li>
-  <li><p style="margin-bottom: 0in"><strong>Stability</strong> - Axis2
-    defines a set of published interfaces which change relatively slowly
-    compared to the rest of Axis.</p>
-  </li>
-  <li><p style="margin-bottom: 0in"><strong>Component-oriented
-    Deployment</strong> - You can easily define reusable networks of Handlers
-    to implement common patterns of processing for your applications, or to
-    distribute to partners.</p>
-  </li>
-  <li><p style="margin-bottom: 0in"><strong>Transport Framework</strong> - We
-    have a clean and simple abstraction for integrating and using Transports
-    (i.e., senders and listeners for SOAP over various protocols such as
-    SMTP, FTP, message-oriented middleware, etc), and the core of the engine
-    is completely transport-independent.</p>
-  </li>
-  <li><p style="margin-bottom: 0in"><strong>WSDL support</strong> - Axis2
-    supports the <a href="http://www.w3.org/TR/wsdl" target="_blank">Web
-    Service Description Language</a>, version 1.1 and 2.0, which allows you
-    to easily build stubs to access remote services, and also to
-    automatically export machine-readable descriptions of your deployed
-    services from Axis2.</p>
-  </li>
-  <li><p style="margin-bottom: 0in"><strong>Add-ons </strong> Several web
-    services specifications have been incorporated including <a
-    href="http://ws.apache.org/wss4j/" target="_blank">WSS4J</a> for
-    security, <a href="http://ws.apache.org/sandesha/"
-    target="_blank">Sandesha</a> for reliable messaging, <a
-    href="http://ws.apache.org/kandula/" target="_blank">Kandula</a> which is
-    an encapsulation of WS-Coordination, WS-AtomicTransaction and
-    WS-BusinessActivity.</p>
-  </li>
-  <li><p style="margin-bottom: 0in"><strong>Composition and
-    Extensibility</strong> - modules and phases improve support for
-    composability and extensibility. Modules supports composability and is
-    able to add support for new WS-* specifications in a simple and clean
-    manner. They are however not <a href="#hotdeployment">hot deployable</a>
-    as they change the overall behavior of the system.</p>
-  </li>
+<li><strong>Speed</strong> - Axis2 uses its
+                           own object model and StAX (Streaming API for XML) parsing to achieve
+                           significantly greater speed than earlier versions of Apache Axis.
+</li>
+<li><strong>Low memory foot print</strong>-
+                                          Axis2 was designed ground-up keeping low memory foot
+                                          print in mind.
+</li>
+<li><strong>AXIOM</strong> - Axis2 comes with
+                           its own light-weight object model, AXIOM, for message processing
+                           which is
+                           extensible, high performance and developer convenient
+</li>
+<a name="hotdeployment">
+    <li><strong>Hot Deployment</strong> - Axis2 is equipped with the capability of
+                                        deploying web service &amp; handlers while system is up and
+                                        running. In
+                                        other words, new services can be added to the system without
+                                        having to
+                                        shut down server.Drop the required Web service archive into
+                                        the services
+                                        directory in the repository and deployment model will
+                                        automatically
+                                        deploy the service and make it available for use.
+    </li>
+    <li><strong>Asynchronous Web
+                Services</strong> - Axis2 now supports asynchronous web services &amp;
+                                  asynchronous web services invocation using non-blocking
+                                  clients and
+                                  transports .
+    </li>
+    <li><strong>MEP Support</strong> - Axis2 now
+                                     comes handy with the flexibility to support Message
+                                     Exchange Patterns
+                                     (MEPs) with in-built support for basic MEPs defined in WSDL
+                                     2.0.
+    </li>
+    <li><strong>Flexibility</strong> - The Axis2
+                                     architecture gives the developer complete freedom to insert
+                                     extensions
+                                     into the engine for custom header processing, system
+                                     management, or
+        <em>anything else you can imagine</em>.
+    </li>
+    <li><strong>Stability</strong> - Axis2
+                                   defines a set of published interfaces which change relatively
+                                   slowly
+                                   compared to the rest of Axis.
+    </li>
+    <li><strong>Component-oriented
+                Deployment</strong> - You can easily define reusable networks of Handlers
+                                    to implement common patterns of processing for your
+                                    applications, or to
+                                    distribute to partners.
+    </li>
+    <li><strong>Transport Framework</strong> - We
+                                             have a clean and simple abstraction for integrating
+                                             and using Transports
+                                             (i.e., senders and listeners for SOAP over various
+                                             protocols such as
+                                             SMTP, FTP, message-oriented middleware, etc), and
+                                             the core of the engine
+                                             is completely transport-independent.
+    </li>
+    <li><strong>WSDL support</strong> - Axis2
+                                      supports the <a href="http://www.w3.org/TR/wsdl"
+                                                      target="_blank">Web
+                                                                      Service Description
+                                                                      Language</a>, version 1.1
+                                                                                  and 2.0, which
+                                                                                  allows you
+                                                                                  to easily
+                                                                                  build stubs to
+                                                                                  access remote
+                                                                                  services, and
+                                                                                  also to
+                                                                                  automatically
+                                                                                  export
+                                                                                  machine-readable
+                                                                                  descriptions
+                                                                                  of your
+                                                                                  deployed
+                                                                                  services from
+                                                                                  Axis2.
+    </li>
+    <li><strong>Add-ons </strong> Several web
+                                  services specifications have been incorporated including <a
+            href="http://ws.apache.org/wss4j/" target="_blank">WSS4J</a> for
+                                                                         security, <a
+            href="http://ws.apache.org/sandesha/"
+            target="_blank">Sandesha</a> for reliable messaging, <a
+            href="http://ws.apache.org/kandula/" target="_blank">Kandula</a> which is
+                                                                             an encapsulation of
+                                                                             WS-Coordination,
+                                                                             WS-AtomicTransaction
+                                                                             and
+                                                                             WS-BusinessActivity.
+    </li>
+    <li><strong>Composition and
+                Extensibility</strong> - modules and phases improve support for
+                                       composability and extensibility. Modules supports
+                                       composability and is
+                                       able to add support for new WS-* specifications in a
+                                       simple and clean
+                                       manner. They are however not <a href="#hotdeployment">hot
+                                                                                             deployable</a>
+                                       as they change the overall behavior of the system.
+    </li>
 </ul>
 
 <p>We hope you enjoy using Axis2. 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 us a hand! The Axis developer community welcomes your
-participation.</p>
+   effort. If you feel the code could use some new features or fixes, please get
+   involved and lend us a hand! The Axis developer community welcomes your
+   participation.</p>
 
 <p>Let us know what you think!</p>
 
 <p>Please send your feedback on Axis2 to "<a
-href="mailto:axis-user@ws.apache.org">axis-user@ws.apache.org</a>" and make
-sure to prefix the subject of the mail with [Axis2].</p>
-
-<h3>Axis2 Complete Features List<a name="Featurelist"></a></h3>
+        href="mailto:axis-user@ws.apache.org">axis-user@ws.apache.org</a>" and make
+                                                                         sure to prefix the subject
+                                                                         of the mail with [Axis2].
+</p>
+<a name="Featurelist"></a>
+<h3>Axis2 Complete Features List</h3>
 <ol type="1">
-  <li>AXIOM, an XML object model working on StAX (Streaming API for XML)
-    parsing optimized for SOAP 1.1/1.2 Messages. This has complete XML
-    infoset support.</li>
-  <li>Support for One-Way Messaging (In-Only) and Request Response Messaging
-    (In-Out)</li>
-  <li>Module Architecture, mechanism to extend the SOAP Processing Model</li>
-  <li>Module version support , can have multiple versions of the same module
-    and use them depending on the requirement.</li>
-  <li>Content hierarchy</li>
-  <li>Archive based deployment Model and Directory based deployment model</li>
-  <li>JWS like deployment (making Java class into Web service)</li>
-  <li>WSDL Code Generation Tool for Stub and skeletons</li>
-  <li>WS-Addressing, both the submission (2004/08) and final (2005/08)
-    versions</li>
-  <li>WSS4J module for security</li>
-  <li>Improved and user friendly Client API</li>
-  <li>WSDL2Java</li>
-  <li>REST (REpresentational State Transfer) Support</li>
-  <li>Transports supports: HTTP, SMTP, TCP, JMS</li>
-  <li>Raw XML providers</li>
-  <li>Support for MTOM/ MIME/ SwA</li>
-  <li>SAAJ implementation</li>
-  <li>DOOM - New Feature</li>
-  <li>Pack/Unpack capability for the generated code- New Feature</li>
-  <li>Axis Data Binding - ADB (Framework and Schema Compiler)</li>
-  <li>Numerous bug fixes since last release</li>
+    <li>AXIOM, an XML object model working on StAX (Streaming API for XML)
+        parsing optimized for SOAP 1.1/1.2 Messages. This has complete XML
+        infoset support.</li>
+    <li>Support for One-Way Messaging (In-Only) and Request Response Messaging
+        (In-Out)</li>
+    <li>Module Architecture, mechanism to extend the SOAP Processing Model</li>
+    <li>Module version support , can have multiple versions of the same module
+        and use them depending on the requirement.</li>
+    <li>Content hierarchy</li>
+    <li>Archive based deployment Model and Directory based deployment model</li>
+    <li>JWS like deployment (making Java class into Web service)</li>
+    <li>WSDL Code Generation Tool for Stub and skeletons</li>
+    <li>WS-Addressing, both the submission (2004/08) and final (2005/08)
+        versions</li>
+    <li>WSS4J module for security</li>
+    <li>Improved and user friendly Client API</li>
+    <li>WSDL2Java</li>
+    <li>REST (REpresentational State Transfer) Support</li>
+    <li>Transports supports: HTTP, SMTP, TCP, JMS</li>
+    <li>Raw XML providers</li>
+    <li>Support for MTOM/ MIME/ SwA</li>
+    <li>SAAJ implementation</li>
+    <li>DOOM - New Feature</li>
+    <li>Pack/Unpack capability for the generated code- New Feature</li>
+    <li>Axis Data Binding - ADB (Framework and Schema Compiler)</li>
+    <li>Numerous bug fixes since last release</li>
 </ol>
 
+<a name="experimental"></a>
 <h4 id="head-5bb5aa099717d1d49642f7ae2d63ce5cf94487ad">Axis2 Experimental
-Features List<a name="experimental"></a></h4>
+                                                       Features List</h4>
 <ol type="1">
-  <li>Sessions scoping for Application, SOAP, Transport and Request
-  levels</li>
-  <li>Server side Web Service Policy support</li>
-  <li>?wsdl and ?xsd support</li>
-  <li>Java2WSDL</li>
-  <li>Generating ServiceClient for a given WSDL and invoke the corresponding
-    service using generated client.</li>
+    <li>Sessions scoping for Application, SOAP, Transport and Request
+        levels</li>
+    <li>Server side Web Service Policy support</li>
+    <li>?wsdl and ?xsd support</li>
+    <li>Java2WSDL</li>
+    <li>Generating ServiceClient for a given WSDL and invoke the corresponding
+        service using generated client.</li>
 </ol>
-
+<a name="majorchanges"></a>
 <h4 id="head-7dd8e783bb9e22fb00f88748855bb6e500111e12">Major Changes Since
-Last Release<a name="majorchanges"></a></h4>
+                                                       Last Release</h4>
 <ol type="1">
-  <li>Fixing of memory leaks</li>
-  <li>Client API changes , Introducing ServiceClient instead of MEPClient,
-    InOnlyMEPClient, InOutMEPClient, Call. (Please note that the above
-    classes will be deprecated in this release.)</li>
-  <li>Module versioning support , can have multiple versions of the same
-    module and use them depending on the requirement.</li>
-  <li>Code generator improved to process multi-port WSDL's properly</li>
-  <li>Packing and unpacking options for the code generated classes</li>
+    <li>Fixing of memory leaks</li>
+    <li>Client API changes , Introducing ServiceClient instead of MEPClient,
+        InOnlyMEPClient, InOutMEPClient, Call. (Please note that the above
+        classes will be deprecated in this release.)</li>
+    <li>Module versioning support , can have multiple versions of the same
+        module and use them depending on the requirement.</li>
+    <li>Code generator improved to process multi-port WSDL's properly</li>
+    <li>Packing and unpacking options for the code generated classes</li>
 </ol>
-
+<a name="toolsinrelease"></a>
 <h3 id="head-83371cc3d6961295be042f584c7b74d81cca23c4">Tools Included In This
-Release<a name="toolsinrelease"></a></h3>
+                                                       Release</h3>
 <ol type="1">
-  <li>Axis2 Web Application (Web App)</li>
-  <li>WSDL2WS- <a href="CodegenTools-EclipsePlugin.html"
-    target="_blank">Eclipse plugin</a><a>/ </a><a
-    href="CodegenToolReference.html" target="_blank">Command line
-    version</a><a>/ </a><a
-    href="tools\idea\Idea_plug-in_userguide.html#WSDL2Java_Code_Generation">IntelliJ
-    IDEA plugin</a></li>
-  <li>Service Archive Wizard- <a href="ServiceArchiveToolReference.html"
-    target="_blank">Eclipse plugin</a>/ <a
-    href="tools\idea\Idea_plug-in_userguide.html#Create_Service_Archive">IntelliJ
-    IDEA plugin</a></li>
+    <li>Axis2 Web Application (Web App)</li>
+    <li>WSDL2WS- <a href="CodegenTools-EclipsePlugin.html"
+                    target="_blank">Eclipse plugin</a><a>/ </a><a
+            href="CodegenToolReference.html" target="_blank">Command line
+                                                             version</a><a>/ </a><a
+            href="tools/idea/Idea_plug-in_userguide.html#WSDL2Java_Code_Generation">IntelliJ
+                                                                                    IDEA plugin</a>
+    </li>
+    <li>Service Archive Wizard- <a href="ServiceArchiveToolReference.html"
+                                   target="_blank">Eclipse plugin</a>/ <a
+            href="tools/idea/Idea_plug-in_userguide.html#Create_Service_Archive">IntelliJ
+                                                                                 IDEA plugin</a>
+    </li>
 </ol>
 <a href="http://ws.apache.org/axis2/download.cgi">Download</a> above plugins
 
 <h3 id="head-599c5a50552f02ebdeb5f58ef8da289234812ca4">What's Still To Do?<a
-name="WhatsStillToDo"></a></h3>
+        name="WhatsStillToDo"></a></h3>
 
 <p>See list of what we think needs to be done, and consider helping out if
-you're interested &amp; able!</p>
+   you're interested &amp; able!</p>
 <ol type="1">
-  <li>JAX-RPC 1.1 and/or JAX-WS compliance</li>
-  <li>SOAP Encoding</li>
-  <li>Binary serialization and de-serialization support</li>
-  <li>Management Interface for Axis2</li>
-  <li>Implementation of other Transports.</li>
-  <li>Resource framework implementation (WS-RF) and Enterprise web services
-    such as JSR 109 support</li>
-  <li>Completion of interop tests</li>
+    <li>JAX-RPC 1.1 and/or JAX-WS compliance</li>
+    <li>SOAP Encoding</li>
+    <li>Binary serialization and de-serialization support</li>
+    <li>Management Interface for Axis2</li>
+    <li>Implementation of other Transports.</li>
+    <li>Resource framework implementation (WS-RF) and Enterprise web services
+        such as JSR 109 support</li>
+    <li>Completion of interop tests</li>
 </ol>
 
-<h2><a name="samples">Samples</a></h2>
+<a name="samples"/>
+<h2>Samples</h2>
 
 <p>In the following sections of the user's guide we will look at how to write
-and deploy Web Services and how to write Web Service Clients using Axis2. All
-the user's guide samples are located at the <b><font
-color="#000000">"samples/userguide/src"</font></b> directory of the binary
-distribution. So... let's explore the samples.</p>
+   and deploy Web Services and how to write Web Service Clients using Axis2. All
+   the user's guide samples are located at the <b><font
+        color="#000000">"samples/userguide/src"</font></b> directory of the binary
+                                                           distribution. So... let's explore the
+                                                           samples.</p>
 
-<h2><a name="WS">Web Services Using Axis2</a></h2>
+<a name="WS"/>
+<h2>Web Services Using Axis2</h2>
 
 <p>Before starting, please check whether you have deployed the "axis2.war" in
-your servlet container and it is working properly. (See <a
-href="installationguide.html" target="_blank">Installation Guide</a>). User
-can select any of the  following two ways of writing web services using
-Axis2. </p>
+   your servlet container and it is working properly. (See <a
+        href="installationguide.html" target="_blank">Installation Guide</a>). User
+                                                                            can select any of the
+                                                                            following two ways of
+                                                                            writing web services
+                                                                            using
+                                                                            Axis2. </p>
 <ol>
-  <li><a href="#WSapi">Use Axis2's primary interfaces (APIs) and implement
-    the business logic.</a></li>
-  <li><p><a href="#generateskl">Start from the WSDL -&gt;Code generate the
-    Skeleton -&gt;Implement the Business Logic.</a></p>
-  </li>
+    <li><a href="#WSapi">Use Axis2's primary interfaces (APIs) and implement
+                         the business logic.</a></li>
+    <li><p><a href="#generateskl">Start from the WSDL -&gt;Code generate the
+                                  Skeleton -&gt;Implement the Business Logic.</a></p>
+    </li>
 </ol>
 
-<h3><a name="WSapi">Writing Web Services Using Axis2's Primary APIs</a></h3>
+<a name="WSapi"/>
+<h3>Writing Web Services Using Axis2's Primary APIs</h3>
 
-<h4><a name="CreateWS">Creating Web Service (MyService)</a></h4>
+<a name="CreateWS"/>
+<h4>Creating Web Service (MyService)</h4>
 
 <p>First let's see how we can write a simple Web Service (MyService) using
-Axis2's primary interfaces and deploy it. For this purpose we will create a
-Web Service with two operations as follows.</p>
-<pre>public void ping(OMElement element){} //IN-ONLY operation, just accepts the OMElement and do some processing.
-public OMElement echo(OMElement element){}//IN-OUT operation, accepts an OMElement and 
-                                          //responds with another OMElement after processing.</pre>
+   Axis2's primary interfaces and deploy it. For this purpose we will create a
+   Web Service with two operations as follows.</p>
+<pre>public void ping(OMElement element){} //IN-ONLY operation, just accepts the OMElement and do
+     some processing.
+     public OMElement echo(OMElement element){}//IN-OUT operation, accepts an OMElement and
+     //responds with another OMElement after processing.</pre>
 
 <p>Complete code for this example Web Service (MyService) can be found in the
-"Axis2Home/samples/userguide/src" directory under "userguide/example1"
-package. As you can see, the two operations are very simple and need no
-explanations on what they do. Now let's see how we can write the deployment
-descriptors for the service and deploy it.</p>
+   "Axis2Home/samples/userguide/src" directory under "userguide/example1"
+   package. As you can see, the two operations are very simple and need no
+   explanations on what they do. Now let's see how we can write the deployment
+   descriptors for the service and deploy it.</p>
 
 <h4><a name="WriteWS">How to write the Web Service?</a></h4>
-Writing a new Web Service with Axis2 involve four steps:
+                                                               Writing a new Web Service with Axis2
+                                                               involve four steps:
 <ol>
-  <li><p style="margin-bottom: 0in">Write the Implementation Class</p>
-  </li>
-  <li><p style="margin-bottom: 0in">Write a services.xml file to explain the
-    Web Service</p>
-  </li>
-  <li><p style="margin-bottom: 0in">create a *.aar archive (Axis Archive) for
-    the Web Service</p>
-  </li>
-  <li><p>Deploy the Web Service</p>
-  </li>
+    <li>Write the Implementation Class
+    </li>
+    <li>Write a services.xml file to explain the
+        Web Service
+    </li>
+    <li>create a *.aar archive (Axis Archive) for
+        the Web Service
+    </li>
+    <li><p>Deploy the Web Service</p>
+    </li>
 </ol>
 
 <h4><a name="step1">Step1 :Write the Implementation Class</a></h4>
 
 <p>Provides a implementation class that provide the business logic for the
-Web Service, it should have methods that match the operations in the Web
-Service. Unless you have data binding the signature of the methods can have
-one parameter of type OMElement.</p>
+   Web Service, it should have methods that match the operations in the Web
+   Service. Unless you have data binding the signature of the methods can have
+   one parameter of type OMElement.</p>
 <pre>public class MyService{
-    public void ping(OMElement element){
+     public void ping(OMElement element){
      ......
-    }
-    public OMElement echo(OMElement element){
+     }
+     public OMElement echo(OMElement element){
      ......
-    }
-}</pre>
+     }
+     }</pre>
 
 <h4><a name="step2">Step2 :Write the services.xml file</a></h4>
 
 <p>Axis2 uses "services.xml" to keep configurations for a Web Service. Each
-Web Service deployed in Axis2 needs a "services.xml" containing the
-configurations. "services.xml" for MyService will be as follows.</p>
+   Web Service deployed in Axis2 needs a "services.xml" containing the
+   configurations. "services.xml" for MyService will be as follows.</p>
 <pre>&lt;service &gt;
-    &lt;description&gt;
-        This is a sample Web Service with two operations, echo and ping.
-    &lt;/description&gt;
-    &lt;parameter name="ServiceClass" locked="false"&gt;userguide.example1.MyService&lt;/parameter&gt;
-    &lt;operation name="echo"&gt;
-        &lt;messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/&gt;
-    &lt;/operation&gt;
+     &lt;description&gt;
+     This is a sample Web Service with two operations, echo and ping.
+     &lt;/description&gt;
+     &lt;parameter name="ServiceClass" locked="false"&gt;userguide.example1.MyService&lt;/parameter&gt;
+     &lt;operation name="echo"&gt;
+     &lt;messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/&gt;
+     &lt;/operation&gt;
      &lt;operation name="ping"&gt;
-        &lt;messageReceiver class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/&gt;
-    &lt;/operation&gt;
- &lt;/service&gt;</pre>
+     &lt;messageReceiver class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/&gt;
+     &lt;/operation&gt;
+     &lt;/service&gt;</pre>
 
 <p><em>The above XML tags can be explained as follows:</em></p>
 
 <p>Name of the service will be the name of the archive file , if and only if
-the services.xml contains only one service element.</p>
+   the services.xml contains only one service element.</p>
 
 <p>Next comes the description and the service class.</p>
 
 <p>The next two xml tags describe the operations that are available in this
-service with respective message receivers. For the "echo" operation we have
-used a <strong>RawXMLINOutMessageReceiver</strong> since it is an IN-OUT
-operation. For IN-ONLY operation "ping", we have used
-<strong>RawXMLINOnlyMessageReceiver</strong> as the message receiver.</p>
+   service with respective message receivers. For the "echo" operation we have
+   used a <strong>RawXMLINOutMessageReceiver</strong> since it is an IN-OUT
+   operation. For IN-ONLY operation "ping", we have used
+    <strong>RawXMLINOnlyMessageReceiver</strong> as the message receiver.</p>
 
 <p>You can write a services.xml file to include a group of services instead
-of a single service. This makes management and deployment of a set of related
-services very easy. At runtime you can share information between these
-services within a single interaction using the ServiceGroupContext. If you
-hope to use this functionality, the services.xml file should have following
-format.</p>
+   of a single service. This makes management and deployment of a set of related
+   services very easy. At runtime you can share information between these
+   services within a single interaction using the ServiceGroupContext. If you
+   hope to use this functionality, the services.xml file should have following
+   format.</p>
 <pre>&lt;serviceGroup&gt;
-  &lt;service name="Service1"&gt;
-    &lt;!-- details for Service1 --&gt;
-  &lt;/service&gt;
-  &lt;service name="Service2"&gt;
-    &lt;!-- details for Service2 --&gt;
-  &lt;/service&gt;
-  &lt;module ref="ModuleName" /&gt;
-  &lt;parameter name="serviceGroupParam1" locked="false"&gt;value 1&lt;/parameter&gt;
-&lt;/serviceGroup&gt;</pre>
+     &lt;service name="Service1"&gt;
+     &lt;!-- details for Service1 --&gt;
+     &lt;/service&gt;
+     &lt;service name="Service2"&gt;
+     &lt;!-- details for Service2 --&gt;
+     &lt;/service&gt;
+     &lt;module ref="ModuleName" /&gt;
+     &lt;parameter name="serviceGroupParam1" locked="false"&gt;value 1&lt;/parameter&gt;
+     &lt;/serviceGroup&gt;</pre>
 
 <p>Note : name of the service is a compulsory attribute</p>
 
 <h4><a name="step3">Step3 :Create the Web Service Archive</a></h4>
 
 <p>Axis2 use ".aar" (Axis Archive) file as the deployment package for Web
-Services. Therefore, for MyService we will use "MyService.aar" with the
-"services.xml" packaged in the META-INF as shown in the following picture.</p>
+   Services. Therefore, for MyService we will use "MyService.aar" with the
+   "services.xml" packaged in the META-INF as shown in the following picture.</p>
 
-<p><img src="images/userguide/ServiceItems.jpg" name="Graphic1"
-align="bottom" width="176" height="91" border="0"></p>
+<p><img alt="" src="images/userguide/ServiceItems.jpg" name="Graphic1"
+        align="bottom" width="176" height="91" border="0"></p>
 
 <p>To create "MyService.aar" user can first create a jar file containing all
-the files necessary for the service and then rename the "jar" to "aar" so
-that Axis2 understands it as a service archive. This has already been created
-in the "Axis2Home/samples/userguide" directory. Now let's use it...</p>
+   the files necessary for the service and then rename the "jar" to "aar" so
+   that Axis2 understands it as a service archive. This has already been created
+   in the "Axis2Home/samples/userguide" directory. Now let's use it...</p>
 
 <h4><a name="step4">Step4 :Deploy the Web Service</a></h4>
 
-<p>Deploying the service  is just a matter of dropping the ".aar" in to
-"services" directory that can be found in the "\webapps\axis2\WEB-INF" of
-your servlet container, hence copy the "MyService.aar" into the
-"<b>services</b>" directory. Once these steps are completed, start the
-servlet container (if you have not already started) and check the link
-"Services" on the <a href="http://localhost:8080/axis2/index.jsp"
-target="_blank">Home Page of Axis2 Web Application</a>
-(http://localhost:8080/axis2/index.jsp) and see whether the MyService is
-deployed properly. If you can see the following output then you have
-successfully deployed MyService on Axis2.</p>
+<p>Deploying the service is just a matter of dropping the ".aar" in to
+   "services" directory that can be found in the "\webapps\axis2\WEB-INF" of
+   your servlet container, hence copy the "MyService.aar" into the
+   "<b>services</b>" directory. Once these steps are completed, start the
+   servlet container (if you have not already started) and check the link
+   "Services" on the <a href="http://localhost:8080/axis2/index.jsp"
+                        target="_blank">Home Page of Axis2 Web Application</a>
+   (http://localhost:8080/axis2/index.jsp) and see whether the MyService is
+   deployed properly. If you can see the following output then you have
+   successfully deployed MyService on Axis2.</p>
 
-<p align="center"><img src="images/userguide/MyServiceDeployed.jpg"
-name="Graphic2" align="bottom" width="734" height="766" border="0"></p>
+<p align="center"><img alt="" src="images/userguide/MyServiceDeployed.jpg"
+                       name="Graphic2" align="bottom" width="734" height="766" border="0"></p>
 
 <p>Note: Axis2 provides an easy way to deploy Web Services using the "Upload
-Service" tool on Axis2 Web Application's Administration module. (See the <a
-href="webadminguide.html" target="_blank">Web Administration Guide</a> for
-more information on this)</p>
+   Service" tool on Axis2 Web Application's Administration module. (See the <a
+        href="webadminguide.html" target="_blank">Web Administration Guide</a> for
+                                                                               more information on
+                                                                               this)</p>
 
 <h3><a name="generateskl">Writing Web Services by Code Generating
-Skeleton</a></h3>
+                          Skeleton</a></h3>
 
 <p>This is the second method of writing Web Services using Axis2. Let's see
-how we can generate the skeleton from a given WSDL and implement the business
-logic using Axis2. For this we use Axis2SampleDocLit.wsdl that can be found
-in the <b>wsdl</b> directory under samples.</p>
+   how we can generate the skeleton from a given WSDL and implement the business
+   logic using Axis2. For this we use Axis2SampleDocLit.wsdl that can be found
+   in the <b>wsdl</b> directory under samples.</p>
 
 <h4><a name="WSDL2JavaTool">WSDL2Java Tool</a></h4>
 
 <p>To generate the skeleton and the required classes you can use the
-WSDL2Java tool provided in Axis2. This tool is located in the bin directory
-of the distribution and can be executed using the provided scripts (.bat or
-.sh). The tool's parameter list is as follows and user can specify these
-values depending on their requirements.</p>
-<pre>Usage WSDL2Code -uri  :WSDL file location
--o  : output file location
--a : Generate async style code only. Default if off
--s : Generate sync style code only. Default if off. takes precedence over -a
--p  : set custom package name
--l  : valid languages are java and csharp. Default is java
--t : Generate TestCase to test the generated code
--ss : Generate server side code (i.e. skeletons).Default is off
--sd : Generate service descriptor (i.e. axis2.xml).Default is off.Valid with -ss</pre>
+   WSDL2Java tool provided in Axis2. This tool is located in the bin directory
+   of the distribution and can be executed using the provided scripts (.bat or
+   .sh). The tool's parameter list is as follows and user can specify these
+   values depending on their requirements.</p>
+<pre>Usage WSDL2Code -uri :WSDL file location
+     -o : output file location
+     -a : Generate async style code only. Default if off
+     -s : Generate sync style code only. Default if off. takes precedence over -a
+     -p : set custom package name
+     -l : valid languages are java and csharp. Default is java
+     -t : Generate TestCase to test the generated code
+     -ss : Generate server side code (i.e. skeletons).Default is off
+     -sd : Generate service descriptor (i.e. axis2.xml).Default is off.Valid with -ss</pre>
 
 <p>We will use the tool with the following parameters and generate the
-skeleton and the other required classes.</p>
+   skeleton and the other required classes.</p>
 
 <p>Windows users can use the following command in the console:</p>
-<pre style="margin-bottom: 0.2in">WSDL2Java -uri ..\samples\wsdl\Axis2SampleDocLit.wsdl -d xmlbeans -ss -sd -o ..\samples -p org.apache.axis2.userguide</pre>
+<pre style="margin-bottom: 0.2in">WSDL2Java -uri ..\samples\wsdl\Axis2SampleDocLit.wsdl -d xmlbeans
+                                  -ss -sd -o ..\samples -p org.apache.axis2.userguide</pre>
 
 <p>Linux users should switch the file separator:</p>
-<pre style="margin-bottom: 0.2in">WSDL2Java -uri ../samples/wsdl/Axis2SampleDocLit.wsdl -d xmlbeans -ss -sd -o ../samples -p org.apache.axis2.userguide</pre>
+<pre style="margin-bottom: 0.2in">WSDL2Java -uri ../samples/wsdl/Axis2SampleDocLit.wsdl -d xmlbeans
+                                  -ss -sd -o ../samples -p org.apache.axis2.userguide</pre>
 
 <p>This will generate the required classes in the <b>src</b> directory inside
-samples, and the schema classes in <strong>schema</strong> directory also
-inside samples. Note that these are not source files and should be availed in
-the class path in order to compile the generated classes</p>
+   samples, and the schema classes in <strong>schema</strong> directory also
+   inside samples. Note that these are not source files and should be availed in
+   the class path in order to compile the generated classes</p>
 
 <h4><a name="businesslogic">Implement the Business Logic</a></h4>
 
 <p>Locate the skeleton class that can be found under src/userguide directory
-with the name "Axis2SampleDocLitPortTypeSkeleton.java". This is the skeleton
-for our web service and we can now easily implement the business logic. The
-WSDL we have used has three operations:<!--<li><p style="margin-bottom: 0in">echoVoid   - Operation that does not
-accept any input parameters  and also provide no out put parameters. Just
+   with the name "Axis2SampleDocLitPortTypeSkeleton.java". This is the skeleton
+   for our web service and we can now easily implement the business logic. The
+   WSDL we have used has three operations:<!--<li>echoVoid - Operation that does not
+accept any input parameters and also provide no out put parameters. Just
 perform some task </p>
 </li>-->
 </p>
 <ul>
-  <li><p style="margin-bottom: 0in">echoString  - Operation that echoes a
-    String value </p>
-  </li>
-  <li><p style="margin-bottom: 0in">echoStringArray - Operation that accept
-    string array as the input and echoes them back</p>
-  </li>
-  <li><p>echoStruct - Operation that accept a Struct as the input and echoes
-    them back.</p>
-  </li>
+    <li>echoString - Operation that echoes a
+        String value
+    </li>
+    <li>echoStringArray - Operation that accept
+        string array as the input and echoes them back
+    </li>
+    <li><p>echoStruct - Operation that accept a Struct as the input and echoes
+           them back.</p>
+    </li>
 </ul>
-<!--<h4>echoVoid   </h4>
 
-<p>Locate the following code segment  in the
-"Axis2SampleDocLitPortTypeSkeleton.java"  and fill the business logic. For
-the explanation purpose we do not need anything to be implemented here.</p>
-<pre>public  void echoVoid(){
-//Todo fill this with the necessary business logic
-}</pre> -->
-
-<h4><a name="echostring">echoString</a></h4>
-
-<p>Locate the following code segment  in the
-"Axis2SampleDocLitPortTypeSkeleton.java"  and fill the business logic as
-shown below.</p>
-<pre> public  org.soapinterop.xsd.EchoStringArrayReturnDocument 
-                echoStringArray(org.soapinterop.xsd.EchoStringArrayParamDocument param2){
-    //To do fill this with the necessary business logic
-    return null;
- }</pre>
+<a name="echostring"/>
+<h4>echoString</h4>
+
+<p>Locate the following code segment in the
+   "Axis2SampleDocLitPortTypeSkeleton.java" and fill the business logic as
+   shown below.</p>
+<pre> public org.soapinterop.xsd.EchoStringArrayReturnDocument
+      echoStringArray(org.soapinterop.xsd.EchoStringArrayParamDocument param2){
+      //To do fill this with the necessary business logic
+      return null;
+      }</pre>
 
 <p>Once filled with the business logic it will be as follows. The code is
-simple and the explanations are given as comments.</p>
-<pre>public org.soapinterop.xsd.EchoStringReturnDocument 
-                          echoString(org.soapinterop.xsd.EchoStringParamDocument param6) {
-   //Use the factory to create the output document.
-   EchoStringReturnDocument retDoc = EchoStringReturnDocument.Factory.newInstance();
-   //send the string back.
-   retDoc.setEchoStringReturn(param6.getEchoStringParam());
-   return retDoc;
-}</pre>
+   simple and the explanations are given as comments.</p>
+<pre>public org.soapinterop.xsd.EchoStringReturnDocument
+     echoString(org.soapinterop.xsd.EchoStringParamDocument param6) {
+     //Use the factory to create the output document.
+     EchoStringReturnDocument retDoc = EchoStringReturnDocument.Factory.newInstance();
+     //send the string back.
+     retDoc.setEchoStringReturn(param6.getEchoStringParam());
+     return retDoc;
+     }</pre>
 
 <p>Similarly following code fragments shows how you can fill the business
-logic for our first web service.</p>
+   logic for our first web service.</p>
 
 <h4><a name="echostringarray">echoStringArray</a></h4>
-<pre>public org.soapinterop.xsd.EchoStringArrayReturnDocument 
-                echoStringArray(org.soapinterop.xsd.EchoStringArrayParamDocument param2) {
-
-    //Use the factory to create the output document.
-    EchoStringArrayReturnDocument retDoc = EchoStringArrayReturnDocument.Factory.newInstance();
+<pre>public org.soapinterop.xsd.EchoStringArrayReturnDocument
+     echoStringArray(org.soapinterop.xsd.EchoStringArrayParamDocument param2) {
 
-    //Get the String array from the input parameters.
-    String[] inParams = param2.getEchoStringArrayParam().getStringArray();
-    ArrayOfstringLiteral retParams = ArrayOfstringLiteral.Factory.newInstance();
-    //Set the input parameters to the output parameters for echoing.
-    for (int i = 0; i &lt; inParams.length; i++) {
-        retParams.addString(inParams[i]);
-    }
+     //Use the factory to create the output document.
+     EchoStringArrayReturnDocument retDoc = EchoStringArrayReturnDocument.Factory.newInstance();
 
-    //return the output document.
-    retDoc.setEchoStringArrayReturn(retParams);
-    return retDoc;
-}</pre>
+     //Get the String array from the input parameters.
+     String[] inParams = param2.getEchoStringArrayParam().getStringArray();
+     ArrayOfstringLiteral retParams = ArrayOfstringLiteral.Factory.newInstance();
+     //Set the input parameters to the output parameters for echoing.
+     for (int i = 0; i &lt; inParams.length; i++) {
+     retParams.addString(inParams[i]);
+     }
+
+     //return the output document.
+     retDoc.setEchoStringArrayReturn(retParams);
+     return retDoc;
+     }</pre>
 
 <h4><a name="echostruct">echoStruct</a></h4>
-<pre>public org.soapinterop.xsd.EchoStructReturnDocument 
-                echoStruct(org.soapinterop.xsd.EchoStructParamDocument param4) {
-  
-   //Use the factory to create the output document.
-   EchoStructReturnDocument retDoc = EchoStructReturnDocument.Factory.newInstance();
-  
-   //Get the SOAPStrcut from the incoming parameters
-   SOAPStruct inStruct = param4.getEchoStructParam();
-   
-   //Struct for the sending back
-   SOAPStruct outStruct = SOAPStruct.Factory.newInstance();
-   
-   //Fill the outgoing struct
-   outStruct.setVarFloat(inStruct.getVarFloat());
-   outStruct.setVarInt(inStruct.getVarInt());
-   outStruct.setVarString(inStruct.getVarString());
-   //Set the outgoing document.
-   retDoc.setEchoStructReturn(outStruct);
-  
-   return retDoc;
-}</pre>
+<pre>public org.soapinterop.xsd.EchoStructReturnDocument
+     echoStruct(org.soapinterop.xsd.EchoStructParamDocument param4) {
+
+     //Use the factory to create the output document.
+     EchoStructReturnDocument retDoc = EchoStructReturnDocument.Factory.newInstance();
+
+     //Get the SOAPStrcut from the incoming parameters
+     SOAPStruct inStruct = param4.getEchoStructParam();
+
+     //Struct for the sending back
+     SOAPStruct outStruct = SOAPStruct.Factory.newInstance();
+
+     //Fill the outgoing struct
+     outStruct.setVarFloat(inStruct.getVarFloat());
+     outStruct.setVarInt(inStruct.getVarInt());
+     outStruct.setVarString(inStruct.getVarString());
+     //Set the outgoing document.
+     retDoc.setEchoStructReturn(outStruct);
+
+     return retDoc;
+     }</pre>
 
 <h4><a name="servicesxml">services.xml</a></h4>
 
-<p> Axis2 uses "services.xml" to hold the configurations for a particular web
-service deployed in the Axis2 engine. When we generate the skeleton using the
-WSDL2Java tool, it will also generate the required services.xml for this web
-service as well. This can be found in the same directory as the skeleton. The
-generated services.xml is as follows.</p>
+<p>Axis2 uses "services.xml" to hold the configurations for a particular web
+   service deployed in the Axis2 engine. When we generate the skeleton using the
+   WSDL2Java tool, it will also generate the required services.xml for this web
+   service as well. This can be found in the same directory as the skeleton. The
+   generated services.xml is as follows.</p>
 <pre>&lt;!--Auto generated Axis Service XML--&gt;
-&lt;service name="Axis2SampleDocLitPortTypeSkeletonTest"&gt;
-    &lt;parameter locked="xsd:false" name="ServiceClass"&gt;userguide.Axis2SampleDocLitPortTypeSkeleton&lt;/parameter&gt;
-    &lt;!--Mounting the method echoStringArray--&gt;
-    &lt;operation name="echoStringArray"&gt;
-    &lt;messageReceiver class="userguide.Axis2SampleDocLitPortTypeMessageReceiver"/&gt;
-    &lt;/operation&gt;
-    &lt;!--Mounting the method echoStruct--&gt;
-    &lt;operation name="echoStruct"&gt;
-    &lt;messageReceiver class="userguide.Axis2SampleDocLitPortTypeMessageReceiver"/&gt;
-    &lt;/operation&gt;
-    &lt;!--Mounting the method echoString--&gt;
-    &lt;operation name="echoString"&gt;
-    &lt;messageReceiver class="userguide.Axis2SampleDocLitPortTypeMessageReceiver"/&gt;
-    &lt;/operation&gt;
-&lt;/service&gt;</pre>
+     &lt;service name="Axis2SampleDocLitPortTypeSkeletonTest"&gt;
+     &lt;parameter locked="xsd:false" name="ServiceClass"&gt;userguide.Axis2SampleDocLitPortTypeSkeleton&lt;/parameter&gt;
+     &lt;!--Mounting the method echoStringArray--&gt;
+     &lt;operation name="echoStringArray"&gt;
+     &lt;messageReceiver class="userguide.Axis2SampleDocLitPortTypeMessageReceiver"/&gt;
+     &lt;/operation&gt;
+     &lt;!--Mounting the method echoStruct--&gt;
+     &lt;operation name="echoStruct"&gt;
+     &lt;messageReceiver class="userguide.Axis2SampleDocLitPortTypeMessageReceiver"/&gt;
+     &lt;/operation&gt;
+     &lt;!--Mounting the method echoString--&gt;
+     &lt;operation name="echoString"&gt;
+     &lt;messageReceiver class="userguide.Axis2SampleDocLitPortTypeMessageReceiver"/&gt;
+     &lt;/operation&gt;
+     &lt;/service&gt;</pre>
 
 <p>First line of the "services.xml" gives the name of the Web Service. This
-is used in the URL to the service as the service name. Next comes the
-description and the service class. The next xml tags describe the operations
-that are available in this service with respective message receivers.</p>
+   is used in the URL to the service as the service name. Next comes the
+   description and the service class. The next xml tags describe the operations
+   that are available in this service with respective message receivers.</p>
 
 <h4><a name="packaging">Packaging</a></h4>
 
 <p>Next step in the process is to package the classes in a .aar (axis2
-archive) and deploy it in Axis2. When the WSDL2Java tool generate the
-skeleton it will also generate the required data binding classes. These
-schema related classes are located in the <b>schema </b>directory of the
-generated code. Copy this to your class path, compile the skeleton and the
-supporting classes. In order to create the .aar file, let's create the
-following directory structure with the required files and then simply use jar
-command to package it.</p>
+   archive) and deploy it in Axis2. When the WSDL2Java tool generate the
+   skeleton it will also generate the required data binding classes. These
+   schema related classes are located in the <b>schema </b>directory of the
+   generated code. Copy this to your class path, compile the skeleton and the
+   supporting classes. In order to create the .aar file, let's create the
+   following directory structure with the required files and then simply use jar
+   command to package it.</p>
 
-<p><img src="images/userguide/DirectoryStructure.JPG" align="bottom"
-width="164" height="142" border="0"></p>
+<p><img alt="" src="images/userguide/DirectoryStructure.JPG" align="bottom"
+        width="164" height="142" border="0"></p>
 
 <p>Go to the top level directory where you can find the class files for the
-above service (i.e. one level up on the directory structure shown above),
-then type the following command in a command line.</p>
+   above service (i.e. one level up on the directory structure shown above),
+   then type the following command in a command line.</p>
 <pre style="margin-bottom: 0.2in">jar -cf Axis2SampleDocLitPortType.aar .</pre>
 
-<p>Deploying the service  is just a matter of dropping the ".aar" in to
-"services" directory that can be found in the "\webapps\axis2\WEB-INF" of
-your servlet container, hence copy the "echo.aar" into the "<b>services</b>"
-directory. Once these steps are completed, please start the servlet container
-(if you have not already started) and check the link "Services" on the <a
-href="http://localhost:8080/axis2/index.jsp" target="_blank">Home Page of
-Axis2 Web Application</a> (http://localhost:8080/axis2/index.jsp) and see
-whether the Axis2SampleDocLitPortType is deployed properly. If you can see
-the following output then you have successfully deployed
-Axis2SampleDocLitPortType on Axis2.</p>
+<p>Deploying the service is just a matter of dropping the ".aar" in to
+   "services" directory that can be found in the "\webapps\axis2\WEB-INF" of
+   your servlet container, hence copy the "echo.aar" into the "<b>services</b>"
+   directory. Once these steps are completed, please start the servlet container
+   (if you have not already started) and check the link "Services" on the <a
+        href="http://localhost:8080/axis2/index.jsp" target="_blank">Home Page of
+                                                                     Axis2 Web Application</a>
+   (http://localhost:8080/axis2/index.jsp) and see
+   whether the Axis2SampleDocLitPortType is deployed properly. If you can see
+   the following output then you have successfully deployed
+   Axis2SampleDocLitPortType on Axis2.</p>
 
-<p align="center"><img src="images/userguide/ServiceDeployed.JPG"
-name="Graphic4" align="bottom" width="734" height="764" border="0"></p>
+<p align="center"><img alt="" src="images/userguide/ServiceDeployed.JPG"
+                       name="Graphic4" align="bottom" width="734" height="764" border="0"></p>
 
 <p>Note: Axis2 provides an easy way to deploy Web Services using the "Upload
-Service" tool on Axis2 Web Application's Administration module. (See the <a
-href="webadminguide.html" target="_blank">Web Administration Guide</a> for
-more information on this)</p>
+   Service" tool on Axis2 Web Application's Administration module. (See the <a
+        href="webadminguide.html" target="_blank">Web Administration Guide</a> for
+                                                                               more information on
+                                                                               this)</p>
 
 <h2><a name="Web_Service_Clients_Using_Axis2"></a>Web Service Clients Using
-Axis2</h2>
+                                                  Axis2</h2>
 
 <p>Now let's see how we can write a Web Service Client to use this Web
-Service.</p>
+   Service.</p>
 
 <p>Web services can be used to provide wide range of functionality to the
-users ranging from simple, less time consuming  operations such as
-"getStockQuote"  to time consuming business services. When we utilize (invoke
-using client applications) these Web Service we cannot use some simple
-generic invocation paradigm that suites all the timing complexities involved
-in the service operations. For example, if we use a single transport channel
-(such as HTTP) to invoke a Web Service with and IN-OUT operation that take
-long time to complete, then most of the time we may end up with "connection
-time outs". On the other hand, if there are simultaneous service invocations
-that  we need to perform from a single client application, then the use of a
-"blocking" client API will degrade the performance of the client application.
-Similarly there are various other consequences such as One-Way transports
-that come in to play when we need them. Let's try to analyze some common
-service invocation paradigms.</p>
+   users ranging from simple, less time consuming operations such as
+   "getStockQuote" to time consuming business services. When we utilize (invoke
+   using client applications) these Web Service we cannot use some simple
+   generic invocation paradigm that suites all the timing complexities involved
+   in the service operations. For example, if we use a single transport channel
+   (such as HTTP) to invoke a Web Service with and IN-OUT operation that take
+   long time to complete, then most of the time we may end up with "connection
+   time outs". On the other hand, if there are simultaneous service invocations
+   that we need to perform from a single client application, then the use of a
+   "blocking" client API will degrade the performance of the client application.
+   Similarly there are various other consequences such as One-Way transports
+   that come in to play when we need them. Let's try to analyze some common
+   service invocation paradigms.</p>
 
 <p>Many web service engines provide the users with a Blocking and
-Non-Blocking client APIs.</p>
+   Non-Blocking client APIs.</p>
 <ul>
-  <li><p style="margin-bottom: 0in"><b>Blocking API</b> -Once the service
-    invocation is called, the client application hangs and only gets control
-    back when the operation completes, after which client receives a response
-    or a fault. This is the simplest way of invoking Web Services and it also
-    suites many business situations.</p>
-  </li>
-  <li><p><b>Non-Blocking API </b>- This is a callback or polling based API,
-    hence once a service invocation is called, the client application
-    immediately gets the control back and the response is retrieved using the
-    callback object provided. This approach provides the flexibility to the
-    client application to invoke several Web Services simultaneously without
-    blocking the operation already invoked.</p>
-  </li>
+    <li><b>Blocking API</b> -Once the service
+                            invocation is called, the client application hangs and only gets control
+                            back when the operation completes, after which client receives a
+                            response
+                            or a fault. This is the simplest way of invoking Web Services and it
+                            also
+                            suites many business situations.
+    </li>
+    <li><p><b>Non-Blocking API </b>- This is a callback or polling based API,
+                                   hence once a service invocation is called, the client application
+                                   immediately gets the control back and the response is retrieved
+                                   using the
+                                   callback object provided. This approach provides the flexibility
+                                   to the
+                                   client application to invoke several Web Services simultaneously
+                                   without
+                                   blocking the operation already invoked.</p>
+    </li>
 </ul>
 
-<p>Both these mechanisms work in the API level. Let's name the  asynchronous
-behavior that we can get using the <strong>Non-Blocking API</strong> as
-<b>API Level Asynchrony.</b></p>
+<p>Both these mechanisms work in the API level. Let's name the asynchronous
+   behavior that we can get using the <strong>Non-Blocking API</strong> as
+    <b>API Level Asynchrony.</b></p>
 
 <p>Both these mechanisms use single transport connection to send the request
-and to receive the response. They severely lags the capability of using two
-transport connections for the request and the response (either One-Way of
-Two-Way). So both these mechanisms fail to address the problem of long
-running transactions (the transport connection may time-out before the
-operation completes). A possible solution would be to use <strong>two
-separate transport connections for request and response</strong>. The
-asynchronous behavior that we gain using this solution can be called
-<b>Transport Level Asynchrony</b>.</p>
+   and to receive the response. They severely lags the capability of using two
+   transport connections for the request and the response (either One-Way of
+   Two-Way). So both these mechanisms fail to address the problem of long
+   running transactions (the transport connection may time-out before the
+   operation completes). A possible solution would be to use <strong>two
+                                                                     separate transport connections
+                                                                     for request and
+                                                                     response</strong>. The
+                                                                                      asynchronous
+                                                                                      behavior that
+                                                                                      we gain using
+                                                                                      this solution
+                                                                                      can be called
+    <b>Transport Level Asynchrony</b>.</p>
 
 <p>By combining API Level Asynchrony &amp; Transport Level Asynchrony we can
-obtain four different invocation patterns for web services as shown in the
-following table.</p>
+   obtain four different invocation patterns for web services as shown in the
+   following table.</p>
 <a name="table1"></a>
 
 <table width="100%" border="1" cellpadding="0" cellspacing="0">
-  <tbody>
-    <tr>
-      <td width="33%" height="19"><p><strong>API
-        (Blocking/Non-Blocking)</strong></p>
-      </td>
-      <td width="33%"><p><strong> Dual Transports (Yes/No)</strong></p>
-      </td>
-      <td width="33%"><p><strong>Description</strong></p>
-      </td>
-    </tr>
-    <tr>
-      <td width="33%" height="19"><p>Blocking</p>
-      </td>
-      <td width="33%"><p>No</p>
-      </td>
-      <td width="33%"><p>Simplest and the familiar invocation pattern</p>
-      </td>
-    </tr>
-    <tr>
-      <td width="33%" height="19"><p>Non-Blocking</p>
-      </td>
-      <td width="33%"><p>No</p>
-      </td>
-      <td width="33%"><p>Using callbacks or polling</p>
-      </td>
-    </tr>
-    <tr>
-      <td width="33%" height="19"><p>Blocking</p>
-      </td>
-      <td width="33%"><p>Yes</p>
-      </td>
-      <td width="33%"><p>This is useful when the service operation is IN-OUT
-        in nature but the transport used is One-Way (e.g. SMTP)</p>
-      </td>
-    </tr>
-    <tr>
-      <td width="33%" height="19"><p>Non-Blocking</p>
-      </td>
-      <td width="33%"><p>Yes</p>
-      </td>
-      <td width="33%"><p>This is can be used to gain the maximum asynchronous
-        behavior. No blocking in the API level and also in the transport
-        level</p>
-      </td>
-    </tr>
-  </tbody>
+    <tbody>
+        <tr>
+            <td width="33%" height="19"><p><strong>API
+                                                   (Blocking/Non-Blocking)</strong></p>
+            </td>
+            <td width="33%"><p><strong>Dual Transports (Yes/No)</strong></p>
+            </td>
+            <td width="33%"><p><strong>Description</strong></p>
+            </td>
+        </tr>
+        <tr>
+            <td width="33%" height="19"><p>Blocking</p>
+            </td>
+            <td width="33%"><p>No</p>
+            </td>
+            <td width="33%"><p>Simplest and the familiar invocation pattern</p>
+            </td>
+        </tr>
+        <tr>
+            <td width="33%" height="19"><p>Non-Blocking</p>
+            </td>
+            <td width="33%"><p>No</p>
+            </td>
+            <td width="33%"><p>Using callbacks or polling</p>
+            </td>
+        </tr>
+        <tr>
+            <td width="33%" height="19"><p>Blocking</p>
+            </td>
+            <td width="33%"><p>Yes</p>
+            </td>
+            <td width="33%"><p>This is useful when the service operation is IN-OUT
+                               in nature but the transport used is One-Way (e.g. SMTP)</p>
+            </td>
+        </tr>
+        <tr>
+            <td width="33%" height="19"><p>Non-Blocking</p>
+            </td>
+            <td width="33%"><p>Yes</p>
+            </td>
+            <td width="33%"><p>This is can be used to gain the maximum asynchronous
+                               behavior. No blocking in the API level and also in the transport
+                               level</p>
+            </td>
+        </tr>
+    </tbody>
 </table>
 
 <p>Axis2 provides the user with all these possibilities to invoke Web
-Services.</p>
+   Services.</p>
 
 <p>Below we describe how to write Web Services Clients using Axis2. This can
-be done in two methods:</p>
+   be done in two methods:</p>
 <ol>
-  <li><a href="#primaryAPIs">Using the Axis2's primary APIs</a></li>
-  <li><p><a href="#databinding">Using stubs generated with data binding
-    support</a>, making the life easy for developers writing Web Service
-    client applications</p>
-  </li>
+    <li><a href="#primaryAPIs">Using the Axis2's primary APIs</a></li>
+    <li><p><a href="#databinding">Using stubs generated with data binding
+                                  support</a>, making the life easy for developers writing Web
+                                             Service
+                                             client applications</p>
+    </li>
 </ol>
 
 <h3><a name="primaryAPIs">Writing Web Service Clients Using Axis2's Primary
-APIs</a></h3>
+                          APIs</a></h3>
 
 <h4><a name="echoblocking">EchoBlockingClient</a></h4>
 
 <p>Axis2 provides the user with several invocation patterns for Web Services,
-ranging from pure blocking single channel invocations to a non-blocking dual
-channel invocations. Let's first see how we can write a client to invoke
-"echo" operation of "MyService" using the simplest blocking invocation. The
-client code you need to write is as follows.</p>
-<pre>  try {
-            OMElement payload = ClientUtil.getEchoOMElement();
-<font color="#33cc00">            Options options = new Options();
-            options.setTo(targetEPR);
-            options.setListenerTransportProtocol(Constants.TRANSPORT_HTTP);
-            options.setUseSeparateListener(false);
-
-            ServiceClient serviceClient = new ServiceClient();
-            serviceClient.setOptions(options);</font>
-
-<font color="#33cc00">            OMElement result = sender.sendReceive(payload);</font>
-
-            StringWriter writer = new StringWriter();
-            result.serializeWithCache(new OMOutput(XMLOutputFactory.newInstance().createXMLStreamWriter(writer)));
-            writer.flush();
-
-            System.out.println(writer.toString());
-
-        } catch (AxisFault axisFault) {
-            axisFault.printStackTrace();
-        } catch (XMLStreamException e) {
-            e.printStackTrace();
-        }
-}</pre>
+   ranging from pure blocking single channel invocations to a non-blocking dual
+   channel invocations. Let's first see how we can write a client to invoke
+   "echo" operation of "MyService" using the simplest blocking invocation. The
+   client code you need to write is as follows.</p>
+<pre> try {
+      OMElement payload = ClientUtil.getEchoOMElement();
+    <font color="#33cc00"> Options options = new Options();
+                           options.setTo(targetEPR);
+                           options.setListenerTransportProtocol(Constants.TRANSPORT_HTTP);
+                           options.setUseSeparateListener(false);
+
+                           ServiceClient serviceClient = new ServiceClient();
+                           serviceClient.setOptions(options);</font>
+
+    <font color="#33cc00"> OMElement result = sender.sendReceive(payload);</font>
+
+      StringWriter writer = new StringWriter();
+      result.serializeWithCache(new
+      OMOutput(XMLOutputFactory.newInstance().createXMLStreamWriter(writer)));
+      writer.flush();
+
+      System.out.println(writer.toString());
+
+      } catch (AxisFault axisFault) {
+      axisFault.printStackTrace();
+      } catch (XMLStreamException e) {
+      e.printStackTrace();
+      }
+      }</pre>
 
 <p>The green lines shows the set of operations that you need to perform
-inorder to invoke a web service. The rest is used to create the OMElement
-that needs to be sent and display the response OMElement. To test this
-client, use the provided ant build file that can be found in the
-"Axis2Home/samples" directory. Run the "testEchoBlockingClient" target . If
-you can see the response OMElement printed in your command line,  then you
-have successfully tested the client. </p>
+   inorder to invoke a web service. The rest is used to create the OMElement
+   that needs to be sent and display the response OMElement. To test this
+   client, use the provided ant build file that can be found in the
+   "Axis2Home/samples" directory. Run the "testEchoBlockingClient" target . If
+   you can see the response OMElement printed in your command line, then you
+   have successfully tested the client. </p>
 
 <h4><a name="ping">PingClient</a></h4>
 
 <p>In the Web Service "MyService" we had a IN-ONLY operation with the name
-"ping" (see <a href="#WS">Web Services Using Axis2</a>). Let's write a client
-to invoke this operation. The client code is as follows:</p>
+   "ping" (see <a href="#WS">Web Services Using Axis2</a>). Let's write a client
+   to invoke this operation. The client code is as follows:</p>
 <pre> try {
-       OMElement payload = ClientUtil.getPingOMElement();
-       Options options = new Options();
-       options.setTo(targetEPR);
-       ServiceClient serviceClient = new ServiceClient();
-       serviceClient.setOptions(options);
-       serviceClient.fireAndForget(payload);
-
-     } 
-catch (AxisFault axisFault) {
-            axisFault.printStackTrace();
-     }</pre>
+      OMElement payload = ClientUtil.getPingOMElement();
+      Options options = new Options();
+      options.setTo(targetEPR);
+      ServiceClient serviceClient = new ServiceClient();
+      serviceClient.setOptions(options);
+      serviceClient.fireAndForget(payload);
+
+      }
+      catch (AxisFault axisFault) {
+      axisFault.printStackTrace();
+      }</pre>
 
 <p>Since we are accessing a IN-ONLY operation we can directly use the
-"fireAndForget()" in ServiceClient to invoke this operation , and that will
-not block the invocation, hence it will return the control immediately back
-to the client. You can test this client by running the target
-"testPingClient" of the ant build file at "Axis2Home/samples".</p>
+   "fireAndForget()" in ServiceClient to invoke this operation , and that will
+   not block the invocation, hence it will return the control immediately back
+   to the client. You can test this client by running the target
+   "testPingClient" of the ant build file at "Axis2Home/samples".</p>
 
 <p>We have invoked the two operations in our service. Are we done? No! There
-are lot more to explore. Let's see some other ways to invoke the same
-operations...</p>
+   are lot more to explore. Let's see some other ways to invoke the same
+   operations...</p>
 
 <h4><a name="echononblocking">EchoNonBlockingClient</a></h4>
 
 <p>In the EchoBlockingClient once the "serviceCleint.sendReceive(payload);"
-is called, the client is blocked till the operation is completed. This
-behavior is not desirable when there are many Web Service invocations to be
-done in a single client application. A solution would be to use a
-Non-Blocking API to invoke web services. Axis2 provides a callback based
-non-blocking API for users.</p>
+   is called, the client is blocked till the operation is completed. This
+   behavior is not desirable when there are many Web Service invocations to be
+   done in a single client application. A solution would be to use a
+   Non-Blocking API to invoke web services. Axis2 provides a callback based
+   non-blocking API for users.</p>
 
 <p>A sample client for this can be found under
-"Axis2Home/samples/userguide/src/userguide/clients" with the name
-EchoNonBlockingClient. If we consider the changes that user may have to do
-with respect to the "EchoBlockingClient" that we have already seen, it will
-be as follows:</p>
+   "Axis2Home/samples/userguide/src/userguide/clients" with the name
+   EchoNonBlockingClient. If we consider the changes that user may have to do
+   with respect to the "EchoBlockingClient" that we have already seen, it will
+   be as follows:</p>
 <pre style="margin-bottom: 0.2in">serviceClient.sendReceiveNonblocking(payload, callback);</pre>
 
 <p>The invocation accepts a callback object as a parameter. Axis2 client API
-provides an abstract Callback with the following methods:</p>
+   provides an abstract Callback with the following methods:</p>
 <pre>public abstract void onComplete(AsyncResult result);
-public abstract void onError(Exception e);
-public boolean isComplete() {}</pre>
+     public abstract void onError(Exception e);
+     public boolean isComplete() {}</pre>
 
 <p>The user is expected to implement the "onComplete " and "onError " methods
-of their extended call back class. Axis2 engine calls the onComplete method
-once the Web Service response is received by the Axis2 Client API
-(ServiceClient). This will eliminate the blocking nature of the Web Service
-invocations and provides the user with the flexibility to use Non Blocking
-API for Web Service Clients.</p>
+   of their extended call back class. Axis2 engine calls the onComplete method
+   once the Web Service response is received by the Axis2 Client API
+   (ServiceClient). This will eliminate the blocking nature of the Web Service
+   invocations and provides the user with the flexibility to use Non Blocking
+   API for Web Service Clients.</p>
 
 <p>To run the sample client ( EchoNonBlockingClient) you can simply use the
-"testEchoNonBlockingClient" target of the ant file found at the
-"Axis2Home/samples" directory.</p>
+   "testEchoNonBlockingClient" target of the ant file found at the
+   "Axis2Home/samples" directory.</p>
 
 <h4><a name="echononblockingdual">EchoNonBlockingDualClient</a></h4>
 
 <p>The solution provided by the Non-Blocking API has one limitation when it
-comes to  Web Service invocations which takes long time to complete. The
-limitation is due to the use of single transport connection to invoke the Web
-Service and to retrieve the response. In other words, client API provides a
-non blocking invocation mechanism for the users, but the request and the
-response comes in a single transport (Two-Way transport) connection (like
-HTTP). Long running Web Service invocations or Web Service invocations using
-One-Way transports (like SMTP) cannot be utilized by simply using a non
-blocking invocation. </p>
+   comes to Web Service invocations which takes long time to complete. The
+   limitation is due to the use of single transport connection to invoke the Web
+   Service and to retrieve the response. In other words, client API provides a
+   non blocking invocation mechanism for the users, but the request and the
+   response comes in a single transport (Two-Way transport) connection (like
+   HTTP). Long running Web Service invocations or Web Service invocations using
+   One-Way transports (like SMTP) cannot be utilized by simply using a non
+   blocking invocation. </p>
 
 <p>The trivial solution is to use separate transport connections (either
-One-Way or Two-Way) for the request and response. The next problem that needs
-to be solved is the correlation (correlating the request and the response).
-<a href="http://www.w3.org/Submission/ws-addressing/"
-target="_blank">WS-Addressing</a> provides a neat solution to this using
-&lt;wsa:MessageID&gt; and &lt;wsa:RelatesTo&gt; headers. Axis2 provides
-support for addressing  based correlation mechanism and a complying Client
-API to invoke Web Services with two transport connections. (Core of Axis2
-does not depend on WS-Addressing, but contains a set of parameters like in
-addressing that can be populated in any means. WS-Addressing is one of the
-users that may populate them. Even the transports can populate these. Hence
-Axis2 has the flexibility to use different versions of addressing)</p>

[... 1066 lines stripped ...]


Mime
View raw message