<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at May 28, 2013
 | Rendered using Apache Maven Fluido Skin 1.3.0
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20130528" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Axis - 
    Architecture Guide</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />

      
    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.0.min.js"></script>

    
            </head>
        <body class="topBarDisabled">
          
                
                    
    
        <div class="container-fluid">
          <div id="banner">
        <div class="pull-left">
                                <div id="bannerLeft">
                <h2>Axis</h2>
                </div>
                      </div>
        <div class="pull-right">                                <a href="./" id="bannerRight">
                                                                                                <img src="images/axis-small.png"  alt="Apache Axis"/>
                </a>
      </div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
                
                    
                              <li class="">
                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
        Apache</a>
        </li>
      <li class="divider ">/</li>
            <li class="">
                    <a href="../../" title="Axis">
        Axis</a>
        </li>
      <li class="divider ">/</li>
            <li class="">
                    <a href="../" title="Axis 1.x">
        Axis 1.x</a>
        </li>
      <li class="divider ">/</li>
            <li class="">
                    <a href="./" title="Java">
        Java</a>
        </li>
      <li class="divider ">/</li>
        <li class="">
    Architecture Guide</li>
        
                
                    
                  <li id="publishDate" class="pull-right">Last Published: 2013-05-28</li> <li class="divider pull-right">|</li>
              <li id="projectVersion" class="pull-right">Version: 1.4.1-SNAPSHOT</li>
            
                            </ul>
      </div>

            
      <div class="row-fluid">
        <div id="leftColumn" class="span3">
          <div class="well sidebar-nav">
                
                    
                <ul class="nav nav-list">
                    <li class="nav-header">About</li>
                                
      <li>
    
                          <a href="index.html" title="Introduction">
          <i class="none"></i>
        Introduction</a>
            </li>
                  
      <li>
    
                          <a href="issue-tracking.html" title="Issue Tracking">
          <i class="none"></i>
        Issue Tracking</a>
            </li>
                  
      <li>
    
                          <a href="mail-lists.html" title="Mailing Lists">
          <i class="none"></i>
        Mailing Lists</a>
            </li>
                  
      <li>
    
                          <a href="source-repository.html" title="Source Repository">
          <i class="none"></i>
        Source Repository</a>
            </li>
                  
      <li>
    
                          <a href="artifacts.html" title="Artifacts & Dependencies">
          <i class="none"></i>
        Artifacts & Dependencies</a>
            </li>
                  
      <li>
    
                          <a href="apiDocs/index.html" title="Javadocs">
          <i class="none"></i>
        Javadocs</a>
            </li>
                              <li class="nav-header">Downloads</li>
                                
      <li>
    
                          <a href="releases.html" title="Releases">
          <i class="none"></i>
        Releases</a>
            </li>
                                                                                                                                            
      <li>
    
                          <a href="changelog.html" title="Changelogs">
          <i class="icon-chevron-right"></i>
        Changelogs</a>
                  </li>
                  
      <li>
    
                          <a href="snapshots.html" title="Snapshots">
          <i class="none"></i>
        Snapshots</a>
            </li>
                              <li class="nav-header">Documentation</li>
                                
      <li>
    
                          <a href="overview.html" title="Overview">
          <i class="none"></i>
        Overview</a>
            </li>
                  
      <li>
    
                          <a href="install.html" title="Installation">
          <i class="none"></i>
        Installation</a>
            </li>
                  
      <li>
    
                          <a href="user-guide.html" title="User's Guide">
          <i class="none"></i>
        User's Guide</a>
            </li>
                  
      <li>
    
                          <a href="developers-guide.html" title="Developer's Guide">
          <i class="none"></i>
        Developer's Guide</a>
            </li>
                  
      <li>
    
                          <a href="integration-guide.html" title="Integration Guide">
          <i class="none"></i>
        Integration Guide</a>
            </li>
                  
      <li class="active">
    
            <a href="#"><i class="none"></i>Architecture Guide</a>
          </li>
                  
      <li>
    
                          <a href="reference.html" title="Reference Guide">
          <i class="none"></i>
        Reference Guide</a>
            </li>
                  
      <li>
    
                          <a href="reading.html" title="Reading Guide">
          <i class="none"></i>
        Reading Guide</a>
            </li>
                              <li class="nav-header">More...</li>
                                
      <li>
    
                          <a href="ant/ant.html" title="Ant Tasks">
          <i class="none"></i>
        Ant Tasks</a>
            </li>
                  
      <li>
    
                          <a href="maven/index.html" title="Maven Plugins">
          <i class="none"></i>
        Maven Plugins</a>
            </li>
                  
      <li>
    
                          <a href="castor/index.html" title="Castor Databinding">
          <i class="none"></i>
        Castor Databinding</a>
            </li>
                  
      <li>
    
                          <a href="xmlbeans/index.html" title="XmlBeans Databinding">
          <i class="none"></i>
        XmlBeans Databinding</a>
            </li>
                  
      <li>
    
                          <a href="transports/jms/index.html" title="JMS Transport">
          <i class="none"></i>
        JMS Transport</a>
            </li>
                  
      <li>
    
                          <a href="transports/http-hc3/index.html" title="HttpClient 3 Transport">
          <i class="none"></i>
        HttpClient 3 Transport</a>
            </li>
                  
      <li>
    
                          <a href="transports/http-javanet/index.html" title="java.net HTTP Transport">
          <i class="none"></i>
        java.net HTTP Transport</a>
            </li>
                  
      <li>
    
                          <a href="standalone-server/index.html" title="Stand-alone Server">
          <i class="none"></i>
        Stand-alone Server</a>
            </li>
                              <li class="nav-header">Apache</li>
                                
      <li>
    
                          <a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="externalLink" title="License">
          <i class="none"></i>
        License</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship">
          <i class="none"></i>
        Sponsorship</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks">
          <i class="none"></i>
        Thanks</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/security/" class="externalLink" title="Security">
          <i class="none"></i>
        Security</a>
            </li>
            </ul>
                
                    
                            <form id="search-form" action="http://www.google.com/search" method="get" >
    
  <input value="ws.apache.org/axis/java" name="sitesearch" type="hidden"/>
  <input class="search-query" name="q" id="query" type="text" />
</form>
<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
          
          <hr class="divider" />

           <div id="poweredBy">
                            <div class="clear"></div>
                            <div class="clear"></div>
                            <div class="clear"></div>
                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
      </a>
                  </div>
          </div>
        </div>
        
                
        <div id="bodyColumn"  class="span9" >
                                  
            <!-- ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements. See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership. The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License. You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied. See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License. -->
  

<div class="section"><h2>Table of Contents<a name="Table_of_Contents"></a></h2>

<ul><li><a href="#Table_of_Contents">Table of Contents</a></li><li><a href="#Introduction">Introduction</a></li><li><a href="#Architectural_Overview">Architectural Overview</a><ul><li><a href="#Handlers_and_the_Message_Path_in_Axis">Handlers and the Message Path in Axis</a></li><li><a href="#Message_Path_on_the_Server">Message Path on the Server</a></li><li><a href="#Message_Path_on_the_Client">Message Path on the Client</a></li></ul></li><li><a href="#Subsystems">Subsystems</a></li><li><a href="#Message_Flow_Subsystem">Message Flow Subsystem</a><ul><li><a href="#Handlers_and_Chains">Handlers and Chains</a><ul><li><a href="#Targeted_Chains">Targeted Chains</a></li><li><a href="#Fault_Processing">Fault Processing</a></li></ul></li><li><a href="#Message_Contexts">Message Contexts</a></li><li><a href="#Engine">Engine</a><ul><li><a href="#Engine_Configuration">Engine Configuration</a></li></ul></li></ul></li><li><a href="#Administration_Subsystem">Administration Subsystem</a><ul><li><a href="#WSDD-Based_Administration">WSDD-Based Administration</a></li></ul></li><li><a href="#Message_Model_Subsystem">Message Model Subsystem</a><ul><li><a href="#SOAP_Message_Model">SOAP Message Model</a></li><li><a href="#Message_Elements">Message Elements</a></li><li><a href="#Deserialization">Deserialization</a></li></ul></li><li><a href="#Encoding_Subsystem">Encoding Subsystem</a></li><li><a href="#WSDL_Tools_Subsystem">WSDL Tools Subsystem</a><ul><li><a href="#WSDL2Java">WSDL2Java</a></li><li><a href="#Java2WSDL">Java2WSDL</a></li></ul></li><li><a href="#Interaction_Diagrams">Interaction Diagrams</a><ul><li><a href="#Client_Side_Processing">Client Side Processing</a></li></ul></li><li><a href="#Pluggable-Component_Discovery">Pluggable-Component Discovery</a></li><li><a href="#Open_Issues">Open Issues</a></li></ul>

</div>

<div class="section"><h2>Introduction<a name="Introduction"></a></h2>

<p>This guide records some of the rationale of the architecture and design of Axis.</p>

</div>

<div class="section"><h2>Architectural Overview<a name="Architectural_Overview"></a></h2>

<p>Axis consists of several subsystems working together, as we shall see later. In this section we'll give you an overview of how the core of Axis works.</p>

<div class="section"><h3>Handlers and the Message Path in Axis<a name="Handlers_and_the_Message_Path_in_Axis"></a></h3>

<p>Put simply, Axis is all about processing Messages. When the central Axis processing logic runs, a series of <b>Handlers</b> are each invoked in order. The particular order is determined by two factors - deployment configuration and whether the engine is a client or a server. The object which is passed to each Handler invocation is a <b>MessageContext</b>. A MessageContext is a structure which contains several important parts: 1) a &quot;request&quot; message, 2) a &quot;response&quot; message, and 3) a bag of properties. More on this in a bit.</p>

<p>There are two basic ways in which Axis is invoked:</p>

<ol style="list-style-type: decimal">
  <li>As a <b>server</b>, a <b>Transport Listener</b> will create a MessageContext and invoke the Axis processing framework.</li>
  <li>As a <b>client</b>, application code (usually aided by the  client programming model of Axis) will generate a MessageContext and invoke the Axis processing framework.</li>
</ol>

<p>In either case, the Axis framework's job is simply to pass the resulting MessageContext through the configured set of Handlers, each of which has an opportunity to do whatever it is designed to do with the MessageContext.</p>

</div>

<div class="section"><h3>Message Path on the Server<a name="Message_Path_on_the_Server"></a></h3>

<p>The server side message path is shown in the following diagram. The small cylinders represent Handlers and the larger, enclosing cylinders represent <b>Chains</b> (ordered collections of Handlers which will be described shortly).</p>

<p><img src="images/ServerMessagePath.jpg" vspace="30" height="282" width="602" alt="ServerMessagePath" /></p>

<p>A message arrives (in some protocol-specific manner) at a Transport Listener. In this case, let's assume the Listener is a HTTP servlet. It's the Listener's job to package the protocol-specific data into a <b>Message</b> object (org.apache.axis.Message), and put the Message into a <b>MessageContext</b>. The MessageContext is also loaded with various <b>properties</b> by the Listener - in this example the property &quot;http.SOAPAction&quot; would be set to the value of the SOAPAction HTTP header. The Transport Listener also sets the <b>transportName</b> String on the MessageContext , in this case to &quot;http&quot;. Once the MessageContext is ready to go, the Listener hands it to the AxisEngine.</p>

<p>The AxisEngine's first job is to look up the transport by name. The transport is an object which contains a <b>request</b> Chain, a <b>response</b> Chain, or perhaps both. A <b>Chain</b> is a Handler consisting of a sequence of Handlers which are invoked in turn -- more on Chains later. If a transport request Chain exists, it will be invoked, passing the MessageContext into the invoke() method. This will result in calling all the Handlers specified in the request Chain configuration.</p>

<p>After the transport request Handler, the engine locates a global request Chain, if configured, and then invokes any Handlers specified therein.</p>

<p>At some point during the processing up until now, some Handler has hopefully set the <b>serviceHandler</b> field of the MessageContext (this is usually done in the HTTP transport by the &quot;URLMapper&quot; Handler, which maps a URL like &quot;http://localhost/axis/services/AdminService&quot; to the &quot;AdminService&quot; service). This field determines the Handler we'll invoke to execute service-specific functionality, such as making an RPC call on a back-end object. Services in Axis are typically instances of the &quot;SOAPService&quot; class (org.apache.axis.handlers.soap.SOAPService), which may contain <b>request</b> and <b>response</b> Chains (similar to what we saw at the transport and global levels), and must contain a <b>provider</b>, which is simply a Handler responsible for implementing the actual back end logic of the service.</p>

<p>For RPC-style requests, the provider is the org.apache.axis.providers.java.RPCProvider class. This is just another Handler that, when invoked, attempts to call a backend Java object whose class is determined by the &quot;className&quot; parameter specified at deployment time. It uses the SOAP RPC convention for determining the method to call, and makes sure the types of the incoming XML-encoded arguments match the types of the required parameters of the resulting method.</p>

</div>

<div class="section"><h3>Message Path on the Client<a name="Message_Path_on_the_Client"></a></h3>

<p>The Message Path on the client side is similar to that on the server side, except the order of scoping is reversed, as shown below.</p>

<p><img src="images/ClientMessagePath.jpg" vspace="30" height="281" width="592" alt="ClientMessagePath" /></p>

<p>The <b>service</b> Handler, if any, is called first - on the client side, there is no &quot;provider&quot; since the service is being provided by a remote node, but there is still the possibility of request and response Chains. The service request and response Chains perform any service-specific processing of the request message on its way out of the system, and also of the response message on its way back to the caller.</p>

<p>After the service request Chain, the global request Chain, if any, is invoked, followed by the transport. The <b>Transport Sender</b>, a special Handler whose job it is to actually perform whatever protocol-specific operations are necessary to get the message to and from the target SOAP server, is invoked to send the message. The response (if any) is placed into the responseMessage field of the MessageContext, and the MessageContext then propagates through the response Chains - first the transport, then the global, and finally the service.</p>

</div>

</div>

<div class="section"><h2>Subsystems<a name="Subsystems"></a></h2>

<p>Axis comprises several subsystems working together with the aim of separating responsibilities cleanly and making Axis modular. Subsystems which are properly layered enable parts of a system to be used without having to use the whole of it (or hack the code).</p>

<p>The following diagram shows the layering of subsystems. The lower layers are independent of the higher layers. The 'stacked' boxes represent mutually independent, although not necessary mutually exclusive, alternatives. For example, the HTTP, SMTP, and JMS transports are independent of each other but may be used together.</p>

<p><img src="images/subsystems.jpg" alt="subsystems" /></p>

<p>In fact, the Axis source code is not as cleanly separated into subsystems as the above diagram might imply. Some subsystems are spread over several packages and some packages overlap more than one subsystem. Proposals to improve the code structure and make it conform more accurately to the notional Axis subsystems will be considered when we get a chance.</p>

</div>

<div class="section"><h2>Message Flow Subsystem<a name="Message_Flow_Subsystem"></a></h2>

<div class="section"><h3>Handlers and Chains<a name="Handlers_and_Chains"></a></h3>

<p>Handlers are invoked in sequence to process messages. At some point in the sequence a Handler may send a request and receive a response or else process a request and produce a response. Such a Handler is known as the <i>pivot point</i> of the sequence. As described above, Handlers are either transport-specific, service-specific, or global. The Handlers of each of these three different kinds are combined together into Chains. So the overall sequence of Handlers comprises three Chains: transport, global, and service. The following diagram shows two sequences of handlers: the client-side sequence on the left and the server-side sequence on the right.</p>

<p><img src="images/pivots.jpg" height="240" width="403" alt="pivots" /></p>

<p>A web service does not necessarily send a response message to each request message, although many do. However, response Handlers are still useful in the message path even when there isn't a response message, e.g. to stop timers, clean up resources, etc.</p>

<p>A Chain is a composite Handler, i.e. it aggregates a collection of Handlers as well as implementing the Handler interface as shown in the following UML diagram:</p>

<p><img src="images/chainclasses.jpg" alt="chainclasses" /></p>

<p>A Chain also has similarities to the Chain of Responsibility design pattern in which a request flows along a sequence of Handlers until it is processed. Although an Axis Chain may process a request in stages over a succession of Handlers, it has the same advantages as Chain of Responsibility: flexibility and the ease with which new function can be added.</p>

<p>Back to message processing -- a message is processed by passing through the appropriate Chains. A message context is used to pass the message and associated environment through the sequence of Handlers. The model is that Axis Chains are constructed offline by having Handlers added to them one at a time. Then they are turned online and message contexts start to flow through the Chains. Multiple message contexts may flow through a single Chain concurrently. Handlers are never added to a Chain once it goes online. If a Handler needs to be added or removed, the Chain must be 'cloned', the modifications made to the clone, and then the clone made online and the old Chain retired when it is no longer in use. Message contexts that were using the old Chain continue to use it until they are finished. This means that Chains do not need to cope with the addition and removal of Handlers while the Chains are processing message contexts -- an important simplification.</p>

<p>The deployment registry has factories for Handlers and Chains. Handlers and Chains can be defined to have 'per-access', 'per-request', or 'singleton' scope although the registry currently only distinguishes between these by constructing non-singleton scope objects when requested and constructing singleton scope objects once and holding on to them for use on subsequent creation requests.</p>

<div class="section"><h4>Targeted Chains<a name="Targeted_Chains"></a></h4>

<p>A <b>Targeted Chain</b> is a special kind of chain which may have any or all of: a request Handler, a pivot Handler, and a response Handler. The following class diagram shows how Targeted Chains relate to Chains. Note that a Targeted Chain is an aggregation of Handlers by virtue of extending the Chain interface which is an aggregation of Handlers.</p>

<p><img src="images/targetedchainclasses.jpg" alt="targetedchainclasses" /></p>

<p>A service is a special kind of Targeted Chain in which the pivot Handler is known as a &quot;provider&quot;.</p>

</div><div class="section"><h4>Fault Processing<a name="Fault_Processing"></a></h4>

<p>Now let's consider what happens when a fault occurs. The Handlers prior to the Handler that raised the fault are driven, in reverse order, for onFault (previously misnamed 'undo'). The scope of this backwards scan is interesting: all Handlers previously invoked for the current Message Context are driven.</p>

<p><i>Need to explain how &quot;FaultableHandlers&quot; and &quot;WSDD Fault Flows&quot; fit in.</i></p>

</div></div>

<div class="section"><h3>Message Contexts<a name="Message_Contexts"></a></h3>

<p>The current structure of a MessageContext is shown below. Each message context may be associated with a request Message and/or a response Message. Each Message has a SOAPPart and an Attachments object, both of which implement the Part interface.</p>

<p><img src="images/messagecontext.jpg" alt="messagecontext" /></p>

<p>The typing of Message Contexts needs to be carefully considered in relation to the Axis architecture. Since a Message Context appears on the Handler interface, it should not be tied to or biassed in favour of SOAP. The current implementation is marginally biassed towards SOAP in that the setServiceHandler method narrows the specified Handler to a SOAPService.</p>

</div>

<div class="section"><h3>Engine<a name="Engine"></a></h3>

<p>Axis has an abstract AxisEngine class with two concrete subclasses: AxisClient drives the client side handler chains and AxisServer drives the server side handler chains. The relationships between these classes is fairly simple:</p>

<p><img src="images/engineclasses.jpg" alt="engineclasses" /></p>

<div class="section"><h4>Engine Configuration<a name="Engine_Configuration"></a></h4>

<p>The EngineConfiguration interface is the means of configuring the Handler factories and global options of an engine instance. An instance of a concrete implementation of EngineConfiguration must be passed to the engine when it is created and the engine must be notified if the EngineConfiguration contents are modified. The engine keeps a reference to the EngineConfiguration and then uses it to obtain Handler factories and global options.</p>

<p>The EngineConfiguration interface belongs to the Message Flow subsystem which means that the Message Flow subsystem does not depend on the Administration subsystem.</p>

</div></div>

</div>

<div class="section"><h2>Administration Subsystem<a name="Administration_Subsystem"></a></h2>

<p>The Administration subsystem provides a way of configuring Axis engines. The configuration information an engine needs is a collection of factories for runtime artefacts such as Chains and SOAPServices and a set of global configuration options for the engine.</p>

<p>The Message Flow subsystem's EngineConfiguration interface is implemented by the Administration subsystem. FileProvider enables an engine to be configured statically from a file containing a deployment descriptor which is understood by the WSDDDeployment class. SimpleProvider, on the other hand, enables an engine to be configured dynamically.</p>

<p><img src="images/engineconfig.jpg" alt="engineconfig" /></p>

<div class="section"><h3>WSDD-Based Administration<a name="WSDD-Based_Administration"></a></h3>

<p>WSDD is an XML grammer for deployment descriptors which are used to statically configure Axis engines. Each Handler needs configuration in terms of the concrete class name of a factory for the Handler, a set of options for the handler, and a lifecycle scope value which determines the scope of sharing of instances of the Handler.</p>

<p>The structure of the WSDD grammar is mirrored by a class hierarchy of factories for runtime artefacts. The following diagram shows the classes and the types of runtime artefacts they produce (a dotted arrow means &quot;instantiates&quot;).</p>

<p><img src="images/wsddclasses.jpg" alt="wsddclasses" /></p>

</div>

</div>

<div class="section"><h2>Message Model Subsystem<a name="Message_Model_Subsystem"></a></h2>

<div class="section"><h3>SOAP Message Model<a name="SOAP_Message_Model"></a></h3>

<p>The XML syntax of a SOAP message is fairly simple. A SOAP message consists of an <i>envelope</i> containing:</p>

<ul>
  <li>an optional <i>header</i> containing zero or more <i>header entries</i> (sometimes ambiguously referred to as <i>headers</i>),</li>
  <li>a <i>body</i> containing zero or more <i>body entries</i>, and</li>
  <li>zero or more additional, non-standard elements.</li>
</ul>

<p>The only body entry defined by SOAP is a <i>SOAP fault</i> which is used for reporting errors.</p>

<p>Some of the XML elements of a SOAP message define namespaces, each in terms of a URI and a local name, and encoding styles, a standard one of which is defined by SOAP.</p>

<p>Header entries may be tagged with the following optional SOAP attributes:</p>

<ul>
  <li><i>actor</i> which specifies the intended recipient of the header entry in terms of a URI, and</li>
  <li><i>mustUnderstand</i> which specifies whether or not the intended recipient of the header entry is required to process the header entry.</li>
</ul>

<p>So the SOAP message model looks like this:</p>

<p><img src="images/soapmessagemodel.jpg" alt="soapmessagemodel" /></p>

</div>

<div class="section"><h3>Message Elements<a name="Message_Elements"></a></h3>

<p>The classes which represent SOAP messages form a class hierarchy based on the MessageElement class which takes care of namespaces and encodings. The SOAPHeaderElement class looks after the actor and mustUnderstand attributes.</p>

<p><img src="images/messagemodelclasses.jpg" alt="messagemodelclasses" /></p>

<p>During deserialization, a parse tree is constructed consisting of instances of the above classes in parent-child relationships as shown below.</p>

<p><img src="images/messagetree.jpg" alt="messagetree" /></p>

</div>

<div class="section"><h3>Deserialization<a name="Deserialization"></a></h3>

<p>The class mainly responsible for XML parsing, i.e. deserialization, is DeserializationContext ('DC'). DC manages the construction of the parse tree and maintains a stack of SAX handlers, a reference to the MessageElement that is currently being deserialized, a stack of namespace mappings, a mapping from IDs to elements, a set of type mappings for deserialization (see <a href="#EncodingSubsystem">Encoding Subsystem</a>) and a SAX event recorder. </p>

<p>Elements that we scan over, or ones for which we don't have a particular deserializer, are recorded - in other words, the SAX events are placed into a queue which may be 'played back' at a later time to any SAX ContentHandler.</p>

<p>Once a SOAPEnvelope has been built, either through a parse or manual construction by the user, it may be output using a SerializationContext (also see <a href="#EncodingSubsystem">Encoding Subsystem</a>). MessageElements all have an output() method which lets them write out their contents.</p>

<p>The SAX handlers form a class hierarchy:</p>

<p><img src="images/SAXHandlerClasses.jpg" alt="SAXHandlerClasses" /></p>

<p>and stack up as shown in the following diagram:</p>

<p><img src="images/SAXhandlers.jpg" alt="SAXhandlers" /></p>

<p>Initially, the SAX handler stack just contains an instance of EnvelopeHandler which represents the fact that parsing of the SOAP envelope has not yet started. The EnvelopeHandler is constructed with a reference to an EnvelopeBuilder, which is the SAX handler responsible for parsing the SOAP envelope.</p>

<p>During parsing, DC receives the events from the SAX parser and notifies either the SAX handler on the top of its handler stack, the SAX event recorder, or both.</p>

<p>On the start of an element, DC calls the SAX handler on the top of its handler stack for onStartChild. This method returns a SAX handler to be used to parse the child, which DC pushes on its SAX handler stack and calls for startElement. startElement, amongst other things, typically creates a new MessageElement of the appropriate class and calls DC for pushNewElement. The latter action creates the parent-child relationships of the parse tree. </p>

<p>On the end of an element, DC pops the top SAX handler from its handler stack and calls it for endElement. It then drives SAX handler which is now on the top of the handler stack for onEndChild. Finally, it sets the MessageElement that is currently being deserialized to the parent of the current one.</p>

<p>Elements which are not defined by SOAP are treated using a SOAPHandler as a SAX event handler and a MessageElement as a node in the parse tree.</p>

</div>

</div>

<div class="section"><h2>Encoding Subsystem<a name="Encoding_Subsystem"></a></h2>

<p>Encoding is most easily understood from the bottom up. The basic requirement is to transform between values of programming language datatypes and their XML representations. In Axis, this means encoding (or 'serializing') Java objects and primitives into XML and decoding (or 'deserializing') XML into Java objects and primitives. The basic classes that implement these steps are <i>serializers</i> and <i>deserializers</i>.</p>

<p><img src="images/serclasses.jpg" alt="serclasses" /></p>

<p>Particular serializers and deserializers are written to support a specific XML processing mechanism such as DOM or SAX. So <i>serializer factories</i> and <i>deserializer factories</i> are introduced to construct serializers and deserializers for a XML processing mechanism which is specified as a parameter.</p>

<p><img src="images/serfactoryclasses.jpg" alt="serfactoryclasses" /></p>

<p>As is apparent from the above class diagrams, each pair of Java type and XML data type which needs encoding and decoding requires specific serializers and deserializers (actually one of each per XML processing mechanism). So we need to maintain a mapping from a pair of Java type and XML data type, identified by a QName, to a serializer factory and a deserializer factory. Such a mapping is known as a <i>type mapping</i>. The type mapping class hierarchy is shown below. Notice how the default type mapping instantiates the various serializer and deserialiser factories.</p>

<p><img src="images/typemappingclasses.jpg" alt="typemappingclasses" /></p>

<p>There is one final level of indirection. How do we know which type mapping to use for a particular message? This is determined by the encoding which is specified in the message. A <i>type mapping registry</i> maintains a map from encoding name (URI) to type mapping. Note that the XML data type QNames are defined by the encoding.</p>

<p><img src="images/typemappingclasses.jpg" alt="typemappingclasses" /></p>

<p>So, in summary, to encode a Java object or primitive data value to a XML datatype or to decode the latter to the former, we need to know:</p>

<ul>
  <li>the Java type we are dealing with,</li>
  <li>the QName of the XML data type we want to encode it as,</li>
  <li>the XML processing mechanism we are using, and</li>
  <li>the encoding name.</li>
</ul>

</div>

<div class="section"><h2>WSDL Tools Subsystem<a name="WSDL_Tools_Subsystem"></a></h2>

<p>The WSDL Tools subsystem contains WSDL2Java and Java2WSDL. The Axis runtime does not depend on these tools -- they are just there to make life easier for the user. </p>

<div class="section"><h3>WSDL2Java<a name="WSDL2Java"></a></h3>

<p>This tool takes a description of a web service written in WSDL and emits Java artefacts used to access the web service.</p>

<p>There are three layers inside the tool:</p>

<ul>
  <li>framework: SymbolTable, Emitter, WriterFactory</li>
  <li>WSDL2Java plugin to the framework: WSDL2Java (the main), JavaWriterFactory, and all the WSDL-relative writers: JavaPortTypeWriter, JavaBindingWriter, etc.</li>
  <li>The actual WSDL2Java emitters, one for each file generated: JavaInterfaceWriter, JavaStubWriter, etc.</li>
</ul>

</div>

<div class="section"><h3>Java2WSDL<a name="Java2WSDL"></a></h3>

<p>tbd.</p>

</div>

</div>

<div class="section"><h2>Interaction Diagrams<a name="Interaction_Diagrams"></a></h2>

<div class="section"><h3>Client Side Processing<a name="Client_Side_Processing"></a></h3>

<p>The client side Axis processing constructs a Call object with associated Service, MessageContext, and request Message as shown below before invoking the AxisClient engine.</p>

<p><img src="images/clientobjects.jpg" height="120" width="349" alt="clientobjects" /></p>

<p>An instance of Service and its related AxisClient instance are created before the Call object. The Call object is then created by invoking the Service.createCall <i>factory method</i>. Call.setOperation creates a Transport instance, if a suitable one is not already associated with the Call instance. Then Call.invoke creates a MessageContext and associated request Message, drives AxisClient.invoke, and processes the resultant MessageContext. This significant method calls in this sequence are shown in the following interaction diagram.</p>

<p><img src="images/clientinteraction.jpg" height="503" width="731" alt="clientinteraction" /></p>

</div>

</div>

<div class="section"><h2>Pluggable-Component Discovery<a name="Pluggable-Component_Discovery"></a></h2>

<p>While most pluggable components infrastructures (jaxp/xerces, commons-logging, etc) provide discovery features, it is foreseen that there are situations where these may evolve over time. For example, as leading-edge technologies are reworked and adopted as standards, discovery mechanisms are likely to change.</p>

<p>Therefore, component discovery must be relegated to a <b>single</b> point of control within AXIS, typically an AXIS-specific factory method. These factory methods should conform to current standards, when available. As technologies evolve and/or are standardized, the factory methods should be kept up-to-date with appropriate discovery mechanisms.</p>

</div>

<div class="section"><h2>Open Issues<a name="Open_Issues"></a></h2>

<ol style="list-style-type: decimal">
  <li>The relationship between the Axis subsystems needs to be documented and somewhat cleaned up as there is leakage of responsibilities between some of the subsystems. For example, there is some SOAP and HTTP bias in the basic MessageContext type and associated classes.</li>
  <li>What classes are included in the &quot;encoding&quot; subsystem? Are the encoding and message model subsystems independent of the other subsystems which depend on &quot;message flow&quot;?</li>
  <li>(Possibly related to the previous issue) How should we distribute the classes in the above diagram between the Axis subsystems taking into account SOAP-specific and HTTP-specific features?</li>
  <li>The Axis Engine currently knows about three layers of handlers: transport, global, and service. However, architecturally, this is rather odd. What &quot;law&quot; of web services ensures that there will always and only ever be <i>three</i> layers? It would be more natural to use Targeted Chains with their more primitive notion of request, pivot, and response Handlers. We would then implemented the Axis Engine as a Targeted Chain whose pivot Handler is itself a Targeted Chain with global request and response Handlers and a service pivot Handler (which is itself a Targeted Chain as we have just described). Such an Axis Engine architecture is shown in the diagram below.
    <p><img src="images/stcengine.jpg" height="312" width="667" alt="stcengine" /></p>
  </li>
  <li>WSDDService.faultFlows is initialised to an empty Vector and there is no way of adding a fault flow to it. Is this dead code or is something else missing?</li>
  <li>If a fault occurs after the pivot Handler, should the backwards scan notify Handlers which were invoked prior to the pivot Handler? The current implementation does notify such Handlers. However, this is not consistent with the processing of faults raised in a downstream system and stored in the message context by the pivot Handler. These faults are passed through any response Handlers, but do not cause onFault to be driven in the local engine.
    <p>We need to consider what's going on here. If you take a sequence of Handlers and then introduce a distribution boundary into the sequence, what effect should that have on the semantics of the sequence in terms of its effects on message contexts? The following diagram shows a client-side
Handler sequence invoking a server-side Handler sequence. We need to consider how the semantics of this combined sequence compares with the sequence formed by omitting the transport-related Handlers.</p>
    <p><img src="images/pivots2.jpg" height="413" width="658" alt="pivots2" /></p>
  </li>
</ol>

</div>

  

                  </div>
            </div>
          </div>

    <hr/>

    <footer>
            <div class="container-fluid">
              <div class="row span12">Copyright &copy;                    2000-2013
                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
            All Rights Reserved.      
                    
      </div>

        
        
                </div>
    </footer>
  </body>
</html>