<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <title>Axis Architecture Guide</title>
<link href="axis.css" rel=stylesheet type=text/css>
</head>
<body>

<center>
<h1>
<img SRC="images/axis.jpg" height=96 width=176></h1></center>

<h1>
Axis Architecture Guide</h1>
<br><i>1.2 Version</i>
<br><i>Feedback: <a href="mailto:axis-dev@ws.apache.org">axis-dev@ws.apache.org</a></i>
<h3>
Contents</h3>
<a href="#Introduction">Introduction</a>
<br><a href="#Overview">Architecture Overview</a>
<br><a href="#Subsystems">Subsystems</a>
<br><a href="#Message Flow">Message Flow Subsystem</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#Handlers">Handlers and Chains</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#Message Contexts">Message Contexts</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#Engine">Engine</a>
<br><a href="#Administration Subsystem">Administration Subsystem</a>
<br><a href="#Message Model Subsystem">Message Model Subsystem</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#SOAP message model">SOAP Message Model</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#Message elements">Message Elements</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#D13n">Deserialization</a>
<br><a href="#Encoding Subsystem">Encoding Subsystem</a>
<br><a href="#WSDL Subsystem">WSDL Tools Subsystem</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#WSDL2Java">WSDL2Java</a>
<br><a href="#Sequence Diagrams">Interaction Diagrams</a>
<br>&nbsp;&nbsp;&nbsp; <a href="#Client Interaction">Client Side Processing</a>
<br><a href="#Pluggable-Component Discovery">Pluggable-Component Discovery</a>
<br><a href="#Open Issues">Open Issues</a>
<h2>
<a NAME="Introduction"></a>Introduction</h2>
This guide records some of the rationale of the architecture and design
of Axis.
<h2>
<a NAME="Overview"></a>Architectural Overview</h2>
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.
<h3>
Handlers and the Message Path in Axis</h3>
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 "request" message,
2) a "response" message, and 3) a bag of properties. More on this in a
bit.
<p>There are two basic ways in which Axis is invoked:
<ol>
<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.
<h3>
Message Path on the Server</h3>
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).
<br><img SRC="images/ServerMessagePath.jpg" VSPACE=30 height=282 width=602>
<br>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 -&nbsp; in this example the property "http.SOAPAction" 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 "http". Once the MessageContext is ready to go, the Listener hands
it to the AxisEngine.
<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>After the transport request Handler, the engine locates a global request
Chain, if configured, and
then invokes any Handlers specified therein.
<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 "URLMapper" Handler, which maps a URL
like "http://localhost/axis/services/AdminService" to the "AdminService"
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 "SOAPService" 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>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 "className" 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.
<h3>
The Message Path on the Client</h3>
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.
<br><img SRC="images/ClientMessagePath.jpg" VSPACE=30 height=281 width=592>
<br>The <b>service</b> Handler, if any, is called first - on the client
side, there is no "provider" 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>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.
<h2>
<a NAME="Subsystems"></a>Subsystems</h2>
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>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><img SRC="images/subsystems.jpg">
<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. 

<h2>
<a NAME="Message Flow"></a>Message Flow Subsystem</h2>

<h3>
<a NAME="Handlers"></a>Handlers and Chains</h3>
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.
<br><img SRC="images/pivots.jpg" height=240 width=403>
<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>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:
<br><img SRC="images/chainclasses.jpg">
<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>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>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.
<h4>
Targeted Chains</h4>
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><img SRC="images/targetedchainclasses.jpg">
<p>A service is a special kind of Targeted Chain in which the pivot Handler
is known as a "provider".
<h4>
Fault Processing</h4>
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><i>Need to explain how "FaultableHandlers" and "WSDD Fault Flows" fit
in.</i>
<h3>
<a NAME="Message Contexts"></a>Message Contexts</h3>
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.
<br><img SRC="images/messagecontext.jpg">
<br>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&nbsp;
SOAP. The current implementation is marginally biassed towards SOAP in
that the setServiceHandler method narrows the specified Handler to a SOAPService.

<h3>
<a NAME="Engine"></a>Engine</h3>
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:
<br><img SRC="images/engineclasses.jpg">
<h4>Engine Configuration</h3>
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>
The EngineConfiguration interface belongs to the Message Flow subsystem
which means that the Message Flow subsystem does not depend on the
Administration subsystem.
<h2>
<a NAME="Administration Subsystem"></a>Administration Subsystem</h2>
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>
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.
<br><img SRC="images/engineconfig.jpg">
<h3>
WSDD-Based Administration</h3>
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>
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 "instantiates").
<br><img SRC="images/wsddclasses.jpg">
<h2><a NAME="Message Model Subsystem"></a>Message Model Subsystem</h2>
<h3><a name="SOAP message model"></a>SOAP Message Model</h3>
The XML syntax of a SOAP message is fairly simple.
A SOAP message consists of an <i>envelope</i> containing:
<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>
The only body entry defined by SOAP is a <i>SOAP fault</i> which is
used for reporting errors.
<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>
Header entries may be tagged with the following optional SOAP attributes:
<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:
<br><img SRC="images/soapmessagemodel.jpg">

<h3><a name="Message elements"></a>Message Elements</h3>
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.
<br><img SRC="images/messagemodelclasses.jpg">

During deserialization, a parse tree is constructed consisting of instances
of the above classes in parent-child relationships as shown below.
<br><img SRC="images/messagetree.jpg">
<h3><a name="D13n"></a>Deserialization</h3>
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="#Encoding Subsystem">Encoding Subsystem</a>) 
and a SAX event recorder. 
<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>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="#Encoding Subsystem">Encoding Subsystem</a>).
MessageElements all have an output() method which lets them write out their
contents.
<p>The SAX handlers form a class hierarchy:
<br><img SRC="images/SAXHandlerClasses.jpg">
<p>and stack up as shown in the following diagram:
<br><img SRC="images/SAXhandlers.jpg">
<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>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>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>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>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.
<h2><a NAME="Encoding Subsystem"></a>Encoding Subsystem</h2>
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>.
<br><img SRC="images/serclasses.jpg">
<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.
<br><img SRC="images/serfactoryclasses.jpg">
<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.
<br><img SRC="images/typemappingclasses.jpg">
<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.
<br><img SRC="images/typemappingclasses.jpg">
<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:
<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>
<eul>

<h2>
<a NAME="WSDL Subsystem"></a>WSDL Tools Subsystem</h2>
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.

<a name="WSDL2Java"></a><h3>WSDL2Java</h3>
This tool takes a description of a web service written in WSDL
and emits Java artefacts used to access the web service.
<p>
There are three layers inside the tool:
<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>

<a name="Java2WSDL"></a><h3>Java2WSDL</h3>
tbd.

<h2>
<a NAME="Sequence Diagrams"></a>Interaction Diagrams</h2>

<h3>
<a NAME="Client Interaction"></a>Client Side Processing</h3>
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><img SRC="images/clientobjects.jpg" height=120 width=349>
<br>An instance of&nbsp; 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.
<br><img SRC="images/clientinteraction.jpg" height=503 width=731>

<h2>
<a NAME="Pluggable-Component Discovery"></a>Pluggable-Component Discovery</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>
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.

<h2>
<a NAME="Open Issues"></a>Open Issues</h2>

<ol>
<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 "encoding" subsystem?
Are the encoding and message model subsystems independent of the other subsystems which depend on
"message flow"?</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&nbsp;
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
"law" 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.</li>

<br><img SRC="images/stcengine.jpg" height=312 width=667>
<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.</li>

<br>&nbsp;
<p>&nbsp;
<br>&nbsp;
<br>&nbsp;
<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.
<br><img SRC="images/pivots2.jpg" height=413 width=658>
</ol>

</body>
</html>
