You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ch...@apache.org on 2005/02/21 09:12:17 UTC

svn commit: r154653 [2/3] - in webservices/axis/trunk/java/xdocs: Axis2ArchitectureGuide.html ClientAPI.html navigation.xml schemas.html userguide.html

Modified: webservices/axis/trunk/java/xdocs/Axis2ArchitectureGuide.html
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/xdocs/Axis2ArchitectureGuide.html?view=diff&r1=154652&r2=154653
==============================================================================
--- webservices/axis/trunk/java/xdocs/Axis2ArchitectureGuide.html (original)
+++ webservices/axis/trunk/java/xdocs/Axis2ArchitectureGuide.html Mon Feb 21 00:12:14 2005
@@ -1,744 +1,339 @@
-<html>
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<title>Axis 2 Architecture Guide</title>
-<style>
-<!--
-.MsoToc1
-	{line-height:normal;
-	font-size:12.0pt;
-	font-family:"Times New Roman";}
-.MsoToc2
-	{line-height:normal;
-	font-size:12.0pt;
-	font-family:"Times New Roman";}
-.MsoHyperlink
-	{color:blue;
-	text-decoration:underline;}
-.StyleHeading1TimesNewRoman14ptNotBoldJustified
-	{text-align:justify;
-	text-indent:-.3in;
-	line-height:normal;
-	font-size:14.0pt;
-	font-family:"Times New Roman";
-	font-weight:bold;}
-.StyleHeading1TimesNewRoman14ptNotBoldJustifiedChar
-	{font-family:Arial;
-	font-weight:bold;}
-.Section1
-	{page:Section1;}
--->
-</style>
+<html><head><title>Axis 2 Architecture Guide</title>
+<style></style>
 </head>
-<body bgcolor="#FFFFFF" link=blue vlink=purple class="Normal" lang=EN-US> 
-<div class=Section1> 
-  <p align=center style='text-align:center'><b><span
-style='font-size:24.0pt'>Axis Java 2.0 Architecture Guide for the Milestone Release 1.0</span></b></p> 
-  <p><b><span style='font-size:14.0pt'>Table of Contents</span></b></p> 
-  <p class=MsoToc1><span
-class=MsoHyperlink><a href="#_Toc96747262">1<span style='color:windowtext;
-text-decoration:none'>      </span>Introduction</a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747263">1.1<span
-style='color:windowtext;text-decoration:none'>       </span>Architecture overview</a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747264">1.2<span
-style='color:windowtext;text-decoration:none'>       </span>Axis2 sub components</a></span></p> 
-  <p class=MsoToc1><span class=MsoHyperlink><a href="#_Toc96747265">2<span
-style='color:windowtext;text-decoration:none'>      </span>Axis Engine</a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747266">2.1<span
-style='color:windowtext;text-decoration:none'>       </span>Handlers</a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747267">2.2<span
-style='color:windowtext;text-decoration:none'>       </span>Transport Senders/Receivers</a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747268">2.3<span
-style='color:windowtext;text-decoration:none'>       </span>Senders/Receivers</a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747269">2.4<span
-style='color:windowtext;text-decoration:none'>       </span>Provider</a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747270">2.5<span
-style='color:windowtext;text-decoration:none'>       </span>Phases</a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747271">2.6<span
-style='color:windowtext;text-decoration:none'>       </span>Module</a></span></p> 
-  <p class=MsoToc1><span class=MsoHyperlink><a href="#_Toc96747272">3<span
-style='color:windowtext;text-decoration:none'>      </span>Engine Registry</a></span></p> 
-  <p class=MsoToc1><span class=MsoHyperlink><a href="#_Toc96747273">4<span
-style='color:windowtext;text-decoration:none'>      </span>Context</a></span></p> 
-  <p class=MsoToc1><span class=MsoHyperlink><a href="#_Toc96747274">5<span
-style='color:windowtext;text-decoration:none'>      </span>Deployment</a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747275"><span
-lang=EN>5.1</span><span style='color:windowtext;text-decoration:none'>       </span><span
-lang=EN>Module Deployment:</span></a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747276"><span
-lang=EN>5.2</span><span style='color:windowtext;text-decoration:none'>       </span><span
-lang=EN>Service Deployment</span></a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747277"><span
-lang=EN>5.3</span><span style='color:windowtext;text-decoration:none'>       </span><span
-lang=EN>Scheduler</span></a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747278"><span
-lang=EN>5.4</span><span style='color:windowtext;text-decoration:none'>       </span><span
-lang=EN>Listener</span></a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747279"><span
-lang=EN>5.5</span><span style='color:windowtext;text-decoration:none'>       </span><span
-lang=EN>Repository</span></a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747280"><span
-lang=EN>5.6</span><span style='color:windowtext;text-decoration:none'>       </span><span
-lang=EN>DeploymentEngine</span></a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747281"><span
-lang=EN>5.7</span><span style='color:windowtext;text-decoration:none'>       </span><span
-lang=EN>DeploymentParser</span></a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747282"><span
-lang=EN>5.8</span><span style='color:windowtext;text-decoration:none'>       </span><span
-lang=EN>DeploymentEngine Initialization</span></a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747283"><span
-lang=EN>5.9</span><span style='color:windowtext;text-decoration:none'>       </span><span
-lang=EN>Adding a new web service</span></a></span></p> 
-  <p class=MsoToc1><span class=MsoHyperlink><a href="#_Toc96747284">6<span
-style='color:windowtext;text-decoration:none'>      </span>AXIOM – AXIs Object Model</a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747285">6.1<span
-style='color:windowtext;text-decoration:none'>       </span>Introduction</a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747286">6.2<span
-style='color:windowtext;text-decoration:none'>       </span>High Level Architecture</a></span></p> 
-  <p class=MsoToc1><span class=MsoHyperlink><a href="#_Toc96747287">7<span
-style='color:windowtext;text-decoration:none'>      </span>Handler Frame work and Phase Rules</a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747288">7.1<span
-style='color:windowtext;text-decoration:none'>       </span>Phase</a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747289">7.2<span
-style='color:windowtext;text-decoration:none'>       </span>Handler chain</a></span></p> 
-  <p class=MsoToc1><span class=MsoHyperlink><a href="#_Toc96747290">8<span
-style='color:windowtext;text-decoration:none'>      </span>WSDL Object model</a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747291">8.1<span
-style='color:windowtext;text-decoration:none'>       </span>Overview of the Axis2 WSDL Module</a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747292">8.2<span
-style='color:windowtext;text-decoration:none'>       </span>WOM</a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747293">8.3<span
-style='color:windowtext;text-decoration:none'>       </span>Service Description</a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747294">8.4<span
-style='color:windowtext;text-decoration:none'>       </span>WSDL Processing</a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747295">8.5<span
-style='color:windowtext;text-decoration:none'>       </span>WOM Builder Module</a></span></p> 
-  <p class=MsoToc1><span class=MsoHyperlink><a href="#_Toc96747296">9<span
-style='color:windowtext;text-decoration:none'>      </span>Client API</a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747297">9.1<span
-style='color:windowtext;text-decoration:none'>       </span>sendAsync Invocation</a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747298">9.2<span
-style='color:windowtext;text-decoration:none'>       </span>send Invocation</a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747299">9.3<span
-style='color:windowtext;text-decoration:none'>       </span>sendReceive Invocation</a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747300">9.4<span
-style='color:windowtext;text-decoration:none'>       </span>sendReceiveAsync Invocation</a></span></p> 
-  <p class=MsoToc2><span class=MsoHyperlink><a href="#_Toc96747301"><span
-lang=EN>9.5</span><span style='color:windowtext;text-decoration:none'>       </span>sendReceiveAsync Invocation with One way transport</a></span></p> 
-  <h1><a name="_Toc96747262">1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Introduction</a> </h1> 
-  <p style='text-align:justify'>This document describes the rationale behind the architecture and design of Axis2. The Axis 2 sub components are those that were finalized at the first Axis Summit held in Colombo, Sri Lanka. The document will provide a thorough understanding of the workings of a SOAP engine that is required for a developer before examining the code in detail.    </p> 
-  <h2><a name="_Toc96747263"><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>1.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>Architecture overview</span></a><span style='font-size:12.0pt;
-font-family:&quot;Times New Roman&quot;;font-style:normal'> </span></h2> 
-  <p style='text-autospace:none'>Axis Java 2.0 is a SOAP engine consisting of a number of sub components. Components are identifiable with that of Axis 1.0, but the introduction of some components posses the capability of abstracting functionality to seamlessly support a number of auxiliary specifications. It is also important that the reader understands the inner workings of Axis 2 especially at component level, where dependencies and interactions between components are discussed.</p> 
-  <h2><a name="_Toc96747264"><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>1.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>Axis2 sub components</span></a></h2> 
-  <p style='text-autospace:none'>Axis2 consists of the following high level sub components, and they are described in the next section of this document. </p> 
-  <p style='text-autospace:
-none'><span style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Engine.</p> 
-  <p style='text-autospace:
-none'><span style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Engine Registry.</p> 
-  <p style='text-autospace:
-none'><span style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Message Context.</p> 
-  <p style='text-autospace:
-none'><span style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Deployment.</p> 
-  <p style='text-autospace:
-none'><span style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Axis Object Model (AXIOM).</p> 
-  <p style='text-autospace:
-none'><span style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Handler Framework and Phase rules. </p> 
-  <p style='text-autospace:
-none'><span style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>WSDL Object model.</p> 
-  <p style='text-autospace:
-none'><span style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Client API.</p> 
-  <p class=StyleHeading1TimesNewRoman14ptNotBoldJustified><a name="_Toc96747265">2<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Axis Engine</a></p> 
-  <p style='text-align:justify'>The Execution Model or the Engine in Axis terminology, addresses how the components of Apache Axis2 are executed passing control from one component to another. The Axis Execution Model is independent of specific “<i>Message Exchange Patterns</i>” or <i>“synchronous, Asynchronous behavior”</i>.</p> 
-  <p style='text-align:justify'>The Axis Engine consist two main methods of message interchange, i.e. <i>in-flow</i> and <i>out-flow </i>respectively. In addition a <i>fault-flow</i> is also present for handling processing errors. Each flow encompasses a set of components, namely “<i>Handlers”</i>, “<i>Transport Senders”</i>, <i>“Transport Receivers”</i>, “<i>Receivers”</i>, “<i>Senders</i>” and <i>“Providers”.</i> These components address a specific requirement of when exchanging SOAP messages. </p> 
-  <h2><a name="_Toc96747266"></a><a name="_Toc96482936"><span style='font-size:
-12.0pt;font-family:&quot;Times New Roman&quot;;font-style:normal'>2.1<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>Handlers</span></a></h2> 
-  <p>An extension mechanism for Axis, it represents an <i>“atomic unit of execution logic”</i> which can be configured with deployment. Each handler is executed in the order specified by the configuration at the time of deployment. (Please see Handler framework and Phase rules for an in depth understanding)  </p> 
-  <h2><a name="_Toc96747267"></a><a name="_Toc96482937"><span style='font-size:
-12.0pt;font-family:&quot;Times New Roman&quot;;font-style:normal'>2.2<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>Transport Senders/Receivers</span></a></h2> 
-  <p>The <i>“Transport senders</i>” and “<i>Transport Receivers</i>” as described by their name handle the sending and receiving of a SOAP message via a specific transport protocol. </p> 
-  <h2><a name="_Toc96747268"></a><a name="_Toc96482938"><span style='font-size:
-12.0pt;font-family:&quot;Times New Roman&quot;;font-style:normal'>2.3<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>Senders/Receivers</span></a></h2> 
-  <p>The <i>“Senders”</i> and “<i>Receivers”</i> control the Message Exchange Patterns (MEP) and Synchronous and Asynchronous behavior.</p> 
-  <h2><a name="_Toc96747269"></a><a name="_Toc96482939"><span style='font-size:
-12.0pt;font-family:&quot;Times New Roman&quot;;font-style:normal'>2.4<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>Provider</span></a></h2> 
-  <p>The <i>“Provider”</i> takes care of the real <i>“java implementation” </i>invocation of the Web Service (this does not refer to the java object, but refers to the implementation of the web service in the form of java, that can be a java class, XSLT engine ETC...).    </p> 
-  <p><img width=576 height=120
-src="images/archi001.gif"></p> 
-  <p style='text-align:justify'>The Axis2 Execution Model unaware of the Message Exchange Patterns or the Synchronous or Asynchronous behavior, constructs an inflow or out flow or both, by picking the right components using WSDL or Deployment information and then executing them.  </p> 
-  <p style='text-align:justify'>Implementation of the above logical flow is achieved using an architecture that consists of “Handlers”, “Phases” and Execution Chains.  </p> 
-  <h2><a name="_Toc96747270"></a><a name="_Toc96482940"><span style='font-size:
-12.0pt;font-family:&quot;Times New Roman&quot;;font-style:normal'>2.5<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>Phases</span></a></h2> 
-  <p>The Phases are a mechanism to specify the order of the handlers without knowing the *absolute position* of each handler in the Handler Chain. The Phase is a defined area (place holder for the handlers) in the Execution Chain. </p> 
-  <p>For an example say the handler developer wants (RM), the Handler to run after &quot;Encryption” and before &quot;Transaction&quot;. But as the Handler  can be used in different Web Services it is not necessary to specify the absolute position of the Handler at the Execution Chain. Phases will handle this with the following declaration. </p> 
-  <p><b>&lt;handler name=&quot;RM&quot; ..... before=&quot;Transaction&quot; after=&quot;Encryption&quot; ../&gt;</b></p> 
-  <p>This will ensure that the rules are followed and hence executed appropriately (Note: support for before and after is not implemented in M1)</p> 
-  <p> &nbsp; <br> 
-    As far as the implementation is concerned a Phase is a ordered collection of Handlers that are arranged according to the Phase rules. This can be viewed as an “<i>improved</i>” HandlerChain from Axis 1.x.<br> 
- </p> 
-  <h2><a name="_Toc96747271"></a><a name="_Toc96482941"><span style='font-size:
-12.0pt;font-family:&quot;Times New Roman&quot;;font-style:normal'>2.6<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>Module</span></a></h2> 
-  <p>Module is a logical collection of Handlers that act together and more than just being a “Package”. One such possibility is WSDL “Code Generation” extensions. For an example the users would like to have ability to have Service reference a module and have it enabled as done in J2EE.</p> 
-  <p>&lt;service name=&quot;foo&quot;&gt;</p> 
-  <p>&lt;module ref=&quot;Authentication&quot;/&gt;</p> 
-  <p>&lt;/service&gt;</p> 
-  <p style='text-align:justify'>This would enable authentication for service foo, this too is not in M1.</p> 
-  <p class=StyleHeading1TimesNewRoman14ptNotBoldJustified><a name="_Toc96747272"></a><a
-name="_Toc96482942">3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Engine Registry</a></p> 
-  <p><span lang=EN style='color:black'>The Engine registry is the runtime state of the Axis engine. It contains the real objects like Handlers etc. and by changing them at runtime the user can change the engine configuration. </span></p> 
-  <p><span lang=EN style='color:black'>Deployment provides the implementation of Engine Registry out of the Deployment Descriptors and keeps the Engine Registry in sync with the Deployment configuration repository. In this way the Engine does not have to be aware of the deployment mechanism. The Engine would know that there is an Engine Registry and that it is maintained. </span></p> 
-  <p><span lang=EN style='color:black'>By default the Engine Registry implementation is synchronized, and this is a necessary condition to support hot deployment. It is also possible not to synchronize the Engine but this would mean that hot deployment is disabled. </span></p> 
-  <p class=StyleHeading1TimesNewRoman14ptNotBoldJustified><a name="_Toc96747273"></a><a
-name="_Toc96482943">4<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Context</a></p> 
-  <p>Axis2 has three Contexts, Global, Session and the Message contexts and they are the placeholders for the information in the Axis2. They follow the mediator pattern and all the components interact and share the information with each other through the three contexts. The contexts enable Axis to build on loosely coupled Components. </p> 
-  <p>Most components of the Axis2 are stateless across the two invocations of the component. (The Engine Registry is part of the Global Context.) . The developer should store all states in the in one of the context while all contexts are accessible across the Message context which would be passed through the Handlers in the Execution Chain. </p> 
-  <p class=StyleHeading1TimesNewRoman14ptNotBoldJustified><a name="_Toc96747274">5<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Deployment</a></p> 
-  <p style='text-align:justify'><span lang=EN style='color:black'>There are two types of deployment in Axis2, namely, Service Deployment and Module Deployment. </span></p> 
-  <h2><a name="_Toc96747275"><span lang=EN style='font-size:12.0pt;font-family:
-&quot;Times New Roman&quot;;font-style:normal'>5.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang=EN style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>Module Deployment:</span></a></h2> 
-  <p style='text-align:justify'><span lang=EN style='color:black'>Axis2 provides a J2EE like deployment (an axis archive file has to be created and dropped into the correct directory) for both modules and services. A user can deploy a module or a service as an “.aar” file (module1.aar, service1.aar). Module hot deployment will not be supported in M1, but will be supported in later releases. When the axis engine is started all the .aar files in the WEB-INF/Repository/modules will get deployed. But if someone wants to add a new module or service, a restarting of the engine is required after putting the new .aar file in the above-mentioned folder.</span></p> 
-  <h2><a name="_Toc96747276"><span lang=EN style='font-size:12.0pt;font-family:
-&quot;Times New Roman&quot;;font-style:normal'>5.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang=EN style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>Service Deployment</span></a><span lang=EN style='font-size:
-12.0pt;font-family:&quot;Times New Roman&quot;;font-style:normal'> </span></h2> 
-  <p style='text-align:justify'><span lang=EN style='color:black'>One of the key improvements introduced with Axis2 is the capability to “hot deploy” web services. And in this M1 release only a J2EE like deployment is supported. That is,  a user has to create an axis archive file that includes all the files that he/she wants,  and drop that archive file into the WEB-INF/Repository/services directory. The following three features are associated with service deployment; </span></p> 
-  <p style='text-align:
-justify;'><span lang=EN style='font-family:Symbol;color:black'>·<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang=EN style='color:black'>Hot Deployment </span></p> 
-  <p style='text-align:
-justify;'><span lang=EN style='font-family:Symbol;color:black'>·<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang=EN style='color:black'>Hot Un-Deployment</span><span
-lang=EN style='color:black'> </span></p> 
-  <p style='text-align:
-justify;'><span lang=EN style='font-family:Symbol;color:black'>·<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang=EN style='color:black'>Hot Update</span><span lang=EN
-style='color:black'> </span></p> 
-  <p style='text-align:justify'><span
-lang=EN style='color:black'>Hot Deployment is all about the ability to deploy a new web service while the axis engine is up and running.  </span></p> 
-  <p style='text-align:justify'><span
-lang=EN style='color:black'>Hot Un-Deployment is the ability to remove a web service (services) while the system is running.</span></p> 
-  <p style='text-align:justify'><span
-lang=EN style='color:black'>Hot update is the ability to deploy a new version of an existing web service without restarting the server. It is handled as Un-Deployment followed by a Hot Deployment. </span></p> 
-  <p style='text-align:justify'><span
-lang=EN style='color:black'>The directory structure to which modules and services should deployed to be: </span></p> 
-  <ul type=disc> 
-    <li style='color:black;text-align:justify'><span
-     lang=EN>WEB-INF/ modules</span></li> 
-    <li style='color:black;text-align:justify'><span
-     lang=EN style='color:windowtext'>WEB-INF/services</span></li> 
-  </ul> 
-  <p style='text-align:justify'><b><i><span lang=EN>The required directory structure for a modules archive file is as follows;</span></i></b></p> 
-  <p style='text-align:justify'><span lang=EN>m1.aar</span></p> 
-  <p style='text-align:justify'><span lang=EN>    META-INF/module.xml</span></p> 
-  <p style='text-align:justify'><span lang=EN>    lib/</span></p> 
-  <p style='text-align:justify'><span lang=EN>    classes/</span></p> 
-  <p style='text-align:justify'><b><i><span lang=EN
-style='color:black'>The required directory structure for a service archive file is as follows; </span></i></b></p> 
-  <p style='text-align:justify'><span lang=EN>s1.aar</span></p> 
-  <p style='text-align:justify'><span lang=EN>    META-INF/service.xml</span></p> 
-  <p style='text-align:justify'><span lang=EN>    lib/</span></p> 
-  <p style='text-align:justify'><span lang=EN>    classes/</span></p> 
-  <p style='text-align:justify'><b><i><span lang=EN
-style='color:black'>The structure of module.xml file is  as follows; </span></i></b></p> 
-  <p style='text-align:justify;line-height:normal'><b><i><span
-lang=EN style='color:black'><img width=347 height=127
-src="images/archi002.gif"></span></i></b></p> 
-  <p style='text-align:justify;line-height:normal'><b><i><span
-lang=EN style='color:black'>The structure of service.xml file is as follows; </span></i></b></p> 
-  <p style='text-align:justify;line-height:normal'><b><i><span lang=EN style='color:black'><img width=680
-height=195 src="images/archi003.gif"></span></i></b></p> 
-  <p style='text-align:justify;line-height:normal'><span lang=EN
-style='font-size:9.5pt;font-family:Verdana;color:black'>&nbsp;</span><b><i><span
-lang=EN style='color:black'>The architecture of hot deployment consists of the following components; </span></i></b></p> 
-  <p style='text-align:justify;line-height:normal'><span lang=EN
-style='font-size:9.5pt;font-family:Verdana;color:black'><img border=0
-width=423 height=304 src="images/archi004.jpg"></span></p> 
-  <p style='text-align:
-justify;'><span lang=EN style='color:black'>1.<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
-lang=EN style='color:black'>The Scheduler periodically invokes the Listener to check for updates</span></p> 
-  <p style='text-align:
-justify;'><span lang=EN style='color:black'>2.<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
-lang=EN style='color:black'>If the Listener finds an update, it passes that information to the Repository </span></p> 
-  <p style='text-align:
-justify;'><span lang=EN style='color:black'>3.<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
-lang=EN style='color:black'>The Repository hands over the document to the Deployment Parser </span></p> 
-  <p style='text-align:
-justify;'><span lang=EN style='color:black'>4.<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
-lang=EN style='color:black'>Having parsed the document, the Deployment Parser returns the corresponding object</span></p> 
-  <p style='text-align:
-justify;'><span lang=EN style='color:black'>5.<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
-lang=EN style='color:black'>The Repository updates the toDeploy and toUn-Deploy list </span></p> 
-  <p style='text-align:
-justify;'><span lang=EN style='color:black'>6.<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
-lang=EN style='color:black'>The Repository informs the Listener to update the system </span></p> 
-  <p style='text-align:
-justify;'><span lang=EN style='color:black'>7.<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
-lang=EN style='color:black'>The Listener informs the Deployment Engine to do the update (both deploy and un-deploy) </span></p> 
-  <h2><a name="_Toc96747277"><span lang=EN style='font-size:12.0pt;font-family:
-&quot;Times New Roman&quot;;font-style:normal'>5.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang=EN style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>Scheduler</span></a></h2> 
-  <p style='text-align:justify'><span lang=EN>This component itself is a thread that performs a specific task forever in a given time interval. In this case it periodically asks the Listener to listen to the file system events. Here the file system is not the entire file system, it is only the sub directories of WEB_INF/Repository where the modules and services reside.</span></p> 
-  <h2><a name="_Toc96747278"><span lang=EN style='font-size:12.0pt;font-family:
-&quot;Times New Roman&quot;;font-style:normal'>5.4<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang=EN style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>Listener</span></a></h2> 
-  <p style='text-align:justify'><a
-name=head-37ea46b5942beaeb21bb4e06a14e4f7232d></a><span lang=EN>As mentioned above the Listener listens for file system events. In order to do this it checks both the modules and services directories. Then it lists all the archive files in those two directories and compares those against the repository to check if a new service(s) has been added or if any service(s) has been modified. Then it informs DeploymentEngine to execute the required methods. </span></p> 
-  <h2><a name="_Toc96747279"><span lang=EN style='font-size:12.0pt;font-family:
-&quot;Times New Roman&quot;;font-style:normal'>5.5<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang=EN style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>Repository</span></a><span lang=EN style='font-size:12.0pt;
-font-family:&quot;Times New Roman&quot;;font-style:normal'> </span></h2> 
-  <p style='text-align:justify'><span lang=EN>The Repository stores data about modules and services that have already been deployed. At the initialization process this loads data about all the modules and services into the module and service directories. It then deploys all those loaded modules and services. The repository stores the name of the archive file and its’ last modified date. It is possible to perform the following operations to the Repository; </span></p> 
-  <ul type=disc> 
-    <li style='text-align:justify'><span lang=EN>Add a new entry to the Repository </span></li> 
-    <li style='text-align:justify'><span lang=EN>Remove an entry from the Repository </span></li> 
-    <li style='text-align:justify'><span lang=EN>Modify an entry in the Repository. </span></li> 
-  </ul> 
-  <p style='text-align:justify;line-height:normal'><span lang=EN>These operations correspond to Hot Deployment, Hot Un Deployment and Hot Update. </span></p> 
-  <p style='text-align:justify;line-height:normal'><span lang=EN>In the add operation it checks whether the entry which is going to be added already exists in the Repository. If so it ignores the operation else it will add the entry to the Repository and add an entry to a list maintained in the DeploymentEngine (toDeploy list). </span></p> 
-  <p style='text-align:justify;line-height:normal'><span lang=EN>In the remove operation it directly removes the entry from the repository and adds an entry to a list maintained in the DeploymentEngine (toUnDeploy list) </span></p> 
-  <p style='text-align:justify;line-height:normal'><span lang=EN>In the modify operation it adds entries to both lists in the DeploymentEngine. </span></p> 
-  <h2><a name="_Toc96747280"><span lang=EN style='font-size:12.0pt;font-family:
-&quot;Times New Roman&quot;;font-style:normal'>5.6<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang=EN style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>DeploymentEngine</span></a><a
-name=head-c22edd7a305a0a97447ce349e4733cfa6d5></a></h2> 
-  <p style='text-align:justify'><span lang=EN>The DeploymentEngine is the main component of the deployment sub component. It interacts with the axis engine and the engine registry by updating the engine registry when a new service is added or an existing service is removed. The deployment procedure is as follows;</span></p> 
-  <ul type=disc> 
-    <li style='text-align:justify'><span lang=EN>Check the toUnDeploy list. If it is not empty then remove the corresponding web service from the engine registry.</span></li> 
-    <li style='text-align:justify'><span lang=EN>Check the toDeploy list. If it is not empty then add the corresponding web service to the engine registry.</span></li> 
-    <li style='text-align:justify'><span lang=EN>For each and every item in the list that is passed to the DeploymentParser, create a corresponding axis service object and add it to the engine registry. </span></li> 
-  </ul> 
-  <h2><a name="_Toc96747281"><span lang=EN style='font-size:12.0pt;font-family:
-&quot;Times New Roman&quot;;font-style:normal'>5.7<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang=EN style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>DeploymentParser</span></a></h2> 
-  <p style='text-align:justify'><span lang=EN>The following three types of xml document are parsed by the DeploymentParser. Its’ underlying parser is StAX.</span></p> 
-  <ul type=disc> 
-    <li style='text-align:justify'><span lang=EN>server.xml </span></li> 
-    <li style='text-align:justify'><span lang=EN>service.xml </span></li> 
-    <li style='text-align:justify'><span lang=EN>module.xml </span></li> 
-  </ul> 
-  <p style='text-align:justify'><span lang=EN>Parsing of server.xml is done as follows;</span></p> 
-  <p style='text-align:justify'><span lang=EN>The DeploymentEngine will create an AxisGlobal object and pass that to the DeploymentParser. Then the DeploymentParser will modify the object according to server.xml.</span></p> 
-  <p style='text-align:justify'><span lang=EN>Parsing of service.xml is done as follows;</span></p> 
-  <p style='text-align:justify'><span lang=EN>The DeploymentEngine will create an AxisService object and pass that to the DeploymentParser. Then it will be updated according to service.xml.</span></p> 
-  <p style='text-align:justify'><span lang=EN>Parsing module.xml is the same as above except for it been passed an AxisModule object instead of an AxisService object. </span></p> 
-  <h2><a name="_Toc96747282"><span lang=EN style='font-size:12.0pt;font-family:
-&quot;Times New Roman&quot;;font-style:normal'>5.8<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang=EN style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>DeploymentEngine Initialization</span></a></h2> 
-  <p style='text-align:justify'><span lang=EN>The Initialization process of the DeploymentEngine consists of the following steps:</span></p> 
-  <ul type=disc> 
-    <li style='text-align:justify'><span lang=EN>Checks whether server.xml is located in the repository directory. If it exists, then it is loaded and parsed. If not then a default server.xml is created and placed in the repository.</span></li> 
-    <li style='text-align:justify'><span lang=EN>Checks whether modules and services directories are available under the repository. If not they will be created.</span></li> 
-    <li style='text-align:justify'><span lang=EN>After server.xml is parsed, an AxisGlobal object is created.</span></li> 
-    <li style='text-align:justify'><span lang=EN>Load all the axis archive files to both the modules and services directories, parse them and create AxisService and AxisModule objects.</span></li> 
-    <li style='text-align:justify'><span lang=EN>If server.xml has references to modules, then it checks whether those modules are valid, (it is valid if it is in the modules directory),If it is not valid an exception is thrown.</span></li> 
-    <ul type=circle> 
-      <li style='text-align:justify'><span lang=EN>If those modules are valid, the GlobalChains are built by the PhaseResolver (GlobalInChain , GlobalOutChain , and GlobalFaultChain) using phase rules.</span></li> 
-    </ul> 
-    <li style='text-align:justify'><span lang=EN>All the available services and modules will be added to the engineRegistry.</span></li> 
-    <li style='text-align:justify'><span lang=EN>The engineRegistry is returned.</span></li> 
-  </ul> 
-  <h2><a name="_Toc96747283"><span lang=EN style='font-size:12.0pt;font-family:
-&quot;Times New Roman&quot;;font-style:normal'>5.9<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang=EN style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>Adding a new web service</span></a></h2> 
-  <p style='text-align:justify;'><span lang=EN>Adding a new web service consists of the following steps;</span></p> 
-  <p style='text-align:justify;'><span lang=EN>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang=EN>Unzip the .aar file and take its’ service.xml and parse it using the DeploymentParser. </span></p> 
-  <p style='text-align:justify;'><span lang=EN>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang=EN>While processing the service.xml an AxisService object gets created and that object will be updated.</span></p> 
-  <p style='text-align:justify;'><span lang=EN>3.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang=EN>The created object is deployed to the DeploymentEngine.</span></p> 
-  <p style='text-align:justify;'><span lang=EN>4.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang=EN>Using the DeploymentEngine the service classLoader and the provider class will be added to the AxisService object.</span></p> 
-  <p style='text-align:justify;'><span lang=EN>5.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang=EN>The Handler chain will be built by resolving the phase rules.<br> 
-    (It should be noted here that the Handler Chain consists of the HandlerMetadata which has  all the phase rules data  and the actual executable handler )</span></p> 
-  <p style='text-align:justify;'><span lang=EN>6.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang=EN>The created object will be added to the EngineRegistry. </span></p> 
-  <br clear=all
-style='page-break-before:always'> 
-  <p class=StyleHeading1TimesNewRoman14ptNotBoldJustified><a name="_Toc96747284">6<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>AXIOM – AXIs Object Model</a></p> 
-  <h2><a name="_Toc96747285"><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>6.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>Introduction</span></a></h2> 
-  <p style='text-align:justify'>AXIOM (also know as OM –<b>O</b>bject <b>M</b>odel) is used to refer to the new and efficient XML info set model that has been developed for Axis2. Most of the XML object models used today are based on two major methods, namely;</p> 
-  <ol start=1 type=1> 
-    <li style='text-align:justify'>DOM based – where the whole document is parsed and held in the memory</li> 
-    <li style='text-align:justify'>Event based (SAX like) – where the whole document is parsed at once, but no model is created in the memory and where the user has to catch the relevant events, which can not be stopped or reversed.</li> 
-  </ol> 
-  <p style='text-align:justify'>AXIOM gets the best from both these options and builds a better object model on top of a pull parsing methodology. It controls the phase of the parsing and builds a memory model if required from the information that’s being parsed so far. That means at a given instance, AXIOM does not have a fully built object model with the rest of the information still in the stream.</p> 
-  <p style='text-align:justify'>The most important feature of this OM is that it is lightweight and is differed built based on <a
-href="http://www.jcp.org/en/jsr/detail?id=173">StAX (JSR 173)</a>, the streaming pull parser. </p> 
-  <p style='text-align:justify'>The object model can be manipulated like any other object model (Such as JDOM), but underneath the objects will be created only when they are absolutely required. Hence this model is much more efficient.</p> 
-  <p style='text-align:justify'>AXIOM interacts with the outside world using the StAX API, that means it serializes and de-serializes using the StAX writer and StAX reader interfaces.</p> 
-  <p style='text-align:justify'><span style='font-size:9.0pt'><img
-border=0 width=552 height=217 src="images/archi005.jpg"></span></p> 
-  <p style='text-align:justify'>Since most of the data binding tools support SAX based interfaces, AXIOM comes with an adapter to be used between StAX and SAX.</p> 
-  <h2><a name="_Toc96747286"></a><a name="_Toc94950521"><span style='font-size:
-12.0pt;font-family:&quot;Times New Roman&quot;;font-style:normal'>6.2<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>High Level Architecture</span></a></h2> 
-  <table cellpadding=0 cellspacing=0 align=left> 
-    <tr> 
-      <td width=64 height=0 class="Normal"></td> 
-    </tr> 
-    <tr> 
-      <td class="Normal"></td> 
-      <td class="Normal"><img width=490 height=282 src="images/archi006.jpg"></td> 
-    </tr> 
-  </table> 
-  <br clear=ALL> 
-  <p></p> 
-  <p style='text-align:justify'>AXIOM “sees” the XML input stream through the StAX stream reader, which is being wrapped by a builder interface provided. Current implementation has two builders, namely; </p> 
-  <ul type=disc> 
-    <li style='text-align:justify'>OM Builder – This will build a full XML info-set supported general XML model. But the current implementation lacks the support for Processing Instructions and DTD’s.</li> 
-    <li style='text-align:justify'>SOAP Builder – This will build a SOAP XML specific object model. The Object model will contain SOAP-Specific objects like the SOAPEnvelope, SOAPHeader etc. </li> 
-  </ul> 
-  <p style='text-align:justify'>Each of these builders has the support for differed building and caching. User has the option of building the memory model or not. He can control this via setting the cache on or off. </p> 
-  <p style='text-align:justify'>(Since the object model is pull based, the StAX API is tightly bound to OM. To work with OM a StAX compliant parser and the API <b><i>must</i></b> be present in the classpath. )</p> 
-  <p>The OM API works on top of the builder interface and provides for users, be they an engine developer, handler developer or anyone else. This will provide the highest flexibility as one can change builders and object model implementations completely independent to one another.</p> 
-  <p style='text-align:justify'>The OM has a defined set of APIs and one can implement his/her own memory model based on that. The current Axis2, comes with a linked list based implementation of those set of APIs. (There was an effort to build another OM on a table based model. It’s now on hold.) </p> 
-  <table cellpadding=0 cellspacing=0> 
-    <tr> 
-      <td width=72 height=0 class="Normal"></td> 
-    </tr> 
-    <tr> 
-      <td class="Normal"></td> 
-      <td class="Normal"><img width=420 height=246 src="images/archi007.jpg"></td> 
-    </tr> 
-  </table> 
-  <br clear=ALL> 
-  Therefore one can find a factory to create OM objects, which will help to switch between different implementations of the object model. 
-  <p></p> 
-  <p class=StyleHeading1TimesNewRoman14ptNotBoldJustified><a name="_Toc96747287">7<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Handler Frame work and Phase Rules</a> </p> 
-  <h2><a name="_Toc96747288"><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>7.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>Phase</span></a></h2> 
-  <p style='text-align:justify'>Phase is a logically ordered collection of handlers. The handler inside a phase is ordered by phase rules. By using phase rules a user can specify where the handler should be logically placed. Some of the valid attributes associated with phase rules are listed in the following table :</p> 
-  <div align=center> 
-    <table class=MsoTableProfessional border=1 cellspacing=0 cellpadding=0> 
-      <tr> 
-        <td width=139 valign=top bgcolor="black" class="Normal"> <p style='text-align:justify'><b>Attribute Name</b></p></td> 
-        <td width=348 valign=top bgcolor="black" class="Normal"> <p style='text-align:justify'><b>Value</b></p></td> 
-      </tr> 
-      <tr> 
-        <td width=139 valign=top class="Normal"> <p style='text-align:justify'>Before</p></td> 
-        <td width=348 valign=top class="Normal"> <p style='text-align:justify'>Can be either a handler or a phase *</p></td> 
-      </tr> 
-      <tr> 
-        <td width=139 valign=top class="Normal"> <p style='text-align:justify'>After</p></td> 
-        <td width=348 valign=top class="Normal"> <p style='text-align:justify'>Can be either a handler or a phase  *</p></td> 
-      </tr> 
-      <tr> 
-        <td width=139 valign=top class="Normal"> <p style='text-align:justify'>Phase </p></td> 
-        <td width=348 valign=top class="Normal"> <p style='text-align:justify'>Valid phase name **</p></td> 
-      </tr> 
-      <tr> 
-        <td width=139 valign=top class="Normal"> <p style='text-align:justify'>PhaseFirst </p></td> 
-        <td width=348 valign=top class="Normal"> <p style='text-align:justify'>Boolean ***</p></td> 
-      </tr> 
-      <tr> 
-        <td width=139 valign=top class="Normal"> <p style='text-align:justify'>PhaseLast</p></td> 
-        <td width=348 valign=top class="Normal"> <p style='text-align:justify'>Boolean ***</p></td> 
-      </tr> 
-    </table> 
-  </div> 
-  <p style='text-align:justify'>* - If the “before” or “after” attribute of a handler is another handler, then the referenced handler must belong to the same phase.  If the before or after attribute is a phase, there cannot be a phase attribute of that handler. If one of before or after is a handler other can not be a phase. </p> 
-  <p style='text-align:justify'>** - valid phase is a phase that is listed in the server.xml. If the phase name is not there then the phase name is not a valid phase.</p> 
-  <p style='text-align:justify'>*** - If both the PhaseFirst and PhaseLast attributes of some handler are true, then the case phase only has one handler. </p> 
-  <p style='text-align:justify'>N:B : If the user is going to use handlers and attributes as before,  then there is no need to use PhaseFirst and PhaseLast  because those are ignored by the rule engine.</p> 
-  <h2><a name="_Toc96747289"><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>7.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>Handler chain</span></a></h2> 
-  <p style='text-align:justify'>The Handler chain is a collection of phases and handlers. The order of phases in the chain is described in server.xml. One service can have three handler chains;</p> 
-  <ol start=1 type=1> 
-    <li style='text-align:justify'>Inflow</li> 
-    <li style='text-align:justify'>Outflow</li> 
-    <li style='text-align:justify'>Faultflow.</li> 
-  </ol> 
-  <p style='text-align:justify'>For each and every handler chain, handlers can come in different ways as follows:</p> 
-  <ol start=3 type=1> 
-    <ul type=disc> 
-      <li style='text-align:justify'>Corresponding flow of service.xml</li> 
-      <li style='text-align:justify'>If there are any references to modules then the handlers from correspondence flow.</li> 
-      <li style='text-align:justify'>Operation specific handlers corresponding flow</li> 
-    </ul> 
-  </ol> 
-  <h1><a name="_Toc96747290">8<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span class=StyleHeading1TimesNewRoman14ptNotBoldJustifiedChar><span
-style='font-size:14.0pt'>WSDL Object model</span></span></a></h1> 
-  <p>WSDL Module of Axis2 was architected with both WSDL version 1.1 and version 2.0 Component model in mind. The entire architecture of the aforesaid Module is built around an Object Model called WSDL Object Model which will be referred to as WOM here fourth. </p> 
-  <h2><a name="_Toc96747291"><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>8.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>Overview of the Axis2 WSDL Module</span></a><span
-style='font-size:12.0pt;font-family:"Times New Roman";font-style:normal'> </span></h2> 
-  <p>WSDL Module can be mainly broken down into two major functionalities: </p> 
-  <ul type=disc> 
-    <li>Service Description Functionality. </li> 
-    <li>WSDL Processing functionality(e.g. WSDL2Java, WSDL24J, Java2WSDL) </li> 
-  </ul> 
-  <p>Service Description will provide an API to the Axis2 Engine that will expose the sufficient statistics about the web service that has been described in the WSDL file. WSDL Processing basically involves WSDL2Java, WSDL24J, and Java2WSDL. Following sections will give a further overview of each of the above functionalities. <br> 
-    <br> 
-    <img border=0 width=579 height=339
-src="images/archi008.gif"></p> 
-  <h2><a name="_Toc96747292"><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>8.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>WOM</span></a></h2> 
-  <p>WOM is engineered based on WSDL 2.0 component model, but it does not restrict its functionality to prior WSDL versions. Rather both WSDL 1.1 and WSDL 2.0 versions will be supported on top of the WOM. WOM consists of components such as Description, Interface, Service, etc, as shown in the following diagram. All those Components extend from one super interface called org.apache.wsdl.Component which will prove to be very useful in the implementation of the Service Desc. <br> 
-    <br> 
-  </p> 
-  <p><img border=0 width=703 height=577
-src="images/archi009.jpg"><br> 
-    <br> 
-    WOM is a runtime representation of the WSDL file and it will provide the web service description functionality. As the following diagram illustrate the WOM will be the common Object model that will be used in bothWSDL2Java and Java2WSDL functionality. This intermediary object model ease the discussion since the WSDL processing can be broken down into the following four sub modules. </p> 
-  <ul type=disc> 
-    <li>WOM Builder. </li> 
-    <li>WSDL Emitter. </li> 
-    <li>Code Generator. </li> 
-    <li>Code Parser. </li> 
-  </ul> 
-  <h2><a name="_Toc96747293"><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>8.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>Service Description</span></a></h2> 
-  <p>Service Description (also known as Service Desc) is an API by which the necessary statistics will be made available to the Axis2 Engine at the runtime. </p> 
-  <p>The functionality of the WOM is very much similar to the functionality expected from that of the Service Desc. Both behave as runtime description of the web service. Difference is that WOM is a clean component model that is not dependent on Axis2 or any other SOAP Engine and Service Desc is the Axis2 specific description of the web service. Thus it was necessary that the Axis Service Desc to extend the WOM to incorporate the additional Axis specific deployment information such as handlers, modules, providers, etc. The actual implementation of such extensions has been achieved using the extension capability provided by the WOM itself. </p> 
-  <p>As mentioned above all the Components in the WOM extend from a super interface org.apache.wsdl.Component. Service Desc makes use of the functionality provided by org.apache.wsdl.Component to interface the WOM to behave as a Service Desc. org.apache.wsdl.Component has the following class diagram. </p> 
-  <p><img border=0 width=487
-height=121 src="images/archi010.jpg"><br> 
-    <img border=0 width=32 height=32 src="images/archi011.gif"></p> 
-  <p>As the diagram illustrate the Component class provides the functionality of storing properties. Since all the WSDL Components extend from this class directly or indirectly, this functionality get inherited to all the WSDL Components. The Service Desc makes use of this functionality to store Axis2 specific properties using the WOM. In that sense the Axis2 Service Desc is a wrapper to the WOM. </p> 
-  <p>Following is the Class diagram of the top level component of the description Component <span style='font-family:
-&rdquo;Courier&rdquo;'>org.apache.axis.description.impl.AxisService.</span> <br> 
-    <br> 
-    <img border=0 width=292 height=391
-src="images/archi012.jpg"><br> 
-    <br> 
-    org.apache.axis.description.impl.AxisService extends from the org.apache.wsdl.WSDLService and thus inherits the functionality of the org.apache.wsdl.WSDLService. The Axis2 specific properties like provider, ServiceClass are stored using the org.apache.wsdl.Component class which org.apache.wsdl.WSDLService extends from. The deployment Module will pick up the deployed service and it will build the Service Desc and deploy in the Engine Registry. There will be an underlying WOM for each Service Desc deployed in the Engine Registry. <br> 
-    <img border=0 width=576 height=350
-src="images/archi013.gif"><br> 
-    <img border=0 width=32 height=32 src="images/archi011.gif"></p> 
-  <h2><a name="_Toc96747294"><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>8.4<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>WSDL Processing</span></a></h2> 
-  <p>WSDL Processing can be identified as of operations performed on or performed using the WOM. Such definition is made possible because of the intermediary object model i.e. WOM always acts as an intermediary state. For example if WSDL2Java is considered: </p> 
-  <p>WSDL2Java = WSDL--&gt;WOM (WSDL2WOMBuilder), WOM--&gt;Java (Code Generation Module). </p> 
-  <p>The point to note is that the above allows the WSDL--&gt;WOM (WSDL2WOMBuilder) to be identified as an independent module, not tied to the WSDL2Java operation. There are four such modules identified in the WSDL Processing Module of Axis2. </p> 
-  <ul type=disc> 
-    <li>WOM Builder. </li> 
-    <li>WSDL Emitter. </li> 
-    <li>Code Generator. </li> 
-    <li>Code Parser. </li> 
-  </ul> 
-  <h2><a name="_Toc96747295"><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>8.5<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>WOM Builder Module</span></a></h2> 
-  <p style='text-align:justify'>WOM has an external building mechanism and it gets built by an external builder. Since WOM is both WSDL 1.1 and WSDL 2.0 compliant it can get built from an either of the WSDL versions. Currently WSDL1ToWOMBuilder uses the WSDL4J for the WSDL Parsing. In that implementation the WOM gets populated from a WSDL4J object structure. Following is the class diagram of the WOM build mechanism. <br> 
-    <br> 
-    <img border=0 width=633 height=240
-src="images/archi014.jpg"><br> 
-    <br> 
-    The WSDL2ToWOMBuilder is to be implemented and the WSDL24J is going to be part of this implementation</p> 
-  <p class=StyleHeading1TimesNewRoman14ptNotBoldJustified><a name="_Toc96747296">9<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Client API</a></p> 
-  <p style='text-align:justify'>Types of Client programming models that Axis2 support: </p> 
-  <ol start=1 type=1> 
-    <li style='text-align:justify'>Synchronous Invocation</li> 
-    <li style='text-align:justify'>Asynchronous Invocation using callback, with two way transport</li> 
-    <li style='text-align:justify'>Asynchronous Invocation using callbacks, transport is also one way (Addressing information is required.)  </li> 
-  </ol> 
-  <p style='text-align:justify'>The following diagram describes all the invocations between sub components in the client side.</p> 
-  <p style='text-align:justify'><img border=0 width=576
-height=315 src="images/archi015.jpg">  </p> 
-  <p style='text-align:justify'><b><i>Call Class consist of following methods (Call API)</i></b></p> 
-  <p style='text-align:justify'><img border=0 width=582
-height=200 src="images/archi016.jpg"></p> 
-  <pre style='text-align:justify'><b><i><span lang=EN>Callback Interface</span></i></b></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>&nbsp;</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN><img border=0 width=499 height=56
-src="images/archi017.jpg"></span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>&nbsp;</span></pre> 
-  <pre
-style='text-align:justify'><b><i><span lang=EN style='font-size:12.0pt;
-font-family:&quot;Times New Roman&quot;'>AsyncResult </span></i></b></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>&nbsp;</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN><img border=0 width=430 height=48
-src="images/archi018.jpg"></span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>&nbsp;</span></pre> 
-  <pre
-style='text-align:justify'><b><i><span lang=EN>Correlator</span></i></b></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>&nbsp;</span></pre> 
-  <p style='text-align:justify'><img border=0 width=539
-height=73 src="images/archi019.jpg"></p> 
-  <h2><a name="_Toc96747297"><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>9.1<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>sendAsync Invocation</span></a><span style='font-size:12.0pt;
-font-family:&quot;Times New Roman&quot;;font-style:normal'> </span></h2> 
-  <p style='text-align:justify'>This invocation is similar to fire and forget where a request is sent and an acknowledgement is not expected. An invocation will consist of the following steps  :   </p> 
-  <p style='text-align:justify'><img border=0 width=318
-height=53 src="images/archi020.jpg"></p> 
-  <p style='text-align:justify'><i><span lang=EN>Code Snippet: </span></i></p> 
-  <pre style='text-align:justify'><span lang=EN><img border=0 width=318
-height=59 src="images/archi021.jpg"></span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>&nbsp;</span></pre> 
-  <pre
-style='text-align:justify'><i><span lang=EN style='font-size:12.0pt;font-family:
-&quot;Times New Roman&quot;'>Sequence diagram</span></i></pre> 
-  <pre style='text-align:
-justify'><span lang=EN>&nbsp;</span></pre> 
-  <pre style='text-align:justify'><span
-lang=EN><img border=0 width=434 height=147
-src="images/archi022.jpg"></span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>&nbsp;</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>&nbsp;</span></pre> 
-  <h2><a name="_Toc96747298"><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>9.2<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>send Invocation</span></a></h2> 
-  <p style='text-align:justify'><span lang=EN>The service invocation is a void invocation. There is no return value, but there is a wait for an acknowledgment or a SOAP Fault, It consists of the following steps :</span></p> 
-  <pre style='text-align:justify'><span lang=EN>a -&gt; call.send(SOAPEnvelope)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>b -&gt; engine.send( ..)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>c -&gt; Send the SOAP message</span></pre> 
-  <p style='text-align:justify'><i><span lang=EN>Code Snippet: </span></i></p> 
-  <pre style='text-align:justify'><span lang=EN>call.setTargetURL(URL)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>call.setAction(String)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>call.send(SOAPEnvelope)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>&nbsp;</span></pre> 
-  <p style='text-align:justify'><i><span lang=EN>Sequence diagram</span></i></p> 
-  <p style='text-align:justify'><img border=0 width=416
-height=149 src="images/archi023.jpg"></p> 
-  <h2><a name="_Toc96747299"><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>9.3<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>sendReceive Invocation</span></a></h2> 
-  <p style='text-align:justify'><span lang=EN>The service method has a response and the communication happens synchronously using a bi-directional protocol. The Client hangs until the response (or fault) is returned. </span></p> 
-  <pre style='text-align:justify'><span lang=EN>a -&gt; call.sendReceive(SOAPEnvelope)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>b- &gt; engine.send (..)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>c -&gt; Send the SOAP message</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>d -&gt; Receive the response over the synchronous transport</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>w -&gt; ProviderX will be called as the last step in engine.receive(..) </span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>e -&gt; provider returns       </span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>f -&gt; Call hand over the response to the client</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>&nbsp;</span></pre> 
-  <p style='text-align:justify'><i><span lang=EN>Code Snippet: </span></i></p> 
-  <pre style='text-align:justify'><span lang=EN>call.setTargetURL(URL)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>call.setAction(String)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>SOAPEnvelope env=call.sendReceive(SOAPEnvelope)</span></pre> 
-  <p><i><span lang=EN>Sequence diagram</span></i></p> 
-  <p><span lang=EN><img border=0 width=439 height=199
-src="images/archi024.jpg"></span></p> 
-  <h2><a name="_Toc96747300"><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>9.4<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>sendReceiveAsync Invocation</span></a></h2> 
-  <p style='text-align:justify'><span lang=EN>The service method has a response and the communication happens synchronously using a bi-directional protocol. Client DOES NOT hangs until the response (or fault) is returned. The Client uses a callback mechanism to retrieve the response. The Call API uses threads from a thread pool for each invocation. </span></p> 
-  <pre style='text-align:justify'><span lang=EN>a -&gt; call.sendReceiveAsync (SOAPEnvelope, callbackObj)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>p -&gt; correlator.addCorrelationInfor(msgID,allbackObjRef)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>b- &gt; engine.send (..)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>c -&gt; Send the SOAP message</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>d -&gt; Receive the response over the synchronous transport</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>w -&gt; ProviderX will be called as the last step in engine.receive(..) </span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>q -&gt; correlator.getCorrelationInfo(msgID)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>g -&gt; callbackObj.onComplete()</span></pre> 
-  <p style='text-align:justify'><i><span lang=EN>Code Snippet: </span></i></p> 
-  <pre style='text-align:justify'><span lang=EN>call.setTargetURL(URL)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>call.setAction(String)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>call.setListenerTransport(“http”, true)                           </span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>call.sendReceiveAsync (SOAPEnvelope, Callback)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>&nbsp;</span></pre> 
-  <pre
-style='text-align:justify'><i><span lang=EN style='font-size:12.0pt;font-family:
-&quot;Times New Roman&quot;'>Sequence diagram  </span></i></pre> 
-  <pre style='text-align:
-justify'><span lang=EN>&nbsp;</span></pre> 
-  <pre style='text-align:justify'><span
-lang=EN><img border=0 width=648 height=225
-src="images/archi025.jpg"></span></pre> 
-  <h2><a name="_Toc96747301"></a><a
-name=head-6b6f0ac54f2e98ce920bf68485a695e1d2b></a><span lang=EN
-style='font-size:12.0pt;font-family:"Times New Roman";font-style:normal'>9.5<span
-style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style='font-size:12.0pt;font-family:&quot;Times New Roman&quot;;
-font-style:normal'>sendReceiveAsync Invocation with One way transport</span></h2> 
-  <p style='text-align:justify'><span lang=EN>The service method has a response and the communication happens asynchronously using a uni-directional protocol. The Client DOES NOT hang until the response (or fault) is returned. The Client uses a callback mechanism to retrieve the response. The Call API uses threads from a thread pool for each invocation. </span></p> 
-  <pre style='text-align:justify'><span lang=EN>a -&gt; call.sendReceiveAsync (SOAPEnvelope, callbackObj)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>p -&gt; correlator.addCorrelationInfor(msgID,allbackObjRef)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>b- &gt; engine.send (..)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>c -&gt; Send the SOAP message</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>r -&gt; Receive the response by the listener</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>s -&gt; engine.receive(..)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>w -&gt; ProviderX will be called as the last step in engine.receive(..) </span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>q -&gt; correlator.getCorrelationInfo(msgID)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>g -&gt; callbackObj.onComplete()</span></pre> 
-  <p style='text-align:justify'><i><span lang=EN>Code Snippet: </span></i></p> 
-  <pre style='text-align:justify'><span lang=EN>call.setTargetURL(URL)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>call.setAction(String)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>call.setListenerTransport(“http”, false)</span></pre> 
-  <pre
-style='text-align:justify'><span lang=EN>call.sendReceiveAsync(SOAPEnvelope, Callback)</span></pre> 
-  <p style='text-align:justify'><i><span lang=EN>Sequence diagram </span></i></p> 
-  <p style='text-align:justify'><img border=0 width=648
-height=234 src="images/archi026.jpg"></p> 
-</div> 
-</body>
-</html>
+<body>
+<p align=center><strong>Axis Java 2.0 Architecture Guide </strong></p>
+<p align=center><strong>for the Milestone Release 1.0</strong></p>
+<p><strong>Table of Contents</strong></p>
+<p><a href="#_Toc96747262" DESIGNTIMEURL="#_Toc96747262">1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Introduction</a></p>
+<p><a href="#_Toc96747263" DESIGNTIMEURL="#_Toc96747263">1.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Architecture overview</a></p>
+<p><a href="#_Toc96747264" DESIGNTIMEURL="#_Toc96747264">1.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Axis2 sub components</a></p>
+<p><a href="#_Toc96747265" DESIGNTIMEURL="#_Toc96747265">2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Axis Engine</a></p>
+<p><a href="#_Toc96747266" DESIGNTIMEURL="#_Toc96747266">2.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Handlers</a></p>
+<p><a href="#_Toc96747267" DESIGNTIMEURL="#_Toc96747267">2.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Transport Senders/Receivers</a></p>
+<p><a href="#_Toc96747268" DESIGNTIMEURL="#_Toc96747268">2.3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Senders/Receivers</a></p>
+<p><a href="#_Toc96747269" DESIGNTIMEURL="#_Toc96747269">2.4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Provider</a></p>
+<p><a href="#_Toc96747270" DESIGNTIMEURL="#_Toc96747270">2.5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Phases</a></p>
+<p><a href="#_Toc96747271" DESIGNTIMEURL="#_Toc96747271">2.6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Module</a></p>
+<p><a href="#_Toc96747272" DESIGNTIMEURL="#_Toc96747272">3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Engine Registry</a></p>
+<p><a href="#_Toc96747273" DESIGNTIMEURL="#_Toc96747273">4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context</a></p>
+<p><a href="#_Toc96747274" DESIGNTIMEURL="#_Toc96747274">5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Deployment</a></p>
+<p><a href="#_Toc96747275" DESIGNTIMEURL="#_Toc96747275">5.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Module Deployment:</a></p>
+<p><a href="#_Toc96747276" DESIGNTIMEURL="#_Toc96747276">5.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Service Deployment</a></p>
+<p><a href="#_Toc96747277" DESIGNTIMEURL="#_Toc96747277">5.3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Scheduler</a></p>
+<p><a href="#_Toc96747278" DESIGNTIMEURL="#_Toc96747278">5.4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Listener</a></p>
+<p><a href="#_Toc96747279" DESIGNTIMEURL="#_Toc96747279">5.5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Repository</a></p>
+<p><a href="#_Toc96747280" DESIGNTIMEURL="#_Toc96747280">5.6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DeploymentEngine</a></p>
+<p><a href="#_Toc96747281" DESIGNTIMEURL="#_Toc96747281">5.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DeploymentParser</a></p>
+<p><a href="#_Toc96747282" DESIGNTIMEURL="#_Toc96747282">5.8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DeploymentEngine Initialization</a></p>
+<p><a href="#_Toc96747283" DESIGNTIMEURL="#_Toc96747283">5.9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Adding a new web service</a></p>
+<p><a href="#_Toc96747284" DESIGNTIMEURL="#_Toc96747284">6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AXIOM – AXIs Object Model</a></p>
+<p><a href="#_Toc96747285" DESIGNTIMEURL="#_Toc96747285">6.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Introduction</a></p>
+<p><a href="#_Toc96747286" DESIGNTIMEURL="#_Toc96747286">6.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; High Level Architecture</a></p>
+<p><a href="#_Toc96747287" DESIGNTIMEURL="#_Toc96747287">7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Handler Frame work and Phase Rules</a></p>
+<p><a href="#_Toc96747288" DESIGNTIMEURL="#_Toc96747288">7.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Phase</a></p>
+<p><a href="#_Toc96747289" DESIGNTIMEURL="#_Toc96747289">7.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Handler chain</a></p>
+<p><a href="#_Toc96747290" DESIGNTIMEURL="#_Toc96747290">8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WSDL Object model</a></p>
+<p><a href="#_Toc96747291" DESIGNTIMEURL="#_Toc96747291">8.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Overview of the Axis2 WSDL Module</a></p>
+<p><a href="#_Toc96747292" DESIGNTIMEURL="#_Toc96747292">8.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WOM</a></p>
+<p><a href="#_Toc96747293" DESIGNTIMEURL="#_Toc96747293">8.3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Service Description</a></p>
+<p><a href="#_Toc96747294" DESIGNTIMEURL="#_Toc96747294">8.4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WSDL Processing</a></p>
+<p><a href="#_Toc96747295" DESIGNTIMEURL="#_Toc96747295">8.5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WOM Builder Module</a></p>
+<p><a href="#_Toc96747296" DESIGNTIMEURL="#_Toc96747296">9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Client API</a></p>
+<p><a href="#_Toc96747297" DESIGNTIMEURL="#_Toc96747297">9.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sendAsync Invocation</a></p>
+<p><a href="#_Toc96747298" DESIGNTIMEURL="#_Toc96747298">9.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; send Invocation</a></p>
+<p><a href="#_Toc96747299" DESIGNTIMEURL="#_Toc96747299">9.3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sendReceive Invocation</a></p>
+<p><a href="#_Toc96747300" DESIGNTIMEURL="#_Toc96747300">9.4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sendReceiveAsync Invocation</a></p>
+<p><a href="#_Toc96747301" DESIGNTIMEURL="#_Toc96747301">9.5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sendReceiveAsync Invocation with One way transport</a></p>
+<h1><a name=_Toc96747262>1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Introduction</a> </h1>
+<p>This document describes the rationale behind the architecture and design of Axis2. The Axis 2 sub components are those that were finalized at the first Axis Summit held in Colombo, Sri Lanka. The document will provide a thorough understanding of the workings of a SOAP engine that is required for a developer before examining the code in detail.&nbsp;&nbsp;&nbsp; </p>
+<h2><a name=_Toc96747263>1.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Architecture overview</a> </h2>
+<p>Axis Java 2.0 is a SOAP engine consisting of a number of sub components. Components are identifiable with that of Axis 1.0, but the introduction of some components posses the capability of abstracting functionality to seamlessly support a number of auxiliary specifications. It is also important that the reader understands the inner workings of Axis 2 especially at component level, where dependencies and interactions between components are discussed.</p>
+<h2><a name=_Toc96747264>1.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Axis2 sub components</a></h2>
+<p>Axis2 consists of the following high level sub components, and they are described in the next section of this document. </p>
+<p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Engine.</p>
+<p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Engine Registry.</p>
+<p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Message Context.</p>
+<p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Deployment.</p>
+<p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Axis Object Model (AXIOM).</p>
+<p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Handler Framework and Phase rules. </p>
+<p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WSDL Object model.</p>
+<p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Client API.</p>
+<p><a name=_Toc96747265>2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Axis Engine</a></p>
+<p>The Execution Model or the Engine in Axis terminology, addresses how the components of Apache Axis2 are executed passing control from one component to another. The Axis Execution Model is independent of specific “<em>Message Exchange Patterns</em>” or <em>“synchronous, Asynchronous behavior”</em>.</p>
+<p>The Axis Engine consist two main methods of message interchange, i.e. <em>in-flow</em> and <em>out-flow </em>respectively. In addition a <em>fault-flow</em> is also present for handling processing errors. Each flow encompasses a set of components, namely “<em>Handlers”</em>, “<em>Transport Senders”</em>, <em>“Transport Receivers”</em>, “<em>Receivers”</em>, “<em>Senders</em>” and <em>“Providers”.</em> These components address a specific requirement of when exchanging SOAP messages. </p>
+<h2><a name=_Toc96747266></a><a name=_Toc96482936>2.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Handlers</a></h2>
+<p>An extension mechanism for Axis, it represents an <em>“atomic unit of execution logic”</em> which can be configured with deployment. Each handler is executed in the order specified by the configuration at the time of deployment. (Please see Handler framework and Phase rules for an in depth understanding)&nbsp; </p>
+<h2><a name=_Toc96747267></a><a name=_Toc96482937>2.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Transport Senders/Receivers</a></h2>
+<p>The <em>“Transport senders</em>” and “<em>Transport Receivers</em>” as described by their name handle the sending and receiving of a SOAP message via a specific transport protocol. </p>
+<h2><a name=_Toc96747268></a><a name=_Toc96482938>2.3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Senders/Receivers</a></h2>
+<p>The <em>“Senders”</em> and “<em>Receivers”</em> control the Message Exchange Patterns (MEP) and Synchronous and Asynchronous behavior.</p>
+<h2><a name=_Toc96747269></a><a name=_Toc96482939>2.4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Provider</a></h2>
+<p>The <em>“Provider”</em> takes care of the real <em>“java implementation” </em>invocation of the Web Service (this does not refer to the java object, but refers to the implementation of the web service in the form of java, that can be a java class, XSLT engine ETC...).&nbsp;&nbsp;&nbsp; </p>
+<p><img height=120 src="images/archi001.gif" width=576 DESIGNTIMEURL="images/archi001.gif"></p>
+<p>The Axis2 Execution Model unaware of the Message Exchange Patterns or the Synchronous or Asynchronous behavior, constructs an inflow or out flow or both, by picking the right components using WSDL or Deployment information and then executing them.&nbsp; </p>
+<p>Implementation of the above logical flow is achieved using an architecture that consists of “Handlers”, “Phases” and Execution Chains.&nbsp; </p>
+<h2><a name=_Toc96747270></a><a name=_Toc96482940>2.5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Phases</a></h2>
+<p>The Phases are a mechanism to specify the order of the handlers without knowing the *absolute position* of each handler in the Handler Chain. The Phase is a defined area (place holder for the handlers) in the Execution Chain. </p>
+<p>For an example say the handler developer wants (RM), the Handler to run after &quot;Encryption” and before &quot;Transaction&quot;. But as the Handler &nbsp;can be used in different Web Services it is not necessary to specify the absolute position of the Handler at the Execution Chain. Phases will handle this with the following declaration. </p>
+<p><strong>&lt;handler name=&quot;RM&quot; ..... before=&quot;Transaction&quot; after=&quot;Encryption&quot; ../&gt;</strong></p>
+<p>This will ensure that the rules are followed and hence executed appropriately (Note: support for before and after is not implemented in M1)</p>
+<p>&nbsp;&nbsp; <br>As far as the implementation is concerned a Phase is a ordered collection of Handlers that are arranged according to the Phase rules. This can be viewed as an “<em>improved</em>” HandlerChain from Axis 1.x.<br>&nbsp;</p>
+<h2><a name=_Toc96747271></a><a name=_Toc96482941>2.6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Module</a></h2>
+<p>Module is a logical collection of Handlers that act together and more than just being a “Package”. One such possibility is WSDL “Code Generation” extensions. For an example the users would like to have ability to have Service reference a module and have it enabled as done in J2EE.</p>
+<p>&lt;service name=&quot;foo&quot;&gt;</p>
+<p>&lt;module ref=&quot;Authentication&quot;/&gt;</p>
+<p>&lt;/service&gt;</p>
+<p>This would enable authentication for service foo, this too is not in M1.</p>
+<p><a name=_Toc96747272></a><a name=_Toc96482942>3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Engine Registry</a></p>
+<p>The Engine registry is the runtime state of the Axis engine. It contains the real objects like Handlers etc. and by changing them at runtime the user can change the engine configuration. </p>
+<p>Deployment provides the implementation of Engine Registry out of the Deployment Descriptors and keeps the Engine Registry in sync with the Deployment configuration repository. In this way the Engine does not have to be aware of the deployment mechanism. The Engine would know that there is an Engine Registry and that it is maintained. </p>
+<p>By default the Engine Registry implementation is synchronized, and this is a necessary condition to support hot deployment. It is also possible not to synchronize the Engine but this would mean that hot deployment is disabled. </p>
+<p><a name=_Toc96747273></a><a name=_Toc96482943>4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context</a></p>
+<p>Axis2 has three Contexts, Global, Session and the Message contexts and they are the placeholders for the information in the Axis2. They follow the mediator pattern and all the components interact and share the information with each other through the three contexts. The contexts enable Axis to build on loosely coupled Components. </p>
+<p>Most components of the Axis2 are stateless across the two invocations of the component. (The Engine Registry is part of the Global Context.) . The developer should store all states in the in one of the context while all contexts are accessible across the Message context which would be passed through the Handlers in the Execution Chain. </p>
+<p><a name=_Toc96747274>5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Deployment</a></p>
+<p>There are two types of deployment in Axis2, namely, Service Deployment and Module Deployment. </p>
+<h2><a name=_Toc96747275>5.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Module Deployment:</a></h2>
+<p>Axis2 provides a J2EE like deployment (an axis archive file has to be created and dropped into the correct directory) for both modules and services. A user can deploy a module or a service as an “.aar” file (module1.aar, service1.aar). Module hot deployment will not be supported in M1, but will be supported in later releases. When the axis engine is started all the .aar files in the WEB-INF/Repository/modules will get deployed. But if someone wants to add a new module or service, a restarting of the engine is required after putting the new .aar file in the above-mentioned folder.</p>
+<h2><a name=_Toc96747276>5.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Service Deployment</a> </h2>
+<p>One of the key improvements introduced with Axis2 is the capability to “hot deploy” web services. And in this M1 release only a J2EE like deployment is supported. That is, &nbsp;a user has to create an axis archive file that includes all the files that he/she wants, &nbsp;and drop that archive file into the WEB-INF/Repository/services directory. The following three features are associated with service deployment; </p>
+<p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hot Deployment </p>
+<p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hot Un-Deployment </p>
+<p>·&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hot Update </p>
+<p>Hot Deployment is all about the ability to deploy a new web service while the axis engine is up and running.&nbsp; </p>
+<p>Hot Un-Deployment is the ability to remove a web service (services) while the system is running.</p>
+<p>Hot update is the ability to deploy a new version of an existing web service without restarting the server. It is handled as Un-Deployment followed by a Hot Deployment. </p>
+<p>The directory structure to which modules and services should deployed to be: </p>
+<ul>
+<li>WEB-INF/ modules 
+<li>WEB-INF/services </li></ul>
+<p><strong><em>The required directory structure for a modules archive file is as follows;</em></strong></p>
+<p>m1.aar</p>
+<p>&nbsp;&nbsp;&nbsp; META-INF/module.xml</p>
+<p>&nbsp;&nbsp;&nbsp; lib/</p>
+<p>&nbsp;&nbsp;&nbsp; classes/</p>
+<p><strong><em>The required directory structure for a service archive file is as follows; </em></strong></p>
+<p>s1.aar</p>
+<p>&nbsp;&nbsp;&nbsp; META-INF/service.xml</p>
+<p>&nbsp;&nbsp;&nbsp; lib/</p>
+<p>&nbsp;&nbsp;&nbsp; classes/</p>
+<p><strong><em>The structure of module.xml file is &nbsp;as follows; </em></strong></p>
+<p><strong><em><img height=127 src="images/archi002.gif" width=347 DESIGNTIMEURL="images/archi002.gif"></em></strong></p>
+<p><strong><em>The structure of service.xml file is as follows; </em></strong></p>
+<p><strong><em><img height=195 src="images/archi003.gif" width=680 DESIGNTIMEURL="images/archi003.gif"></em></strong></p>
+<p>&nbsp;<strong><em>The architecture of hot deployment consists of the following components; </em></strong></p>
+<p><img height=304 src="images/archi004.jpg" width=423 border=0 DESIGNTIMEURL="images/archi004.jpg"></p>
+<p>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The Scheduler periodically invokes the Listener to check for updates</p>
+<p>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If the Listener finds an update, it passes that information to the Repository </p>
+<p>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The Repository hands over the document to the Deployment Parser </p>
+<p>4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Having parsed the document, the Deployment Parser returns the corresponding object</p>
+<p>5.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The Repository updates the toDeploy and toUn-Deploy list </p>
+<p>6.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The Repository informs the Listener to update the system </p>
+<p>7.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The Listener informs the Deployment Engine to do the update (both deploy and un-deploy) </p>
+<h2><a name=_Toc96747277>5.3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Scheduler</a></h2>
+<p>This component itself is a thread that performs a specific task forever in a given time interval. In this case it periodically asks the Listener to listen to the file system events. Here the file system is not the entire file system, it is only the sub directories of WEB_INF/Repository where the modules and services reside.</p>
+<h2><a name=_Toc96747278>5.4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Listener</a></h2>

[... 204 lines stripped ...]