Author: chathura_ce
Date: Mon May 21 22:57:12 2007
New Revision: 540430
URL: http://svn.apache.org/viewvc?view=rev&rev=540430
Log:
Documented the WS-RM samples. Both client to synapse and synapse to server.
Modified:
webservices/synapse/trunk/java/repository/conf/sample/synapse_sample_104.xml
webservices/synapse/trunk/java/src/site/resources/Synapse_Samples.html
Modified:
webservices/synapse/trunk/java/repository/conf/sample/synapse_sample_104.xml
URL:
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/repository/conf/sample/synapse_sample_104.xml?view=diff&rev=540430&r1=540429&r2=540430
==============================================================================
---
webservices/synapse/trunk/java/repository/conf/sample/synapse_sample_104.xml
(original)
+++
webservices/synapse/trunk/java/repository/conf/sample/synapse_sample_104.xml
Mon May 21 22:57:12 2007
@@ -16,7 +16,7 @@
~ specific language governing permissions and limitations
~ under the License.
-->
-<!-- attaching service level WS-Security policies to proxy services -->
+<!-- attaching service level WS-RM policies to proxy services -->
<definitions xmlns="http://ws.apache.org/ns/synapse">
<proxy name="StockQuoteProxy">
<target>
Modified: webservices/synapse/trunk/java/src/site/resources/Synapse_Samples.html
URL:
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/src/site/resources/Synapse_Samples.html?view=diff&rev=540430&r1=540429&r2=540430
==============================================================================
--- webservices/synapse/trunk/java/src/site/resources/Synapse_Samples.html
(original)
+++ webservices/synapse/trunk/java/src/site/resources/Synapse_Samples.html Mon
May 21 22:57:12 2007
@@ -1210,6 +1210,192 @@
</m0:request>
</m0:getQuote>0</pre>
+<h2><a name="Sample53">Sample 53:</a></h2>
+<pre><!-- RMSequence example -->
+<definitions xmlns="http://ws.apache.org/ns/synapse">
+
+ <in>
+ <RMSequence single="true" version="1.0"/>
+ <send>
+ <endpoint name="reliable">
+ <address
uri="http://localhost:9000/soap/ReliableStockQuoteService">
+ <enableRM/>
+ <enableAddressing/>
+ </address>
+ </endpoint>
+ </send>
+ </in>
+ <out>
+ <header name="wsrm:SequenceAcknowledgement" action="remove"
+ xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"/>
+ <header name="wsrm:Sequence" action="remove"
+ xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"/>
+ <send/>
+ </out>
+
+</definitions></pre>
+<strong>Objective: Demontrate the message exchange between Synapse and the
+server using WS-ReliableMessaging (WS-RM)</strong>
+
+<p><strong>Pre-Requisites:</strong></p>
+
+<p>Deploy the ReliableStockQuoteService in the sample Axis2 server by
+switching to the samples/axis2Server/src/ReliableStockQuoteService directory
+and running ant.</p>
+
+<p>Start the sample Axis2 server on port 9000.</p>
+
+<p>Start Synapse with the sample configuration 53 (i.e. synapse -sample
+53).</p>
+
+<p></p>
+
+<p>In the above configuration, WS-RM is engaged to the endpoint using the
+<enableRM/> tag. It is possible to engage WS-RM to both Address and
+WSDL endpoints using this tag. In addition to the RM enabled endpoint,
+RMSequence mediator is specified before the send mediator. This mediator is
+used to specify the set of messages to be sent using a single RM sequence. In
+this sample it is specified as single message per sequence. It also specifies
+the version of the WS-RM to be used. Refer to the Synapse configuration
+language documentation for more information about the RMSequence mediator. RM
+related SOAP headers are removed form the message in the out mediator as
+WS-RM message exchange happens only between the Synapse and the server. Now
+run the sample client using the following command.</p>
+<pre>ant stockquote -Dsymbol=IBM -Dmode=quote
-Daddurl=http://localhost:8080</pre>
+
+<p>You can observer the client output displaying the quote price for IBM as
+follows:</p>
+<pre>[java] Standard :: Stock price = $189.2521262517493</pre>
+
+<p>There is no difference to be observed between the normal message exchange
+and WS-RM enabled message exchange as far as client and server outputs are
+considered. But if you look at the wire level messages, you would observe
+additional WS-RM messages and WS-RM elements. Synapse, the initiator of the
+RM sequence, first try to create a sequence by sending a message with
+CreateSequence element.</p>
+<pre>...
+<soapenv:Body>
+ <wsrm:CreateSequence
xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm">
+ <wsrm:AcksTo>
+
<wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>
+ </wsrm:AcksTo>
+ <wsrm:Offer>
+
<wsrm:Identifier>urn:uuid:546F6F33FB7D8BBE351179807372769</wsrm:Identifier>
+ </wsrm:Offer>
+ </wsrm:CreateSequence>
+</soapenv:Body>
+...</pre>
+
+<p>Sample Axis2 server responds to CreateSequence request with the following
+message:</p>
+<pre>...
+<soapenv:Body>
+ <wsrm:CreateSequenceResponse
xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm">
+
<wsrm:Identifier>urn:uuid:879853A6871A66641C1179807373270</wsrm:Identifier>
+ <wsrm:Accept>
+ <wsrm:AcksTo>
+
<wsa:Address>http://localhost:9000/soap/ReliableStockQuoteService</wsa:Address>
+ </wsrm:AcksTo>
+ </wsrm:Accept>
+ </wsrm:CreateSequenceResponse>
+</soapenv:Body>
+...</pre>
+
+<p>Once the sequence is estabilished, Synapse sends the request to the server
+with the pre-negotiated sequence ID.</p>
+<pre><soapenv:Envelope xmlns:wsa="http://www.w3.org/2005/08/addressing"
+ xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+ <soapenv:Header>
+
<wsa:To>http://localhost:9000/soap/ReliableStockQuoteService</wsa:To>
+
<wsa:MessageID>urn:uuid:DB9A5257B637DDA38B1179807372560712002-1515891720</wsa:MessageID>
+ <wsa:Action>urn:getQuote</wsa:Action>
+ <wsrm:Sequence xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"
+ soapenv:mustUnderstand="1">
+
<wsrm:Identifier>urn:uuid:879853A6871A66641C1179807373270</wsrm:Identifier>
+ <wsrm:MessageNumber>1</wsrm:MessageNumber>
+ <wsrm:LastMessage/>
+ </wsrm:Sequence>
+ </soapenv:Header>
+ <soapenv:Body>
+ <m0:getQuote xmlns:m0="http://services.samples/xsd">
+ <m0:request>
+ <m0:symbol>IBM</m0:symbol>
+ </m0:request>
+ </m0:getQuote>
+ </soapenv:Body>
+</soapenv:Envelope></pre>
+
+<p>Synapse keeps on sending above message till the server reponds with a
+valid response message with 200 OK HTTP header. If the server is not ready
+with a response, it will respond with 202 Accepted HTTP header for all
+requests. Once the server is ready with a response it will send the response
+message with sequence ID as follows.</p>
+<pre><soapenv:Envelope xmlns:wsa="http://www.w3.org/2005/08/addressing"
+ xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+ <soapenv:Header>
+
<wsa:MessageID>urn:uuid:879853A6871A66641C1179807373804</wsa:MessageID>
+
<wsa:Action>http://services.samples/ReliableStockQuoteServicePortType/getQuoteResponse
+ </wsa:Action>
+
<wsa:RelatesTo>urn:uuid:DB9A5257B637DDA38B1179807372560712002-1515891720</wsa:RelatesTo>
+ <wsrm:Sequence xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"
+ soapenv:mustUnderstand="1">
+
<wsrm:Identifier>urn:uuid:546F6F33FB7D8BBE351179807372769</wsrm:Identifier>
+ <wsrm:MessageNumber>1</wsrm:MessageNumber>
+ <wsrm:LastMessage/>
+ </wsrm:Sequence>
+ <wsrm:SequenceAcknowledgement
xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"
+ soapenv:mustUnderstand="1">
+
<wsrm:Identifier>urn:uuid:879853A6871A66641C1179807373270</wsrm:Identifier>
+ <wsrm:AcknowledgementRange Lower="1" Upper="1"/>
+ </wsrm:SequenceAcknowledgement>
+ </soapenv:Header>
+ <soapenv:Body>
+ <ns:getQuoteResponse xmlns:ns="http://services.samples/xsd">
+...</pre>
+
+<p>Now both Synase and the server are done with the actual message exchange.
+Then Synapse sends a request to terminate the sequence as follows:</p>
+<pre><soapenv:Envelope xmlns:wsa="http://www.w3.org/2005/08/addressing"
+ xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+ <soapenv:Header>
+
<wsa:To>http://localhost:9000/soap/ReliableStockQuoteService</wsa:To>
+
<wsa:MessageID>urn:uuid:546F6F33FB7D8BBE351179807379591</wsa:MessageID>
+
<wsa:Action>http://schemas.xmlsoap.org/ws/2005/02/rm/TerminateSequence</wsa:Action>
+ <wsrm:SequenceAcknowledgement
xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"
+ soapenv:mustUnderstand="1">
+
<wsrm:Identifier>urn:uuid:546F6F33FB7D8BBE351179807372769</wsrm:Identifier>
+ <wsrm:AcknowledgementRange Lower="1" Upper="1"/>
+ </wsrm:SequenceAcknowledgement>
+ </soapenv:Header>
+ <soapenv:Body>
+ <wsrm:TerminateSequence
xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm">
+
<wsrm:Identifier>urn:uuid:879853A6871A66641C1179807373270</wsrm:Identifier>
+ </wsrm:TerminateSequence>
+ </soapenv:Body>
+</soapenv:Envelope></pre>
+
+<p>Server reponds to the sequence termination message, accepting to terminate
+the sequence as follows.</p>
+<pre><soapenv:Envelope xmlns:wsa="http://www.w3.org/2005/08/addressing"
+ xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
+ <soapenv:Header>
+ <wsa:ReplyTo>
+
<wsa:Address>http://localhost:9000/soap/ReliableStockQuoteService</wsa:Address>
+ </wsa:ReplyTo>
+
<wsa:MessageID>urn:uuid:879853A6871A66641C1179807380190</wsa:MessageID>
+
<wsa:Action>http://schemas.xmlsoap.org/ws/2005/02/rm/TerminateSequence</wsa:Action>
+ </soapenv:Header>
+ <soapenv:Body>
+ <wsrm:TerminateSequence
xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm">
+
<wsrm:Identifier>urn:uuid:546F6F33FB7D8BBE351179807372769</wsrm:Identifier>
+ </wsrm:TerminateSequence>
+ </soapenv:Body>
+</soapenv:Envelope></pre>
+
+<p>Note that although each of above messages are separate SOAP messages, in
+most cases they will be exchanged in a single socket connection as HTTP
+Keep-Alive header is used.</p>
+
<h2><a name="Sample54">Sample 54:</a></h2>
<pre><!-- demontrates simple session less load balancing between 3
endpoints -->
<definitions xmlns="http://ws.apache.org/ns/synapse">
@@ -1945,6 +2131,57 @@
that the response received does not use WS-Security, but that the response
being forwarded back to the client is signed and encrypted as expected by the
client.</p>
+
+<h2><a name="Sample104">Sample 104:</a></h2>
+<pre><!-- attaching service level WS-RM policies to proxy services -->
+<definitions xmlns="http://ws.apache.org/ns/synapse">
+ <proxy name="StockQuoteProxy">
+ <target>
+ <inSequence>
+ <header name="wsrm:SequenceAcknowledgement" action="remove"
+
xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"/>
+ <header name="wsrm:Sequence" action="remove"
+
xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"/>
+ <send>
+ <endpoint>
+ <address
uri="http://localhost:9000/soap/SimpleStockQuoteService"/>
+ </endpoint>
+ </send>
+ </inSequence>
+ <outSequence>
+ <send/>
+ </outSequence>
+ </target>
+ <publishWSDL
uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
+ <enableRM/>
+ </proxy>
+</definitions></pre>
+<strong>Objective: Demontrate the reliable message exchange between the
+client and Synapse using WS-ReliableMessaging (WS-RM)</strong>
+
+<p><strong>Pre-Requisites:</strong></p>
+
+<p>Deploy the SimpleStockQuoteService in the sample Axis2 server and start it
+on port 9000.</p>
+
+<p>Start Synapse with the sample configuration number 104 (i.e. synapse
+-sample 104).</p>
+
+<p></p>
+
+<p>In the above configuration, a proxy service is created with WS-RM enabled
+using the <enableRM/> tag. Therefore, this proxy service is capable of
+communicating with a WS-RM client. It also removes the WS-RM headers in the
+In Sequence before the message is sent to the back end server. This is
+required as the reliable messaging is applicable only between the client and
+Synapse. Now start the client with WS-RM as follows:</p>
+<pre>ant stockquote -Dsymbol=IBM -Dmode=quote
-Daddurl=http://localhost:8081/soap/StockQuoteProxy -Dwsrm=true</pre>
+
+<p>In this case, client sends WS-RM enabled request to Synase where Synapse
+sends normal request to the server. This can be observed by examining the
+wire level messages between the client and Synapse. These messages would be
+similar to the wire level messages shown in sample 53. Each message would
+perform a similar function to the messages discussed in sample 53.</p>
<h1><a name="Transport">Transports</a></h1>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]