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/23 09:16:48 UTC
svn commit: r154984 -
webservices/axis/trunk/java/xdocs/Axis2ArchitectureGuide.html
Author: chathura
Date: Wed Feb 23 00:16:47 2005
New Revision: 154984
URL: http://svn.apache.org/viewcvs?view=rev&rev=154984
Log:
Images linked properly after the review
Modified:
webservices/axis/trunk/java/xdocs/Axis2ArchitectureGuide.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=154983&r2=154984
==============================================================================
--- webservices/axis/trunk/java/xdocs/Axis2ArchitectureGuide.html (original)
+++ webservices/axis/trunk/java/xdocs/Axis2ArchitectureGuide.html Wed Feb 23 00:16:47 2005
@@ -27,7 +27,7 @@
<LI>Axis Object Model (AXIOM)
<LI>WSDL Object Model. <LI>Client API. </LI></OL>
<IMG height=568 alt="TotalArch (17K)"
-src="Axis2ArchitectureGuide_files/TotalArch.png" width=673>
+src="images/TotalArch.png" width=673>
<H2>1. Core of Apache Axis2</H2>
<H3>The Big Picture</H3>
<P>Just like Axis 1.x family Axis2 is all about processing Messages. It is
@@ -86,7 +86,7 @@
diagram below. At the server side it will be an inflow followed by an outflow or a
fault flow and in the client side out flow followed by the inflow.</P>
<H3>Server Side Invocation</H3><IMG
-src="Axis2ArchitectureGuide_files/serverSide.png">
+src="images/serverSide.png">
<OL>
<LI>At the Server side the invocation is started by the Transport Receiver
that listens for an incoming SOAP Message. Once the Message comes in, the
@@ -108,7 +108,7 @@
would send the Response SOAP message back to the Client. </LI>
</OL>
<H3>Client Side Invocation</H3><IMG
-src="Axis2ArchitectureGuide_files/clientside.png" width="712" height="260">
+src="images/clientside.png" width="712" height="260">
<OL>
<LI>Client Side invocation is driven by the Call object. The Call object will
load the EngineRegistry (by default) .
@@ -225,15 +225,15 @@
<P>classes/</P>
<P><STRONG><EM>The structure of module.xml file is as follows;
</EM></STRONG></P>
-<P><STRONG><EM><IMG height=127 src="Axis2ArchitectureGuide_files/archi002.gif"
+<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="Axis2ArchitectureGuide_files/archi003.gif"
+<P><STRONG><EM><IMG height=195 src="images/archi003.gif"
width=680 DESIGNTIMEURL="images/archi003.gif"></EM></STRONG></P>
<P><STRONG><EM>The architecture of hot deployment consists of the following
components; </EM></STRONG></P>
-<P><IMG height=304 src="Axis2ArchitectureGuide_files/archi004.jpg" width=423
+<P><IMG height=304 src="images/archi004.jpg" width=423
border=0 DESIGNTIMEURL="images/archi004.jpg"></P>
<P>1. The Scheduler periodically invokes the Listener to check for updates</P>
<P>2. If the Listener finds an update, it passes that information to the
@@ -372,7 +372,7 @@
<P>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><IMG height=217 src="Axis2ArchitectureGuide_files/archi005.jpg" width=552
+<P><IMG height=217 src="images/archi005.jpg" width=552
border=0 DESIGNTIMEURL="images/archi005.jpg"></P>
<P>Since most of the data binding tools support SAX based interfaces, AXIOM
comes with an adapter to be used between StAX and SAX.</P>
@@ -384,7 +384,7 @@
<TD width=64 height=0></TD></TR>
<TR>
<TD></TD>
- <TD><IMG height=282 src="Axis2ArchitectureGuide_files/archi006.jpg"
+ <TD><IMG height=282 src="images/archi006.jpg"
width=490 DESIGNTIMEURL="images/archi006.jpg"></TD></TR></TBODY></TABLE><BR>
<P></P>
<P>AXIOM sees the XML input stream through the StAX stream reader, which is
@@ -417,7 +417,7 @@
<TD width=72 height=0></TD></TR>
<TR>
<TD></TD>
- <TD><IMG height=246 src="Axis2ArchitectureGuide_files/archi007.jpg"
+ <TD><IMG height=246 src="images/archi007.jpg"
width=420
DESIGNTIMEURL="images/archi007.jpg"></TD></TR></TBODY></TABLE><BR>Therefore one
can find a factory to create OM objects, which will help to switch between
@@ -505,7 +505,7 @@
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 height=339
-src="Axis2ArchitectureGuide_files/archi008.gif" width=579 border=0
+src="images/archi008.gif" width=579 border=0
DESIGNTIMEURL="images/archi008.gif"></P>
<H3><A name=_Toc96747292>5.2 WOM</A></H3>
<P>WOM is engineered based on WSDL 2.0 component model, but it does not restrict
@@ -542,9 +542,9 @@
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 height=121 src="Axis2ArchitectureGuide_files/archi010.jpg" width=487
+<P><IMG height=121 src="images/archi010.jpg" width=487
border=0 DESIGNTIMEURL="images/archi010.jpg"><BR><IMG height=32
-src="Axis2ArchitectureGuide_files/archi011.gif" width=32 border=0
+src="images/archi011.gif" width=32 border=0
DESIGNTIMEURL="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
@@ -554,7 +554,7 @@
wrapper to the WOM. </P>
<P>Following is the Class diagram of the top level component of the description
Component org.apache.axis.description.impl.AxisService. <BR><BR><IMG height=391
-src="Axis2ArchitectureGuide_files/archi012.jpg" width=292 border=0
+src="images/archi012.jpg" width=292 border=0
DESIGNTIMEURL="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,
@@ -563,9 +563,9 @@
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 height=350
-src="Axis2ArchitectureGuide_files/archi013.gif" width=576 border=0
+src="images/archi013.gif" width=576 border=0
DESIGNTIMEURL="images/archi013.gif"><BR><IMG height=32
-src="Axis2ArchitectureGuide_files/archi011.gif" width=32 border=0
+src="images/archi011.gif" width=32 border=0
DESIGNTIMEURL="images/archi011.gif"></P>
<H3><A name=_Toc96747294>5.4 WSDL Processing</A></H3>
<P>WSDL Processing can be identified as of operations performed on or performed
@@ -594,28 +594,28 @@
(Addressing information is required.) </LI></OL>
<P>The following diagram describes all the invocations between sub components in
the client side.</P>
-<P><IMG height=315 src="Axis2ArchitectureGuide_files/archi015.jpg" width=576
+<P><IMG height=315 src="images/archi015.jpg" width=576
border=0 DESIGNTIMEURL="images/archi015.jpg"> </P>
<P><STRONG><EM>Call Class consist of following methods (Call
API)</EM></STRONG></P>
-<P><IMG height=200 src="Axis2ArchitectureGuide_files/archi016.jpg" width=582
-border=0 DESIGNTIMEURL="images/archi016.jpg"></P><PRE><STRONG><EM>Callback Interface</EM></STRONG></PRE><PRE></PRE><PRE><IMG height=56 src="Axis2ArchitectureGuide_files/archi017.jpg" width=499 border=0 DESIGNTIMEURL="images/archi017.jpg"></PRE><PRE></PRE><PRE><STRONG><EM>AsyncResult </EM></STRONG></PRE><PRE></PRE><PRE><IMG height=48 src="Axis2ArchitectureGuide_files/archi018.jpg" width=430 border=0 DESIGNTIMEURL="images/archi018.jpg"></PRE><PRE></PRE><PRE><STRONG><EM>Correlator</EM></STRONG></PRE><PRE></PRE>
-<P><IMG height=73 src="Axis2ArchitectureGuide_files/archi019.jpg" width=539
+<P><IMG height=200 src="images/archi016.jpg" width=582
+border=0 DESIGNTIMEURL="images/archi016.jpg"></P><PRE><STRONG><EM>Callback Interface</EM></STRONG></PRE><PRE></PRE><PRE><IMG height=56 src="images/archi017.jpg" width=499 border=0 DESIGNTIMEURL="images/archi017.jpg"></PRE><PRE></PRE><PRE><STRONG><EM>AsyncResult </EM></STRONG></PRE><PRE></PRE><PRE><IMG height=48 src="images/archi018.jpg" width=430 border=0 DESIGNTIMEURL="images/archi018.jpg"></PRE><PRE></PRE><PRE><STRONG><EM>Correlator</EM></STRONG></PRE><PRE></PRE>
+<P><IMG height=73 src="images/archi019.jpg" width=539
border=0 DESIGNTIMEURL="images/archi019.jpg"></P>
<H3><A name=_Toc96747297>6.1 sendAsync Invocation</A> </H3>
<P>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><IMG height=53 src="Axis2ArchitectureGuide_files/archi020.jpg" width=318
+<P><IMG height=53 src="images/archi020.jpg" width=318
border=0 DESIGNTIMEURL="images/archi020.jpg"></P>
-<P><EM>Code Snippet: </EM></P><PRE><IMG height=59 src="Axis2ArchitectureGuide_files/archi021.jpg" width=318 border=0 DESIGNTIMEURL="images/archi021.jpg"></PRE><PRE></PRE><PRE><EM>Sequence diagram</EM></PRE><PRE></PRE><PRE><IMG height=147 src="Axis2ArchitectureGuide_files/archi022.jpg" width=434 border=0 DESIGNTIMEURL="images/archi022.jpg"></PRE>
+<P><EM>Code Snippet: </EM></P><PRE><IMG height=59 src="images/archi021.jpg" width=318 border=0 DESIGNTIMEURL="images/archi021.jpg"></PRE><PRE></PRE><PRE><EM>Sequence diagram</EM></PRE><PRE></PRE><PRE><IMG height=147 src="images/archi022.jpg" width=434 border=0 DESIGNTIMEURL="images/archi022.jpg"></PRE>
<H3><A name=_Toc96747298>6.2 send Invocation</A></H3>
<P>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 :</P><PRE>a -> call.send(SOAPEnvelope)</PRE><PRE>b -> engine.send( ..)</PRE><PRE>c -> Send the SOAP message</PRE>
<P><EM>Code Snippet: </EM></P><PRE>call.setTargetURL(URL)</PRE><PRE>call.setAction(String)</PRE><PRE>call.send(SOAPEnvelope)</PRE><PRE></PRE>
<P><EM>Sequence diagram</EM></P>
-<P><IMG height=149 src="Axis2ArchitectureGuide_files/archi023.jpg" width=416
+<P><IMG height=149 src="images/archi023.jpg" width=416
border=0 DESIGNTIMEURL="images/archi023.jpg"></P>
<H3><A name=_Toc96747299>6.3 sendReceive Invocation</A></H3>
<P>The service method has a response and the communication happens synchronously
@@ -623,14 +623,14 @@
is returned. </P><PRE>a -> call.sendReceive(SOAPEnvelope)</PRE><PRE>b- > engine.send (..)</PRE><PRE>c -> Send the SOAP message</PRE><PRE>d -> Receive the response over the synchronous transport</PRE><PRE>w -> ProviderX will be called as the last step in engine.receive(..) </PRE><PRE>e -> provider returns </PRE><PRE>f -> Call hand over the response to the client</PRE><PRE></PRE>
<P><EM>Code Snippet: </EM></P><PRE>call.setTargetURL(URL)</PRE><PRE>call.setAction(String)</PRE><PRE>SOAPEnvelope env=call.sendReceive(SOAPEnvelope)</PRE>
<P><EM>Sequence diagram</EM></P>
-<P><IMG height=199 src="Axis2ArchitectureGuide_files/archi024.jpg" width=439
+<P><IMG height=199 src="images/archi024.jpg" width=439
border=0 DESIGNTIMEURL="images/archi024.jpg"></P>
<H3><A name=_Toc96747300>6.4 sendReceiveAsync Invocation</A></H3>
<P>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. </P><PRE>a -> call.sendReceiveAsync (SOAPEnvelope, callbackObj)</PRE><PRE>p -> correlator.addCorrelationInfor(msgID,allbackObjRef)</PRE><PRE>b- > engine.send (..)</PRE><PRE>c -> Send the SOAP message</PRE><PRE>d -> Receive the response over the synchronous transport</PRE><PRE>w -> ProviderX will be called as the last step in engine.receive(..) </PRE><PRE>q -> correlator.getCorrelationInfo(msgID)</PRE><PRE>g -> callbackObj.onComplete()</PRE>
-<P><EM>Code Snippet: </EM></P><PRE>call.setTargetURL(URL)</PRE><PRE>call.setAction(String)</PRE><PRE>call.setListenerTransport(http, true) </PRE><PRE>call.sendReceiveAsync (SOAPEnvelope, Callback)</PRE><PRE></PRE><PRE><EM>Sequence diagram </EM></PRE><PRE></PRE><PRE><IMG height=225 src="Axis2ArchitectureGuide_files/archi025.jpg" width=648 border=0 DESIGNTIMEURL="images/archi025.jpg"></PRE>
+<P><EM>Code Snippet: </EM></P><PRE>call.setTargetURL(URL)</PRE><PRE>call.setAction(String)</PRE><PRE>call.setListenerTransport(http, true) </PRE><PRE>call.sendReceiveAsync (SOAPEnvelope, Callback)</PRE><PRE></PRE><PRE><EM>Sequence diagram </EM></PRE><PRE></PRE><PRE><IMG height=225 src="images/archi025.jpg" width=648 border=0 DESIGNTIMEURL="images/archi025.jpg"></PRE>
<H3><A name=_Toc96747301></A><A
name=head-6b6f0ac54f2e98ce920bf68485a695e1d2b></A>6.5 sendReceiveAsync
Invocation with One way transport</H3>
@@ -641,5 +641,5 @@
invocation. </P><PRE>a -> call.sendReceiveAsync (SOAPEnvelope, callbackObj)</PRE><PRE>p -> correlator.addCorrelationInfor(msgID,allbackObjRef)</PRE><PRE>b- > engine.send (..)</PRE><PRE>c -> Send the SOAP message</PRE><PRE>r -> Receive the response by the listener</PRE><PRE>s -> engine.receive(..)</PRE><PRE>w -> ProviderX will be called as the last step in engine.receive(..) </PRE><PRE>q -> correlator.getCorrelationInfo(msgID)</PRE><PRE>g -> callbackObj.onComplete()</PRE>
<P><EM>Code Snippet: </EM></P><PRE>call.setTargetURL(URL)</PRE><PRE>call.setAction(String)</PRE><PRE>call.setListenerTransport(http, false)</PRE><PRE>call.sendReceiveAsync(SOAPEnvelope, Callback)</PRE>
<P><EM>Sequence diagram </EM></P>
-<P><IMG height=234 src="Axis2ArchitectureGuide_files/archi026.jpg" width=648
+<P><IMG height=234 src="images/archi026.jpg" width=648
border=0 DESIGNTIMEURL="images/archi026.jpg"> </P></BODY></HTML>