<?xml version="1.0"?>
<document>
<properties>
<title>Samples Guide</title></properties>
<head>
<style type="text/css" xml:space="preserve">    .command {
        border: 1px dashed #3c78b5;
        text-align: left;
        background-color: #f0f0f0;
        padding: 3px;
        font-size: 11px;
        font-family: Courier;
        margin: 10px;
        line-height: 13px;
    }
    .consoleOutput {
        border: 1px dashed #3c78b5;
        font-size: 11px;
        font-family: Courier;
        margin: 10px;
        line-height: 13px;
        background-color: #f0f0f0;
        border-bottom: 1px dashed #3c78b5;
        padding: 3px;
        border-style: solid;
    }
    .info {
        border-style: solid;
        border-width: 1px;
        border-color: #090;
        background-color: #dfd;
        text-align:left;
        margin-top: 5px;
        margin-bottom: 5px;
    }
    </style></head>
<body>
<div>
<div class="section">
<h2>Apache Synapse ESB - Running the Samples </h2></div>
<p>This guide will walk you through the built-in samples shipped with the product, which will cover most of the basic functional sceanrios and capabilities of Apache Synapse as an ESB. If you are unable to solve your problem by reading through and running these samples, feel free to raise your problem on the 
<a href="http://synapse.apache.org/mail-lists.html">mailing lists</a>.</p>
<div class="section"><h2>
<a name="TOC" id="TOC">Contents</a></h2></div>
<div class="section-content">
<ul>
<li>
<a href="Synapse_Samples_Setup.html#Overview">Overview</a></li>
<li>
<a href="#MediationSamples">Message mediation samples</a>
<ul>
<li>
<a href="#Sample0">Sample 0: Introduction to Synapse</a></li>
<li>
<a href="#Sample1">Sample 1: Simple content based routing (CBR) of messages</a></li>
<li>
<a href="#Sample2">Sample 2: CBR with the Switch-case mediator, using message properties</a></li>
<li>
<a href="#Sample3">Sample 3: Local Registry entry definitions, reusable endpoints and sequences</a></li>
<li>
<a href="#Sample4">Sample 4: Introduction to error handling</a></li>
<li>
<a href="#Sample5">Sample 5: Creating SOAP fault messages and changing the direction of a message</a></li>
<li>
<a href="#Sample6">Sample 6: Manipulating SOAP headers, and filtering incoming and outgoing messages</a></li>
<li>
<a href="#Sample7">Sample 7: Introduction to local Registry entries and using Schema validation</a></li>
<li>
<a href="#Sample8">Sample 8: Introduction to static and dynamic registry resources, and using XSLT transformations</a></li>
<li>
<a href="#Sample9">Sample 9: Introduction to dynamic sequences with the Registry</a></li>
<li>
<a href="#Sample10">Sample 10: Introduction to dynamic endpoints with the Registry</a></li>
<li>
<a href="#Sample11">Sample 11: A full registry based configuration, and sharing a configuration between multiple instances</a></li>
<li>
<a href="#Sample12">Sample 12: One way messaging / fireAndForget through Synapse</a></li>
<li>
<a href="#Sample13">Sample 13: Dual channel invocation through Synapse</a></li>
<li>
<a href="#Sample13">Sample 14: Sequences and Endpoints as local registry items</a></li></ul></li>
<li>
<a href="#Endpoints">Advanced mediations with endpoints</a>
<ul>
<li>
<a href="#Sample50">Sample 50: POX to SOAP conversion</a></li>
<li>
<a href="#Sample51">Sample 51: MTOM and SwA optimizations and request/response correlation</a></li>
<li>
<a href="#Sample52">Sample 52: Session less load balancing between 3 endpoints</a></li>
<li>
<a href="#Sample53">Sample 53: Failover sending among 3 endpoints</a></li>
<li>
<a href="#Sample54">Sample 54: Session affinity load balancing between 3 endpoints</a></li>
<li>
<a href="#Sample55">Sample 55: Session affinity load balancing between fail over endpoints</a></li>
<li>
<a href="#Sample56">Sample 56: WSDL endpoint</a></li>
<li>
<a href="#Sample57">Sample 57: Dynamic load balancing between 3 nodes</a></li>
<li>
<a href="#Sample58">Sample 58: Static load balancing between 3 nodes</a></li></ul></li>
<li>
<a href="#MessageMediationQoS">Quality of Service addition or deduction samples in message mediation</a>
<ul>
<li>
<a href="#Sample100">Sample 100: Using WS-Security for outgoing messages</a></li>
<li>
<a href="#Sample101">Sample 101: Reliable message exchange between Synapse and the back-end server using WS-ReliableMessaging 1.0</a></li>
<li>
<a href="#Sample101">Sample 102: Reliable message exchange between Synapse and the back-end server using WS-ReliableMessaging 1.1</a></li></ul></li>
<li>
<a href="#ProxyServices">Synapse Proxy service samples</a>
<ul>
<li>
<a href="#Sample150">Sample 150: Introduction to proxy services</a></li>
<li>
<a href="#Sample151">Sample 151: Custom sequences and endpoints with proxy services</a></li>
<li>
<a href="#Sample152">Sample 152: Switching transports and message format from SOAP to REST/POX</a></li>
<li>
<a href="#Sample153">Sample 153: Routing the messages arrived to a proxy service without processing the security headers</a></li>
<li>
<a href="#Sample154">Sample 154: Load Balancing with Proxy Service </a></li>
<li>
<a href="#Sample155">Sample 155: Dual channel invocation on both client side and server side of Synapse with Proxy Services</a></li></ul></li>
<li>
<a href="#ProxyServiceQoS">QoS addition and deduction for service mediation (proxy) samples</a>
<ul>
<li>
<a href="#Sample200">Sample 200: Using WS-Security with policy attachments for proxy services</a></li>
<li>
<a href="#Sample201">Sample 201: Reliable message exchange between the client and proxy services using WS-ReliableMessaging</a></li></ul></li>
<li>
<a href="#Transport">Transport samples and switching transports</a>
<ul>
<li>
<a href="#Sample250">Sample 250: Introduction to switching transports - JMS to http/s</a></li>
<li>
<a href="#Sample251">Sample 251: Switching from http/s to JMS</a></li>
<li>
<a href="#Sample252">Sample 252: Pure text/binary and POX message support with JMS</a></li>
<li>
<a href="#Sample253">Sample 253: One way bridging from JMS to http and replying with a 202 Accepted response</a></li>
<li>
<a href="#Sample254">Sample 254: Using the file system as transport medium using VFS transport listener and sender</a></li>
<li>
<a href="#Sample255">Sample 255: Switching from ftp transport listener to mail transport sender</a></li>
<li>
<a href="#Sample256">Sample 256: Proxy services with the mail transport</a></li>
<li>
<a href="#Sample257">Sample 257: Proxy services with the FIX transport</a></li>
<li>
<a href="#Sample258">Sample 258: Switching from HTTP to FIX </a></li>
<li>
<a href="#Sample259">Sample 259: Switching from FIX to HTTP </a></li>
<li>
<a href="#Sample260">Sample 260: Switching from FIX to AMQP </a></li>
<li>
<a href="#Sample261">Sample 261: Switch between FIX versions </a></li>
<li>
<a href="#Sample262">Sample 262: CBR of FIX messages </a></li>
<li>
<a href="#Sample263">Sample 263: Transport switching - JMS to http/s using JBoss Messaging(JBM) </a></li>
<li>
<a href="#Sample264">Sample 264: Transport switching - HTTP/S to JMS two way messages</a></li>
<li>
<a href="#Sample265">Sample 265: Switching from TCP to HTTP/S</a></li>
<li>
<a href="#Sample266">Sample 266: Switching from UDP to HTTP/S</a></li>    
</ul></li>
<li>
<a href="#Task">Introduction to Synapse tasks</a>
<ul>
<li>
<a href="#Sample300">Sample 300: Introduction to tasks with simple trigger</a></li></ul></li>
<li>
<a href="#AdvancedMediation">Advanced mediations with advanced mediators</a>
<ul>
<li>
<a href="#ScriptMediator">Using scripts in mediation (Script Mediator)</a>
<ul>
<li>
<a href="#Sample350">Sample 350: Introduction to the script mediator using js scripts</a></li>
<li>
<a href="#Sample351">Sample 351: In-line script mediation with JavaScript</a></li>
<li>
<a href="#Sample352">Sample 352: Accessing Synapse message context API methods using scripting language</a></li>
<li>
<a href="#Sample353">Sample 353: Using Ruby scripts for mediation</a></li>
<li>
<a href="#Sample354">Sample 354: Using In-lined Ruby scripts for mediation</a></li></ul></li>
<li>
<a href="#DBMediators">Database interactions in mediation (DBLookup / DBReport)</a>
<ul>
<li>
<a href="#Sample360">Sample 360: Introduction to dblookup mediator</a></li>
<li>
<a href="#Sample361">Sample 361: Introduction to dbreport mediator</a></li>
<li>
<a href="#Sample362">Sample 362: Action of dbreport and dblookup mediators together</a></li>
<li>
<a href="#Sample363">Sample 363: Reusable database connection pools</a></li>
<li>
<a href="#Sample364">Sample 364: Executing database Stored Procedures</a></li></ul></li>
<li>
<a href="#Throttle">Throttling messages (Throttle Mediator)</a>
<ul>
<li>
<a href="#Sample370">Sample 370: Introduction to throttle mediator and concurrency throttling</a></li>
<li>
<a href="#Sample371">Sample 371: Restricting requests based on policies</a></li>
<li>
<a href="#Sample372">Sample 372: Use of both concurrency throttling and request rate based throttling </a></li></ul></li>
<li>
<a href="#Class">Extending the mediation in java (Class Mediator)</a>
<ul>
<li>
<a href="#Sample380">Sample 380: Writing your own custom mediation in Java</a></li>
<li>
<a href="#Sample381">Sample 381: Class mediator to CBR binary messages</a></li></ul></li>
<li>
<a href="#XQuery">Evaluating XQuery for mediation (XQuery Mediator)</a>
<ul>
<li>
<a href="#Sample390">Sample 390: Introduction to the XQuery mediator</a></li>
<li>
<a href="#Sample391">Sample 391: How to use the data from an external XML document with in XQuery </a></li></ul></li>
<li>
<a href="#Splitter">Splitting messages in to parts and process in parallel (Iterate / Clone)</a>
<ul>
<li>
<a href="#Sample400">Sample 400: Message splitting and aggregating the responses</a></li></ul></li>
<li>
<a href="#Cache">Caching the responses over the requests</a>
<ul>
<li>
<a href="#Sample420">Sample 420: Simple cache implemented on Synapse for the actual service</a></li></ul></li>
<li>
<a href="#Callout">Synchronized Web Service invocations with Callout mediator</a>
<ul>
    <li>
    <a href="#Sample430">Sample 430: Simple Callout Mediator for synchronize web service invocation</a></li>
</ul>
</li>
<li>
<a href="#Sample440">Mediating JSON Messages</a>
<ul>
    <li><a href="#Sample440">Sample 440: Exposing a SOAP service over JSON</a></li>
</ul></li>
<li><a href="#Sample450">URL Rewrite Mediator</a>
<ul>
<li>
<a href="#Sample450">Sample 450: Introduction to the URL Rewrite mediator</a></li>
<li>
<a href="#Sample451">Sample 451: Conditional URL rewriting</a></li>
<li>
<a href="#Sample452">Sample 452: Conditional URL rewriting with multiple rules</a></li>
<li>
<a href="#Sample460">Sample 460: How to initialize and use a Spring Bean as a Mediator</a></li>
</ul>
</li></ul></li>
        <li>
          <a href="#Task">Introduction to Eventing</a>
          <ul>
            <li>
              <a href="#Sample500">Sample 500: Introduction to Eventing</a>
            </li>
            <li>
              <a href="#Sample501">Sample 501: EventSource with static subscriptions</a>
            </li>
            <li>
              <a href="#Sample502">Sample 502: Transform events before publish</a>
            </li>
          </ul>
        </li>
        <li>
            <a href="#Misc">Miscellaneous Samples</a>
            <ul>
                <li>
                    <a href="#Sample600">Sample 600: File hierarchy based configuration builder</a>
                </li>
                <li>
                    <a href="#Sample601">Sample 601: Using Synapse Observers</a>
                </li>
                <li>
                    <a href="#Sample650">Sample 650: Priority based Mediation</a>
                </li>
                <li>
                    <a href="#Sample651">Sample 651: NHTTP Transport Priority based dispatching</a>
                </li>
                <li>
                    <a href="#Sample652">Sample 652: Distributed transaction management</a>
                </li>
            </ul>
        </li>
        <li>
            <a href="#MessageStore">Synapse Message Stores (Dead Letter Channel)</a>
            <ul>
                <li>
                    <a href="#Sample700">Sample 700: Introduction to Synapse Message Store </a>
                </li>
            </ul>
        </li>
</ul></div>
<h1>
<a name="MediationSamples" id="MediationSamples">Message Mediation Samples</a> </h1>
<div class="section"><h2>
<a name="Sample0" id="Sample0">Sample 0: Introduction to Synapse</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;!-- log all attributes of messages passing through -->
        &lt;log level="full"/>

        &lt;!-- Send the message to implicit destination -->
        &lt;send/>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Introduction to Synapse. Shows how a message could be made to pass through Synapse </strong>
<strong>and logged before it is delivered to its ultimate receiver.</strong> </p>
<p>The Stock quote client can operate in the following modes for this example. </p>
<ol>
<li>Smart Client mode </li>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ </pre>
<li>Using Synapse as a HTTP Proxy </li>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dprxurl=http://localhost:8280/</pre>
<li>Gateway Mode / Dumb Client </li>
<p>See sample # 1 </p></ol>
<p>
<strong>Prerequisites:
<br/> </strong>Start the Synapse configuration numbered 0: e.g. synapse -sample 0
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService if not already deployed </p>
<p>
<strong>Execute the Smart Client </strong> </p>
<p>By tracing the execution of Synapse with the log output level set to DEBUG, you will see the client request arriving at Synapse with a WS-Addressing 'To' set to EPR http://localhost:9000/services/SimpleStockQuoteService. The Synapse engine logs the message at the &quot;full&quot; log level (i.e. all the message headers and the body) then sends the message to its implicit 'To' address which is http://localhost:9000/services/SimpleStockQuoteService. You will see a message in the Axis2 server console confirming that the message got routed to the sample server and the sample service hosted at the sample server generating a stock quote for the requested symbol. </p>
<pre xml:space="preserve">Sat Nov 18 21:01:23 IST 2006 SimpleStockQuoteService :: Generating quote for : IBM</pre>
<p>The response message generated by the service is again received by Synapse, and flows through the same mediation rules, which logs the response message and then sends it back. This time to the client. On the client console you should see an output similar to the following based on the message received by the client. </p>
<pre xml:space="preserve">Standard :: Stock price = $95.26454380258552</pre>
<p>
<strong>Execute the Proxy Client </strong> </p>
<p>You will see the exact same behaviour as per the previous example when you run this scenario. However this time the difference is at the client, as it sends the message to the WS-Addressing 'To' address http://localhost:9000/services/SimpleStockQuoteService, but the transport specifies Synapse as the HTTP proxy. </p>
<div class="section"><h2>
<a name="Sample1" id="Sample1">Sample 1: Simple content based routing (CBR) of messages</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;!-- filtering of messages with XPath and regex matches -->
        &lt;filter source="get-property('To')" regex=".*/StockQuote.*">
            &lt;then>
                &lt;send>
                    &lt;endpoint>
                        &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                    &lt;/endpoint>
                &lt;/send>
                &lt;drop/>
            &lt;/then>
        &lt;/filter>
        &lt;send/>
    &lt;/sequence>

&lt;/definitions> </pre>
<p>
<strong>Objective: Introduction to simple content based routing. Shows how a message could be made to pass through Synapse using the Dumb Client mode, where Synapse acts as a gateway to accept all messages and then perform mediation and routing based on message properties or content.</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>Start the Synapse configuration numbered 1: i.e. synapse -sample 1
<br/>Start the Axis2 server and deploy the SimpleStockQuoteService if not already deployed</p>
<p>Execute the Dumb Client as: </p>
<pre xml:space="preserve">ant stockquote -Dtrpurl=http://localhost:8280/services/StockQuote</pre>

<p>This time you will see Synapse receiving a message for which Synapse was set as the ultimate receiver
of the message. Based on the 'To' EPR of http://localhost:8280/services/StockQuote, Synapse performs a
match to the path '/StockQuote' and as the request matches the XPath expression of the filter mediator,
the filter mediator's child mediators execute. This sends the message to a different endpoint as
specified by the endpoint definition. The 'drop' mediator terminates further processing of the current
message in a configuration. During response processing, the filter condition fails, and thus the 'send'
mediator forwards the response back to the client using the implicit 'To' address. </p>
    
<div class="section"><h2>
<a name="Sample2" id="Sample2">Sample 2: CBR with the Switch-case mediator, using message properties</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;switch source="//m0:getQuote/m0:request/m0:symbol" xmlns:m0="http://services.samples">
            &lt;case regex="IBM">
                &lt;!-- the property mediator sets a local property on the *current* message -->
                &lt;property name="symbol" value="Great stock - IBM"/>
            &lt;/case>
            &lt;case regex="MSFT">
                &lt;property name="symbol" value="Are you sure? - MSFT"/>
            &lt;/case>
            &lt;default>
                &lt;!-- it is possible to assign the result of an XPath expression as well -->
                &lt;property name="symbol" expression="fn:concat('Normal Stock - ', //m0:getQuote/m0:request/m0:symbol)"/>
            &lt;/default>
        &lt;/switch>
        &lt;log level="custom">
            &lt;!-- the get-property() XPath extension function allows the lookup of local message properties
                        as well as properties from the Axis2 or Transport contexts (i.e. transport headers) -->
            &lt;property name="symbol" expression="get-property('symbol')"/>
            &lt;!-- the get-property() function supports the implicit message headers To/From/Action/FaultTo/ReplyTo -->
            &lt;property name="epr" expression="get-property('To')"/>
        &lt;/log>
        &lt;!-- Send the messages where they are destined to (i.e. the 'To' EPR of the message) -->
        &lt;send/>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Introduce switch-case mediator and writing and reading of local properties set on a message instance</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Start the Synapse configuration numbered 2: i.e. synapse -sample 2
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService if not already done. </p>
<p>Execute the 'ant stockquote ..' request again in the smart client mode, specifying 'IBM', 'MSFT' and 'SUN' as the stock symbols. When the symbol IBM is requested, viewing the mediation logs you will see that the case statements' first case for 'IBM' is executed and a local property named 'symbol' was set to 'Great stock - IBM'. Subsequently this local property value is looked up by the log mediator and logged using the 'get-property()' XPath extension function. </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dsymbol=IBM</pre>
<pre xml:space="preserve">      INFO LogMediator - symbol = Great stock - IBM, epr = http://localhost:9000/axis2/services/SimpleStockQuoteService </pre>
<pre>ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dsymbol=MSFT</pre>
<pre xml:space="preserve">      INFO LogMediator - symbol = Are you sure? - MSFT, epr = http://localhost:9000/axis2/services/SimpleStockQuoteService</pre>
<div class="section"><h2>
<a name="Sample3" id="Sample3">Sample 3: Local Registry entry definitions, reusable endpoints and sequences</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">
    &lt;!-- define a string resource entry to the local registry -->
    &lt;localEntry key="version">0.1&lt;/localEntry>
    &lt;!-- define a reuseable endpoint definition -->
    &lt;endpoint name="simple">
        &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
    &lt;/endpoint>

    &lt;!-- define a reusable sequence -->
    &lt;sequence name="stockquote">
        &lt;!-- log the message using the custom log level. illustrates custom properties for log -->
        &lt;log level="custom">
            &lt;property name="Text" value="Sending quote request"/>
            &lt;property name="version" expression="get-property('version')"/>
            &lt;property name="direction" expression="get-property('direction')"/>
        &lt;/log>
        &lt;!-- send message to real endpoint referenced by key "simple" endpoint definition -->
        &lt;send>
            &lt;endpoint key="simple"/>
        &lt;/send>
    &lt;/sequence>

    &lt;sequence name="main">
        &lt;in>
            &lt;property name="direction" value="incoming"/>
            &lt;sequence key="stockquote"/>
        &lt;/in>
        &lt;out>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>
&lt;/definitions></pre>
<p>
<strong>Objective: Illustrates local registry entry definitions, reusable endpoints and sequences</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Start the Synapse configuration numbered 3: i.e. synapse -sample 3
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService if not already done </p>
<p>This example uses a sequence named as &quot;main&quot; that specifies the main mediation rules to be executed. This is equivalent to directly specifying the mediators of the main sequence within the &lt;definitions&gt; tags. This is the recommended and also a better approach for non-trivial configurations. Execute the 'ant stockquote ..' request again, and following through the mediation logs you will now notice that the sequence named &quot;main&quot; is executed. Then for the incoming message flow the &lt;in&gt; mediator executes, and it calls the sequence named &quot;stockquote&quot;. </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/</pre>
<pre xml:space="preserve">DEBUG SequenceMediator - Sequence mediator &lt;main&gt; :: mediate()
<br/>DEBUG InMediator - In mediator mediate()
<br/>DEBUG SequenceMediator - Sequence mediator &lt;stockquote&gt; :: mediate()</pre>
<p>As the &quot;stockquote&quot; sequence executes, the log mediator dumps a simple text/string property, result of an XPath evaluation, that picks up the key named &quot;version&quot;, and a second result of an XPath evaluation that picks up a local message property set previously by the &lt;property&gt; mediator. The get-property() XPath extension function is able to read message properties local to the current message, local or remote registry entries, Axis2 message context properties as well as transport headers. The local entry definition for &quot;version&quot; defines a simple text/string registry entry for that which is visible to all messages that pass through Synapse. </p>
<pre xml:space="preserve">[HttpServerWorker-1] INFO  LogMediator - Text = Sending quote request, version = 0.1, direction = incoming
[HttpServerWorker-1] DEBUG SendMediator - Send mediator :: mediate()
[HttpServerWorker-1] DEBUG AddressEndpoint - Sending To: http://localhost:9000/services/SimpleStockQuoteService </pre>
<div class="section"><h2>
<a name="Sample4" id="Sample4">Sample 4: Introduction to error handling</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;!-- the default fault handling sequence used by Synapse - named 'fault' -->
    &lt;sequence name="fault">
        &lt;log level="custom">
            &lt;property name="text" value="An unexpected error occured"/>
            &lt;property name="message" expression="get-property('ERROR_MESSAGE')"/>
        &lt;/log>
        &lt;drop/>
    &lt;/sequence>

    &lt;sequence name="sunErrorHandler">
        &lt;log level="custom">
            &lt;property name="text" value="An unexpected error occured for stock SUN"/>
            &lt;property name="message" expression="get-property('ERROR_MESSAGE')"/>
            &lt;!--&lt;property name="detail" expression="get-property('ERROR_DETAIL')"/>-->
        &lt;/log>
        &lt;drop/>
    &lt;/sequence>

    &lt;sequence name="main">
        &lt;in>
            &lt;switch xmlns:m0="http://services.samples" source="//m0:getQuote/m0:request/m0:symbol">
                &lt;case regex="IBM">
                    &lt;send>
                        &lt;endpoint>
                            &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                        &lt;/endpoint>
                    &lt;/send>
                &lt;/case>
                &lt;case regex="MSFT">
                    &lt;send>
                        &lt;endpoint key="bogus"/>
                    &lt;/send>
                &lt;/case>
                &lt;case regex="SUN">
                    &lt;sequence key="sunSequence"/>
                &lt;/case>
            &lt;/switch>
            &lt;drop/>
        &lt;/in>

        &lt;out>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

    &lt;sequence name="sunSequence" onError="sunErrorHandler">
        &lt;send>
            &lt;endpoint key="sunPort"/>
        &lt;/send>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Introduction to error handling with the 'fault' sequence</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Start the Synapse configuration numbered 4: i.e. synapse -sample 4
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService if not already done </p>
<p>When the IBM stock quote is requested, the configuration routes it to the defined in-line endpoint, which routes the message to the SimpleStockQuoteService on the local Axis2 instance. Hence a valid response message is shown at the client. </p>
<p>If you lookup a stock quote for 'MSFT', Synapse is instructed to route the message to the endpoint defined as the 'bogus' endpoint, which does not exist. Synapse executes the specified error handler sequence closest to the point where the error was encountered. In this case, the currently executing sequence is 'main' and it does not specify an 'onError' attribute. Whenever Synapse cannot find an error handler, it looks for a sequence named 'fault'. Thus the 'fault' sequence can be seen executing, and writing the generic error message to the logs. </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dsymbol=MSFT</pre>
<pre xml:space="preserve">[HttpServerWorker-1] DEBUG SendMediator - Send mediator :: mediate()
[HttpServerWorker-1] ERROR IndirectEndpoint - Reference to non-existent endpoint for key : bogus
[HttpServerWorker-1] DEBUG MediatorFaultHandler - MediatorFaultHandler :: handleFault
[HttpServerWorker-1] DEBUG SequenceMediator - Sequence mediator &lt;fault&gt; :: mediate()
[HttpServerWorker-1] DEBUG LogMediator - Log mediator :: mediate()
[HttpServerWorker-1] INFO LogMediator text = An unexpected error occured, message = Couldn't find the endpoint with the key : bogus</pre>
<p>When the 'SUN' quote is requested, a custom sequence 'sunSequence' is invoked, and it specifies 'sunErrorHandler' as its error handler. Hence when the send fails, you could see the proper error handler invocation and the custom error message printed as follows. </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dsymbol=SUN</pre>
<pre xml:space="preserve">[HttpServerWorker-1] DEBUG SequenceMediator - Sequence mediator &lt;sunSequence&gt; :: mediate()
[HttpServerWorker-1] DEBUG SequenceMediator - Setting the onError handler for the sequence
[HttpServerWorker-1] DEBUG AbstractListMediator - Implicit Sequence &lt;SequenceMediator&gt; :: mediate()
[HttpServerWorker-1] DEBUG SendMediator - Send mediator :: mediate()
[HttpServerWorker-1] ERROR IndirectEndpoint - Reference to non-existent endpoint for key : sunPort
[HttpServerWorker-1] DEBUG MediatorFaultHandler - MediatorFaultHandler :: handleFault
[HttpServerWorker-1] DEBUG SequenceMediator - Sequence mediator &lt;sunErrorHandler&gt; :: mediate()
[HttpServerWorker-1] DEBUG AbstractListMediator - Implicit Sequence &lt;SequenceMediator&gt; :: mediate()
[HttpServerWorker-1] DEBUG LogMediator - Log mediator :: mediate()
[HttpServerWorker-1] INFO LogMediator text = An unexpected error occured for stock SUN, message = Couldn't find the endpoint with the key : sunPort</pre>
<div class="section"><h2>
<a name="Sample5" id="Sample5">Sample 5: Creating SOAP fault messages and changing the direction of a message</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="myFaultHandler">
        &lt;makefault response="true">
			&lt;code xmlns:tns="http://www.w3.org/2003/05/soap-envelope" value="tns:Receiver"/>
            &lt;reason expression="get-property('ERROR_MESSAGE')"/>
        &lt;/makefault>
        &lt;send/>
    &lt;/sequence>

    &lt;sequence name="main" onError="myFaultHandler">
        &lt;in>
            &lt;switch xmlns:m0="http://services.samples" source="//m0:getQuote/m0:request/m0:symbol">
                &lt;case regex="MSFT">
                    &lt;send>
                        &lt;endpoint>
                            &lt;address uri="http://bogus:9000/services/NonExistentStockQuoteService"/>
                        &lt;/endpoint>
                    &lt;/send>
                &lt;/case>
                &lt;case regex="SUN">
                    &lt;send>
                        &lt;endpoint>
                            &lt;address uri="http://localhost:9009/services/NonExistentStockQuoteService"/>
                        &lt;/endpoint>
                    &lt;/send>
                &lt;/case>
            &lt;/switch>
            &lt;drop/>
        &lt;/in>

        &lt;out>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Makefault mediator and sending back error responses </strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Start the Synapse configuration numbered 5: i.e. synapse -sample 5
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService if not already done </p>
<p>When the MSFT stock quote is requested, an unknown host exception would be generated. A connection refused exception would be generated for the SUN stock request. This error message is captured and returned to the original client as a SOAP fault in this example. </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dsymbol=MSFT</pre>
<p>returns, </p>
<pre xml:space="preserve">&lt;soapenv:Fault xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&gt;&lt;faultcode&gt;soapenv:Client&lt;/faultcode&gt;
    &lt;faultstring&gt;java.net.UnknownHostException: bogus&lt;/faultstring&gt;&lt;detail /&gt;&lt;/soapenv:Fault&gt;</pre>
<p>And </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dsymbol=SUN</pre>
<p>returns, </p>
<pre xml:space="preserve">&lt;soapenv:Fault xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&gt;&lt;faultcode&gt;soapenv:Client&lt;/faultcode&gt;
    &lt;faultstring&gt;java.net.ConnectException: Connection refused&lt;/faultstring&gt;&lt;detail /&gt;&lt;/soapenv:Fault&gt;</pre>
<div class="section"><h2>
<a name="Sample6" id="Sample6">Sample 6: Manipulating SOAP headers, and filtering incoming and outgoing messages</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;in>
            &lt;header name="To" value="http://localhost:9000/services/SimpleStockQuoteService"/>
        &lt;/in>
        &lt;send/>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Introduction to header, in (out) mediators</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Start the Synapse configuration numbered 6: i.e. synapse -sample 6
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService if not already done </p>
<p>In this example we use the stockquote client in the dumb client mode, setting the 'To' EPR of the message to Synapse. Then the 'in' mediator processes the incoming messages, and manipulates the 'To' header to refer to the stock quote service on the sample Axis2 server. Thus it is now possible to request for a stock quote as follows. </p>
<pre xml:space="preserve">ant stockquote -Dtrpurl=http://localhost:8280/</pre>
<div class="section"><h2>
<a name="Sample7" id="Sample7">Sample 7: Introduction to local Registry entries and using Schema validation</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;in>
            &lt;validate>
                &lt;schema key="validate_schema"/>
                &lt;on-fail>
                    &lt;!-- if the request does not validate againt schema throw a fault -->
                    &lt;makefault response="true">
                        &lt;code xmlns:tns="http://www.w3.org/2003/05/soap-envelope" value="tns:Receiver"/>
                        &lt;reason value="Invalid custom quote request"/>
                    &lt;/makefault>
                &lt;/on-fail>
            &lt;/validate>
        &lt;/in>
        &lt;send/>
    &lt;/sequence>

    &lt;localEntry key="validate_schema">
        &lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
                   xmlns="http://services.samples" elementFormDefault="qualified"
                   attributeFormDefault="unqualified" targetNamespace="http://services.samples">
            &lt;xs:element name="getQuote">
                &lt;xs:complexType>
                    &lt;xs:sequence>
                        &lt;xs:element name="request">
                            &lt;xs:complexType>
                                &lt;xs:sequence>
                                    &lt;xs:element name="stocksymbol" type="xs:string"/>
                                &lt;/xs:sequence>
                            &lt;/xs:complexType>
                        &lt;/xs:element>
                    &lt;/xs:sequence>
                &lt;/xs:complexType>
            &lt;/xs:element>
        &lt;/xs:schema>
    &lt;/localEntry>

&lt;/definitions></pre>
<p>
<strong>Objective: Introduction to local (static) registry entries and the validate mediator</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Start the Synapse configuration numbered 7: i.e. synapse -sample 7
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService if not already done </p>
<p>This example shows how a static XML fragment could be made available to the Synapse local registry. Resources defined in the local registry are static (i.e. never changes over the lifetime of the configuration) and may be specified as a source URL, in-line text or in-line xml. In this example the schema is made available under the key 'validate_schema'. </p>
<p>The validate mediator by default operates on the first child element of the SOAP body. You may specify an XPath expression using the 'source' attribute to override this behaviour. The validate mediator now uses the 'validate_schema' resource to validate the incoming message, and if the message validation fails it invokes the 'on-fail' sequence of mediators. </p>
<p>If you send a stockquote request using 'ant stockquote ...' you will get a fault back with the message 'Invalid custom quote request' as the schema validation failed. This is because the schema used in the example expects a slightly different message than what is created by the stock quote client. (i.e. expects a 'stocksymbol' element instead of 'symbol' to specify the stock symbol) </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/</pre>
<div class="section"><h2>
<a name="Sample8" id="Sample8">Sample 8: Introduction to static and dynamic registry resources, and using XSLT transformations</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;!-- the SimpleURLRegistry allows access to a URL based registry (e.g. file:/// or http://) -->
    &lt;registry provider="org.apache.synapse.registry.url.SimpleURLRegistry">
        &lt;!-- the root property of the simple URL registry helps resolve a resource URL as root + key -->
        &lt;parameter name="root">file:repository/conf/sample/resources/&lt;/parameter>
        &lt;!-- all resources loaded from the URL registry would be cached for this number of milli seconds -->
        &lt;parameter name="cachableDuration">15000&lt;/parameter>
    &lt;/registry>

    &lt;!-- define the request processing XSLT resource as a static URL source -->
    &lt;localEntry key="xslt-key-req" src="file:repository/conf/sample/resources/transform/transform.xslt"/>

    &lt;sequence name="main">
        &lt;in>
            &lt;!-- transform the custom quote request into a standard quote requst expected by the service -->
            &lt;xslt key="xslt-key-req"/>
        &lt;/in>
        &lt;out>
            &lt;!-- transform the standard response back into the custom format the client expects -->
            &lt;!-- the key is looked up in the remote registry and loaded as a 'dynamic' registry resource -->
            &lt;xslt key="transform/transform_back.xslt"/>
        &lt;/out>
        &lt;send/>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Introduction to static and dynamic registry resources and the XSLT mediator</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Start the Synapse configuration numbered 8: i.e. synapse -sample 8
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService if not already done </p>
<p>This example uses the XSLT mediator to perform transformations, and the xslt transformations are specified as registry resources. The first resource 'xslt-key-req' is specified as a 'local' registry entry. Local entries do not place the resource on the registry, but simply make it available to the local configuration. If a local entry is defined with a key that already exists in the remote registry, the local entry will get higher preference and override the remote resource. </p>
<p>In this example you will notice the new 'registry' definition. Synapse comes with a simple URL based registry implementation SimpleURLRegistry. During initialization of the registry, the SimpleURLRegistry expects to find a property named 'root', which specifies a prefix for the registry keys used later. When the SimpleURLRegistry is used, this root is prefixed to the entry keys to form the complete URL for the resource being looked up. The registry caches a resource once requested, and caches it internally for a specified duration. Once this period expires, it will reload the meta information about the resource and reload its cached copy if necessary, the next time the resource is requested. </p>
<p>Hence the second XSLT resource key 'transform/transform_back.xslt' concatenated with the 'root' of the SimpleURLRegistry 'file:repository/conf/sample/resources/' forms the complete URL of the resource as 'file:repository/conf/sample/resources/transform/transform_back.xslt' and caches its value for a period of 15000 ms. </p>
<p>Execute the custom quote client as 'ant stockquote -Dmode=customquote ...' and analyze the the Synapse debug log output </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dmode=customquote</pre>
<p>The incoming message is now transformed into a standard stock quote request as expected by the SimpleStockQuoteService deployed on the local Axis2 instance, by the XSLT mediator. The XSLT mediator uses Xalan-J to perform the transformations. It is possible to configure the underlying transformation engine using properties where necessary. The response from the SimpleStockQuoteService is converted back into the custom format as expected by the client during the out message processing. </p>
<p>During the response processing you could see the SimpleURLRegistry fetching the resource as shown by the log message below </p>
<pre xml:space="preserve">[HttpClientWorker-1] DEBUG SimpleURLRegistry ==&gt; Repository fetch of resource with key : transform/transform_back.xslt</pre>
<p>If you run the client again immediately (i.e within 15 seconds of the first request) you will not see the resource being reloaded by the registry as the cached value would be still valid. </p>
<p>However if you leave the system idle for 15 seconds or more and then retry the same request, you will now notice that the registry noticed the cached resource has expired and will check the meta information about the resource to check if the resource itself has changed and will require a fresh fetch from the source URL. If the meta data / version number indicates that a reload of the cached resource is not necessary (i.e. unless the resource itself actually changed) the updated meta information is used and the cache lease extended as appropriate. </p>
<pre xml:space="preserve">[HttpClientWorker-1] DEBUG AbstractRegistry - Cached object has expired for key : transform/transform_back.xslt
[HttpClientWorker-1] DEBUG SimpleURLRegistry - Perform RegistryEntry lookup for key : transform/transform_back.xslt
[HttpClientWorker-1] DEBUG AbstractRegistry - Expired version number is same as current version in registry
[HttpClientWorker-1] DEBUG AbstractRegistry - Renew cache lease for another 15s </pre>
<p>Now edit the repository/conf/sample/resources/transform/transform_back.xslt file and add a blank line at the end. Now when you run the client again, and if the cache is expired, the resource would be re-fetched from its URL by the registry and this can be seen by the following debug log messages </p>
<pre xml:space="preserve">[HttpClientWorker-1] DEBUG AbstractRegistry - Cached object has expired for key : transform/transform_back.xslt
[HttpClientWorker-1] DEBUG SimpleURLRegistry - Perform RegistryEntry lookup for key : transform/transform_back.xslt
[HttpClientWorker-1] INFO  SimpleURLRegistry - ==&gt; Repository fetch of resource with key : transform/transform_back.xslt </pre>
<p>Thus the SimpleURLRegistry allows resource to be cached, and updates detected so that the changes could be reloaded without restarting the Synapse instance. </p>
<div class="section"><h2>
<a name="Sample9" id="Sample9">Sample 9: Introduction to dynamic sequences with the Registry</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;registry provider="org.apache.synapse.registry.url.SimpleURLRegistry">
        &lt;parameter name="root">file:./repository/conf/sample/resources/&lt;/parameter>
        &lt;parameter name="cachableDuration">15000&lt;/parameter>
    &lt;/registry>

    &lt;sequence name="main">
        &lt;sequence key="sequence/dynamic_seq_1.xml"/>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Introduction to dynamic sequences with a registry</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Start the Synapse configuration numbered 9: i.e. synapse -sample 9
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService if not already done </p>
<p>This example introduces the dynamic behaviour of Synapse through the use of a registry. Synapse supports dynamic definitions for sequences and endpoints, and as seen before, for resources. In this example we define a Synapse configuration which references a sequence definition specified as a registry key. The registry key resolves to the actual content of the sequence which would be loaded dynamically by Synapse at runtime, and cached appropriately as per its definition in the registry. Once the cache expires, Synapse would re-check the meta information for the definition and re-load the sequence definition if necessary and re-cache it again. </p>
<p>Once Synapse is started, execute the stock quote client as 'ant stockquote..'. You will notice that that Synapse fetches the definition of the sequence from the registry and executes its rules as follows: </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/</pre>
<pre xml:space="preserve">[HttpServerWorker-1] DEBUG  SimpleURLRegistry - ==&gt; Repository fetch of resource with key : sequence/dynamic_seq_1.xml
...
[HttpServerWorker-1] DEBUG SequenceMediator - Sequence mediator &lt;dynamic_sequence&gt; :: mediate()
...
[HttpServerWorker-1] INFO  LogMediator - message = *** Test Message 1 ***</pre>
<p>Now if you execute the client immediately (i.e. within 15 seconds of the last execution) you will notice that the sequence was not reloaded. If you edit the sequence definition in repository/conf/sample/resources/sequence/dynamic_seq_1.xml (i.e. edit the log message to read as &quot;*** Test Message 2 ***&quot;) and execute the client again, you will notice that the new message is not yet visible (i.e. if you execute this within 15 seconds of loading the resource for the first time) However, after 15 seconds elapsed since the original caching of the sequence, you will notice that the new sequence is loaded and executed by Synapse from the following log messages. </p>
<pre xml:space="preserve">[HttpServerWorker-1] DEBUG  SimpleURLRegistry - ==&gt; Repository fetch of resource with key : sequence/dynamic_seq_1.xml
...
[HttpServerWorker-1] DEBUG SequenceMediator - Sequence mediator &lt;dynamic_sequence&gt; :: mediate()
...
[HttpServerWorker-1] INFO  LogMediator - message = *** Test Message 2 ***</pre>
<p>The cache timeout could be tuned appropriately by configuring the URL registry to suit the environment and the needs. </p>
<div class="section"><h2>
<a name="Sample10" id="Sample10">Sample 10: Introduction to dynamic endpoints with the Registry</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;registry provider="org.apache.synapse.registry.url.SimpleURLRegistry">
        &lt;parameter name="root">file:repository/conf/sample/resources/&lt;/parameter>
        &lt;parameter name="cachableDuration">15000&lt;/parameter>
    &lt;/registry>

    &lt;sequence name="foo">
        &lt;sequence key="xxx"/>
    &lt;/sequence>

    &lt;sequence name="main">
        &lt;in>
            &lt;send>
                &lt;endpoint key="endpoint/dynamic_endpt_1.xml"/>
            &lt;/send>
        &lt;/in>
        &lt;out>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Introduction to dynamic endpoints with the Registry</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Start the Synapse configuration numbered 10: i.e. synapse -sample 10
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService if not already done
<br/> Start a second Axis2 server on HTTP port 9001 and HTTPS port 9003 as follows: </p>
<pre xml:space="preserve">./axis2server.sh -http 9001 -https 9003</pre>
<p>This example introduces dynamic endpoints, where the definition of an endpoint is stored in the registry. To follow this example execute the stock quote client as 'ant stockquote..' and see that the message is routed to the SimpleStockQuoteService on the default Axis2 instance on HTTP port 9000. Repeat the above example immediately again, and notice that the endpoint is cached and reused by Synapse - similarly to example # 8. </p>
<pre xml:space="preserve">ant stockquote -Dtrpurl=http://localhost:8280/</pre>
<p>Now edit the repository/conf/sample/resources/endpoint/dynamic_endpt_1.xml definition and update the address to &quot;http://localhost:9001/services/SimpleStockQuoteService&quot;. After the cached value expires, the Registry loads the new definition of the endpoint, and then the messages can be seen being routed to the second sample Axis2 server on HTTP port 9001. </p>
<div class="section"><h2>
<a name="Sample11" id="Sample11">Sample 11: A full registry based configuration, and sharing a configuration between multiple instances</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;registry provider="org.apache.synapse.registry.url.SimpleURLRegistry">
        &lt;parameter name="root">file:./repository/conf/sample/resources/&lt;/parameter>
        &lt;parameter name="cachableDuration">15000&lt;/parameter>
    &lt;/registry>

&lt;/definitions></pre>
<p>
<strong>Objective: A full registry based configuration</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Start the Synapse configuration numbered 11: i.e. synapse -sample 11
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService if not already done </p>
<p>This example shows a full registry based Synapse configuration. Thus it is possible to start a remote configuration from multiple instances of Synapse in a clustered environment easily. The Synapse configuration held on a node hosting Synapse simply points to the registry and looks up the actual configuration by requesting the key 'synapse.xml'. </p>
<p>(Note: Full registry based configuration is not dynamic atleast for the moment. i.e. it is not reloading itself) </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/</pre>
<pre xml:space="preserve">[HttpServerWorker-1] INFO LogMediator - message = This is a dynamic Synapse configuration</pre>
<p>The actual synapse.xml loaded is: </p>
<pre xml:space="preserve">&lt;!-- a registry based Synapse configuration -->
&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;log level="custom">
            &lt;property name="message" value="This is a dynamic Synapse configuration"/>
        &lt;/log>
        &lt;send/>
    &lt;/sequence>

&lt;/definitions></pre>
<div class="section"><h2>
<a name="Sample12" id="Sample12">Sample 12: One way messaging / fireAndForget through Synapse</a></h2></div>
<p>
<strong>Objective: Demonstrate one-way messaging / fireAndForget through Synapse</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService (Refer steps above)
<br/> Start the Synapse configuration numbered 1: i.e. synapse -sample 1 </p>
<p>This example invokes the one-way 'placeOrder' operation on the SimpleStockQuoteService using the custom client which uses the Axis2 ServiceClient.fireAndForget() API. To test this, use 'ant -Dmode=placeorder...' and you will notice the one-way message flowing through Synapse into the sample Axis2 server instance, which reports the acceptance of the order as follows: </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dmode=placeorder</pre>
<pre xml:space="preserve">SimpleStockQuoteService :: Accepted order for : 7482 stocks of IBM at $ 169.27205579038733</pre>
<p>If you send your client request through TCPmon, you will notice that the SimpleStockQuoteService replies to Synapse with a HTTP 202 reply, and that Synapse in turns replies to the client with a HTTP 202 acknowledgment </p>
<div class="section"><h2>
<a name="Sample13" id="Sample13">Sample 13: Dual channel invocation through Synapse</a></h2></div>
<p>
<strong>Objective: Demonstrate dual channel messaging through Synapse</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService (Refer steps above)
<br/> Start the Synapse configuration numbered 0: i.e. synapse -sample 0 </p>
<p>This example invokes the same 'getQuote' operation on the SimpleStockQuoteService using the custom client which uses the Axis2 ServiceClient API with useSeparateListener set to true so that the response is coming through a different channel than the one which is used to send the request to a callback defined in the client. To test this, use 'ant -Dmode=dualquote...' and you will notice the dual channel invocation through Synapse into the sample Axis2 server instance, which reports the response back to the client over a different channel: </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dmode=dualquote</pre>
<pre xml:space="preserve">Response received to the callback
Standard dual channel :: Stock price = $57.16686934968289</pre>
<p>If you send your client request through TCPmon, you will notice that Synapse replies to the client with a HTTP 202 acknowledgment when you send the request and the communication between Synapse and the server happens on a single channel and then you get the response back from Synapse to the clients callback in a different channel (which cannot be observed through TCPmon) </p>
<p>Also you could see the wsa:Reply-To header being something like http://localhost:8200/axis2/services/anonService2 which implies that the reply is being on a different channel listening on the port 8200. Please note that it is required to engage addressing when using the dual channel invocation because it requires the wsa:Reply-To header. </p>
<div class="section"><h2>
<a name="Sample14" id="Sample14">Sample 14: Sequences and Endpoints as local registry items</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;localEntry key="local-enrty-ep-key"
                src="file:repository/conf/sample/resources/endpoint/dynamic_endpt_1.xml"/>

    &lt;localEntry key="local-enrty-sequence-key">
        &lt;sequence name="dynamic_sequence">
            &lt;log level="custom">
                &lt;property name="message" value="*** Test Message 1 ***"/>
            &lt;/log>
        &lt;/sequence>
    &lt;/localEntry>

    &lt;sequence name="main">
        &lt;in>
            &lt;sequence key="local-enrty-sequence-key"/>
            &lt;send>
                &lt;endpoint key="local-enrty-ep-key"/>
            &lt;/send>
        &lt;/in>
        &lt;out>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Sequence and Endpoints as local registry entries</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Start the Synapse configuration numbered 14: i.e. synapse -sample 14
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService if not already done </p>
<p>This example shows sequences and endpoints fetched from local registry. Thus it is possible to have endpoints sequences as local registry entries including file entries.
Execute the following command to see the sample working, where you will be able to see the log statement from the fetched sequence from the local entry and the endpoint will be fetched from the specified file at runtime and be cached in the system</p>
<pre xml:space="preserve">ant stockquote -Dtrpurl=http://localhost:8280/</pre>
<h1>
<a name="Endpoints" id="Endpoints">Advanced mediations with endpoints</a> </h1>
<div class="section"><h2>
<a name="Sample50" id="Sample50">Sample 50: POX to SOAP conversion</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;!-- filtering of messages with XPath and regex matches -->
        &lt;filter source="get-property('To')" regex=".*/StockQuote.*">
            &lt;then>
                &lt;send>
                    &lt;endpoint>
                        &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService" format="soap11"/>
                    &lt;/endpoint>
                &lt;/send>
                &lt;drop/>
            &lt;/then>
        &lt;/filter>
        &lt;send/>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: POX to SOAP conversion</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Start the Synapse configuration numbered 50: i.e. synapse -sample 50 </p>
<p>Start the Axis2 server and deploy the SimpleStockQuoteService if not already done </p>
<p>Execute the 'ant stockquote' specifying that the request should be a REST request as follows: </p>
<pre xml:space="preserve">ant stockquote -Dtrpurl=http://localhost:8280/services/StockQuote -Drest=true</pre>
<p>This example shows a HTTP REST request (as shown below) being transformed into a SOAP request and forwarded to the stock quote service. </p>
<pre xml:space="preserve">POST /soap/StockQuote HTTP/1.1
Content-Type: application/xml; charset=UTF-8;action=&quot;urn:getQuote&quot;;
SOAPAction: urn:getQuote
User-Agent: Axis2
Host: 127.0.0.1
Transfer-Encoding: chunked

75
&lt;m0:getQuote xmlns:m0=&quot;http://services.samples/xsd&quot;&gt;
   &lt;m0:request&gt;
      &lt;m0:symbol&gt;IBM&lt;/m0:symbol&gt;
   &lt;/m0:request&gt;
&lt;/m0:getQuote&gt;0</pre>
<div class="section"><h2>
<a name="Sample51" id="Sample51">Sample 51: MTOM and SwA optimizations and request/response correlation</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;in>
            &lt;filter source="get-property('Action')" regex="urn:uploadFileUsingMTOM">
                &lt;then>
                    &lt;property name="example" value="mtom"/>
                    &lt;send>
                        &lt;endpoint>
                            &lt;address uri="http://localhost:9000/services/MTOMSwASampleService"
                                     optimize="mtom"/>
                        &lt;/endpoint>
                    &lt;/send>
                &lt;/then>
            &lt;/filter>
            &lt;filter source="get-property('Action')" regex="urn:uploadFileUsingSwA">
                &lt;then>
                    &lt;property name="example" value="swa"/>
                    &lt;send>
                        &lt;endpoint>
                            &lt;address uri="http://localhost:9000/services/MTOMSwASampleService"
                                     optimize="swa"/>
                        &lt;/endpoint>
                    &lt;/send>
                &lt;/then>
            &lt;/filter>
        &lt;/in>
        &lt;out>
            &lt;filter source="get-property('example')" regex="mtom">
                &lt;then>
                    &lt;property name="enableMTOM" value="true" scope="axis2"/>
                &lt;/then>
            &lt;/filter>
            &lt;filter source="get-property('example')" regex="swa">
                &lt;then>
                    &lt;property name="enableSwA" value="true" scope="axis2"/>
                &lt;/then>
            &lt;/filter>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: MTOM and SwA optimizations and request/response correlation</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Start the Synapse configuration numbered 51: i.e. synapse -sample 51
<br/> Start the Axis2 server and deploy the MTOMSwASampleService if not already done </p>
<p>Execute the 'ant optimizeclient' specifying MTOM optimization as follows: </p>
<pre xml:space="preserve">ant optimizeclient -Dopt_mode=mtom</pre>
<p>The configuration now sets a local message context property, and forwards the message to 'http://localhost:9000/services/MTOMSwASampleService' optimizing binary content as MTOM. By sending this message through TCPMon you would be able to see the actual message sent over the HTTP transport if required. Thus during response processing, by checking the local message property Synapse could identify the past information about the current message context, and uses this knowledge to transform the response back to the client in the same format as the original request. </p>
<p>When the client executes successfully, it will upload a file containing the ASF logo and receive its response back again and saves it into a temporary file. </p>
<pre xml:space="preserve">[java] Sending file : ./../../repository/conf/sample/resources/mtom/asf-logo.gif as MTOM
[java] Saved response to file : ./../../work/temp/sampleClient/mtom-4417.gif</pre>
<p>Next try SwA as: </p>
<pre xml:space="preserve">ant optimizeclient -Dopt_mode=swa</pre>
<pre xml:space="preserve">[java] Sending file : ./../../repository/conf/sample/resources/mtom/asf-logo.gif as SwA
[java] Saved response to file : ./../../work/temp/sampleClient/swa-30391.gif</pre>
<p>By using TCPMon and sending the message through it, one can inspect that the requests and responses sent are indeed MTOM optimized or sent as HTTP attachments as follows: </p>
<pre xml:space="preserve">POST http://localhost:9000/services/MTOMSwASampleService HTTP/1.1
Host: 127.0.0.1
SOAPAction: urn:uploadFileUsingMTOM
Content-Type: multipart/related; boundary=MIMEBoundaryurn_uuid_B94996494E1DD5F9B51177413845353; type=&quot;application/xop+xml&quot;;
start=&quot;&lt;0.urn:uuid:B94996494E1DD5F9B51177413845354@apache.org&gt;&quot;; start-info=&quot;text/xml&quot;; charset=UTF-8
Transfer-Encoding: chunked
Connection: Keep-Alive
User-Agent: Synapse-HttpComponents-NIO

--MIMEBoundaryurn_uuid_B94996494E1DD5F9B51177413845353241
Content-Type: application/xop+xml; charset=UTF-8; type=&quot;text/xml&quot;
Content-Transfer-Encoding: binary
Content-ID:
   &lt;0.urn:uuid:B94996494E1DD5F9B51177413845354@apache.org&gt;221b1
      &lt;?xml version='1.0' encoding='UTF-8'?&gt;
         &lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&gt;
            &lt;soapenv:Body&gt;
               &lt;m0:uploadFileUsingMTOM xmlns:m0=&quot;http://www.apache-synapse.org/test&quot;&gt;
                  &lt;m0:request&gt;
                     &lt;m0:image&gt;
                        &lt;xop:Include href=&quot;cid:1.urn:uuid:78F94BC50B68D76FB41177413845003@apache.org&quot; xmlns:xop=&quot;http://www.w3.org/2004/08/xop/include&quot; /&gt;
                     &lt;/m0:image&gt;
                  &lt;/m0:request&gt;
               &lt;/m0:uploadFileUsingMTOM&gt;
            &lt;/soapenv:Body&gt;
         &lt;/soapenv:Envelope&gt;
--MIMEBoundaryurn_uuid_B94996494E1DD5F9B51177413845353217
Content-Type: image/gif
Content-Transfer-Encoding: binary
Content-ID:
         &lt;1.urn:uuid:78F94BC50B68D76FB41177413845003@apache.org&gt;22800GIF89a... &lt;&lt; binary content &gt;&gt;</pre>
<pre xml:space="preserve">POST http://localhost:9000/services/MTOMSwASampleService HTTP/1.1
Host: 127.0.0.1
SOAPAction: urn:uploadFileUsingSwA
Content-Type: multipart/related; boundary=MIMEBoundaryurn_uuid_B94996494E1DD5F9B51177414170491; type=&quot;text/xml&quot;;
start=&quot;&lt;0.urn:uuid:B94996494E1DD5F9B51177414170492@apache.org&gt;&quot;; charset=UTF-8
Transfer-Encoding: chunked
Connection: Keep-Alive
User-Agent: Synapse-HttpComponents-NIO

--MIMEBoundaryurn_uuid_B94996494E1DD5F9B51177414170491225
Content-Type: text/xml; charset=UTF-8
Content-Transfer-Encoding: 8bit
Content-ID:
   &lt;0.urn:uuid:B94996494E1DD5F9B51177414170492@apache.org&gt;22159
      &lt;?xml version='1.0' encoding='UTF-8'?&gt;
         &lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&gt;
            &lt;soapenv:Body&gt;
               &lt;m0:uploadFileUsingSwA xmlns:m0=&quot;http://www.apache-synapse.org/test&quot;&gt;
                  &lt;m0:request&gt;
                     &lt;m0:imageId&gt;urn:uuid:15FD2DA2584A32BF7C1177414169826&lt;/m0:imageId&gt;
                  &lt;/m0:request&gt;
               &lt;/m0:uploadFileUsingSwA&gt;
            &lt;/soapenv:Body&gt;
         &lt;/soapenv:Envelope&gt;22--34MIMEBoundaryurn_uuid_B94996494E1DD5F9B511774141704912
17
Content-Type: image/gif
Content-Transfer-Encoding: binary
Content-ID:
         &lt;urn:uuid:15FD2DA2584A32BF7C1177414169826&gt;22800GIF89a... &lt;&lt; binary content &gt;&gt;</pre>
<div class="section"><h2>
<a name="Sample52" id="Sample52">Sample 52: Session less load balancing between 3 endpoints</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main" onError="errorHandler">
        &lt;in>
            &lt;send>
                &lt;endpoint>
                    &lt;loadbalance>
                        &lt;endpoint>
                            &lt;address uri="http://localhost:9001/services/LBService1">
                                &lt;enableAddressing/>
                                &lt;suspendDurationOnFailure>60&lt;/suspendDurationOnFailure>
                            &lt;/address>
                        &lt;/endpoint>
                        &lt;endpoint>
                            &lt;address uri="http://localhost:9002/services/LBService1">
                                &lt;enableAddressing/>
                                &lt;suspendDurationOnFailure>60&lt;/suspendDurationOnFailure>
                            &lt;/address>
                        &lt;/endpoint>
                        &lt;endpoint>
                            &lt;address uri="http://localhost:9003/services/LBService1">
                                &lt;enableAddressing/>
                                &lt;suspendDurationOnFailure>60&lt;/suspendDurationOnFailure>
                            &lt;/address>
                        &lt;/endpoint>
                    &lt;/loadbalance>
                &lt;/endpoint>
            &lt;/send>
            &lt;drop/>
        &lt;/in>

        &lt;out>
            &lt;!-- Send the messages where they have been sent (i.e. implicit To EPR) -->
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

    &lt;sequence name="errorHandler">
        &lt;makefault response="true">
            &lt;code xmlns:tns="http://www.w3.org/2003/05/soap-envelope" value="tns:Receiver"/>
            &lt;reason value="COULDN'T SEND THE MESSAGE TO THE SERVER."/>
        &lt;/makefault>
        &lt;send/>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Demonstrate the simple load balancing among a set of endpoints</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>Start Synapse with sample configuration 52. (i.e. synapse -sample 52)
<br/>Deploy the LoadbalanceFailoverService by switching to &lt;Synapse installation directory&gt;/samples/axis2Server/src/LoadbalanceFailoverService directory and running ant.
<br/>Start three instances of sample Axis2 server on HTTP ports 9001, 9002 and 9003 and give some unique names to each server.</p>
<p>Example commands to run sample Axis2 servers from the &lt;Synapse installation directory&gt;/samples/axis2Server directory in Linux are listed below: </p>
<pre xml:space="preserve">./axis2server.sh -http 9001 -https 9005 -name MyServer1
./axis2server.sh -http 9002 -https 9006 -name MyServer2
./axis2server.sh -http 9003 -https 9007 -name MyServer3</pre>
<p>Now we are done with setting up the environment for load balance sample. Start the load balance and failover client using the following command: </p>
<pre xml:space="preserve">ant loadbalancefailover -Di=100</pre>
<p>This client sends 100 requests to the LoadbalanceFailoverService through Synapse. Synapse will distribute the load among the three endpoints mentioned in the configuration in round-robin manner. LoadbalanceFailoverService appends the name of the server to the response, so that client can determine which server has processed the message. If you examine the console output of the client, you can see that requests are processed by three servers as follows: </p>
<pre xml:space="preserve">[java] Request: 1 ==&gt; Response from server: MyServer1
[java] Request: 2 ==&gt; Response from server: MyServer2
[java] Request: 3 ==&gt; Response from server: MyServer3
[java] Request: 4 ==&gt; Response from server: MyServer1
[java] Request: 5 ==&gt; Response from server: MyServer2
[java] Request: 6 ==&gt; Response from server: MyServer3
[java] Request: 7 ==&gt; Response from server: MyServer1
...</pre>
<p>Now run the client without the -Di=100 parameter to send infinite requests. While running the client shutdown the server named MyServer1. You can observe that requests are only distributed among MyServer2 and MyServer3 after shutting down MyServer1. Console output before and after shutting down MyServer1 is listed below (MyServer1 was shutdown after request 63): </p>
<pre xml:space="preserve">...
[java] Request: 61 ==&gt; Response from server: MyServer1
[java] Request: 62 ==&gt; Response from server: MyServer2
[java] Request: 63 ==&gt; Response from server: MyServer3
[java] Request: 64 ==&gt; Response from server: MyServer2
[java] Request: 65 ==&gt; Response from server: MyServer3
[java] Request: 66 ==&gt; Response from server: MyServer2
[java] Request: 67 ==&gt; Response from server: MyServer3
...</pre>
<p>Now restart MyServer1. You can observe that requests will be again sent to all three servers roughly after 60 seconds. This is because we have specified &lt;suspendDurationOnFailure&gt; as 60 seconds in the configuration. Therefore, load balance endpoint will suspend any failed child endpoint only for 60 seconds after detecting the failure. </p>
<div class="section"><h2>
<a name="Sample53" id="Sample53">Sample 53: Failover sending among 3 endpoints</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main" onError="errorHandler">
        &lt;in>
            &lt;send>
                &lt;endpoint>
                    &lt;failover>
                        &lt;endpoint>
                            &lt;address uri="http://localhost:9001/services/LBService1">
                                &lt;enableAddressing/>
                                &lt;suspendDurationOnFailure>60&lt;/suspendDurationOnFailure>
                            &lt;/address>
                        &lt;/endpoint>
                        &lt;endpoint>
                            &lt;address uri="http://localhost:9002/services/LBService1">
                                &lt;enableAddressing/>
                                &lt;suspendDurationOnFailure>60&lt;/suspendDurationOnFailure>
                            &lt;/address>
                        &lt;/endpoint>
                        &lt;endpoint>
                            &lt;address uri="http://localhost:9003/services/LBService1">
                                &lt;enableAddressing/>
                                &lt;suspendDurationOnFailure>60&lt;/suspendDurationOnFailure>
                            &lt;/address>
                        &lt;/endpoint>
                    &lt;/failover>
                &lt;/endpoint>
            &lt;/send>
            &lt;drop/>
        &lt;/in>

        &lt;out>
            &lt;!-- Send the messages where they have been sent (i.e. implicit To EPR) -->
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

    &lt;sequence name="errorHandler">
        &lt;makefault response="true">
            &lt;code xmlns:tns="http://www.w3.org/2003/05/soap-envelope" value="tns:Receiver"/>
            &lt;reason value="COULDN'T SEND THE MESSAGE TO THE SERVER."/>
        &lt;/makefault>
        &lt;send/>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Demonstrate the failover sending</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>Start Synapse with sample configuration 53 (i.e. synapse -sample 53)
<br/>Deploy the LoadbalanceFailoverService and start three instances of sample Axis2 server as mentioned in sample 52.</p>
<p>Above configuration sends messages with the failover behavior. Initially the server at port 9001 is treated as primary and other two are treated as backups. Messages are always directed only to the primary server. If the primary server has failed, next listed server is selected as the primary. Thus, messages are sent successfully as long as there is at least one active server. To test this, run the loadbalancefailover client to send infinite requests as follows: </p>
<pre xml:space="preserve">ant loadbalancefailover</pre>
<p>You can see that all requests are processed by MyServer1. Now shutdown MyServer1 and inspect the console output of the client. You will observe that all subsequent requests are processed by MyServer2. </p>
<p>The console output with MyServer1 shutdown after request 127 is listed below: </p>
<pre xml:space="preserve">...
[java] Request: 125 ==&gt; Response from server: MyServer1
[java] Request: 126 ==&gt; Response from server: MyServer1
[java] Request: 127 ==&gt; Response from server: MyServer1
[java] Request: 128 ==&gt; Response from server: MyServer2
[java] Request: 129 ==&gt; Response from server: MyServer2
[java] Request: 130 ==&gt; Response from server: MyServer2
...</pre>
<p>You can keep on shutting down servers like this. Client will get a response till you shutdown all listed servers. Once all servers are shutdown, the error sequence is activated and a fault message is sent to the client as follows. </p>
<pre xml:space="preserve">[java] COULDN'T SEND THE MESSAGE TO THE SERVER.</pre>
<p>Once a server is detected as failed, it will be added to the active servers list again after 60 seconds (specified in &lt;suspendDurationOnFailure&gt; in the configuration). Therefore, if you have restarted any of the stopped servers and have shutdown all other servers, messages will be directed to the newly started server. </p>
<div class="section"><h2>
<a name="Sample54" id="Sample54">Sample 54: Session affinity load balancing between 3 endpoints</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main" onError="errorHandler">
        &lt;in>
            &lt;send>
                &lt;endpoint>
                    &lt;!-- specify the session as the simple client session provided by Synapse for
                                            testing purpose -->
                    &lt;session type="simpleClientSession"/>

                    &lt;loadbalance>
                        &lt;endpoint>
                            &lt;address uri="http://localhost:9001/services/LBService1">
                                &lt;enableAddressing/>
                            &lt;/address>
                        &lt;/endpoint>
                        &lt;endpoint>
                            &lt;address uri="http://localhost:9002/services/LBService1">
                                &lt;enableAddressing/>
                            &lt;/address>
                        &lt;/endpoint>
                        &lt;endpoint>
                            &lt;address uri="http://localhost:9003/services/LBService1">
                                &lt;enableAddressing/>
                            &lt;/address>
                        &lt;/endpoint>
                    &lt;/loadbalance>
                &lt;/endpoint>
            &lt;/send>
            &lt;drop/>
        &lt;/in>

        &lt;out>
            &lt;!-- Send the messages where they have been sent (i.e. implicit To EPR) -->
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

    &lt;sequence name="errorHandler">
        &lt;makefault response="true">
            &lt;code xmlns:tns="http://www.w3.org/2003/05/soap-envelope" value="tns:Receiver"/>
            &lt;reason value="COULDN'T SEND THE MESSAGE TO THE SERVER."/>
        &lt;/makefault>
        &lt;send/>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Demonstrate the loadbalancing with session affinity using client initiated sessions</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>Start Synapse with sample configuration 54 (i.e. synapse -sample 54).
<br/>Deploy the LoadbalanceFailoverService and start three instances of the sample Axis2 server as in sample 52. </p>

<p>Above configuration is same as the load balancing configuration in sample 52, except that the session type is specified as &quot;simpleClientSession&quot;. This is a client initiated session, which means that the client generates the session identifier and sends it with each request. In this sample session type, client adds a SOAP header named ClientID containing the identifier of the client. Synapse binds this ID with a server on the first request and sends all successive requests containing that ID to the same server. Now switch to samples/axis2Client directory and run the client using the following command to check this in action. </p>
<pre xml:space="preserve">ant loadbalancefailover -Dmode=session</pre>
<p>In the session mode, client continuously sends requests with three different client (session) IDs. One ID is selected among these three IDs for each request randomly. Then client prints the session ID with the responded server for each request. Client output for the first 10 requests are shown below. </p>
<pre xml:space="preserve">[java] Request: 1 Session number: 1 Response from server: MyServer3
[java] Request: 2 Session number: 2 Response from server: MyServer2
[java] Request: 3 Session number: 0 Response from server: MyServer1
[java] Request: 4 Session number: 2 Response from server: MyServer2
[java] Request: 5 Session number: 1 Response from server: MyServer3
[java] Request: 6 Session number: 2 Response from server: MyServer2
[java] Request: 7 Session number: 2 Response from server: MyServer2
[java] Request: 8 Session number: 1 Response from server: MyServer3
[java] Request: 9 Session number: 0 Response from server: MyServer1
[java] Request: 10 Session number: 0 Response from server: MyServer1
... </pre>
<p>You can see that session number 0 is always directed to the server named MyServer1. That means session number 0 is bound to MyServer1. Similarly session 1 and 2 are bound to MyServer3 and MyServer2 respectively. </p>
<div class="section"><h2>
<a name="Sample55" id="Sample55">Sample 55: Session affinity load balancing between fail over endpoints</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main" onError="errorHandler">
        &lt;in>
            &lt;send>
                &lt;endpoint>
                    &lt;!-- specify the session as the simple client session provided by Synapse for
                                     testing purpose -->
                    &lt;session type="simpleClientSession"/>

                    &lt;loadbalance>
                        &lt;endpoint>
                            &lt;failover>
                                &lt;endpoint>
                                    &lt;address uri="http://localhost:9001/services/LBService1">
                                        &lt;enableAddressing/>
                                    &lt;/address>
                                &lt;/endpoint>
                                &lt;endpoint>
                                    &lt;address uri="http://localhost:9002/services/LBService1">
                                        &lt;enableAddressing/>
                                    &lt;/address>
                                &lt;/endpoint>
                            &lt;/failover>
                        &lt;/endpoint>
                        &lt;endpoint>
                            &lt;failover>
                                &lt;endpoint>
                                    &lt;address uri="http://localhost:9003/services/LBService1">
                                        &lt;enableAddressing/>
                                    &lt;/address>
                                &lt;/endpoint>
                                &lt;endpoint>
                                    &lt;address uri="http://localhost:9004/services/LBService1">
                                        &lt;enableAddressing/>
                                    &lt;/address>
                                &lt;/endpoint>
                            &lt;/failover>
                        &lt;/endpoint>
                    &lt;/loadbalance>
                &lt;/endpoint>
            &lt;/send>
            &lt;drop/>
        &lt;/in>

        &lt;out>
            &lt;!-- Send the messages where they have been sent (i.e. implicit To EPR) -->
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

    &lt;sequence name="errorHandler">
        &lt;makefault response="true">
            &lt;code xmlns:tns="http://www.w3.org/2003/05/soap-envelope" value="tns:Receiver"/>
            &lt;reason value="COULDN'T SEND THE MESSAGE TO THE SERVER."/>
        &lt;/makefault>
        &lt;send/>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Demonstrate the session affinity based load balancing with failover capability</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>Start Synapse with sample configuration 55 (i.e. synapse -sample 55).
<br/>Deploy the LoadbalanceFailoverService and start four sample Axis2 servers on HTTP ports 9001, 9002, 9003 and 9004 respectively (make sure to specify non-conflicting HTTPS ports). </p>
<p>This configuration also uses &quot;simpleClientSession&quot; to bind sessions as in the previous sample. But failover endpoints are specified as the child endpoints of the load balance endpoint. Therefore sessions are bound to the failover endpoints. Session information has to be replicated among the servers listed under each failover endpoint using some clustering mechanism. Therefore, if one endpoint bound to a session failed, successive requets for that session will be directed to the next endpoint in that failover group. Run the client using the following command to observe this behaviour. </p>
<pre xml:space="preserve">ant loadbalancefailover -Dmode=session</pre>
<p>You can see a client output as shown below. </p>
<pre xml:space="preserve">...
[java] Request: 222 Session number: 0 Response from server: MyServer1
[java] Request: 223 Session number: 0 Response from server: MyServer1
[java] Request: 224 Session number: 1 Response from server: MyServer1
[java] Request: 225 Session number: 2 Response from server: MyServer3
[java] Request: 226 Session number: 0 Response from server: MyServer1
[java] Request: 227 Session number: 1 Response from server: MyServer1
[java] Request: 228 Session number: 2 Response from server: MyServer3
[java] Request: 229 Session number: 1 Response from server: MyServer1
[java] Request: 230 Session number: 1 Response from server: MyServer1
[java] Request: 231 Session number: 2 Response from server: MyServer3
...</pre>
<p>Note that session 0 is always directed to MyServer1 and session 1 is directed to MyServer3. No requests are directed to MyServer2 and MyServer4 as they are kept as backups by failover endpoints. Now shutdown the server named MyServer1 while running the sample. You will observe that all successive requests for session 0 is now directed to MyServer2, which is the backup server for MyServer1's group. This is shown below, where MyServer1 was shutdown after the request 534. </p>
<pre xml:space="preserve">...
[java] Request: 529 Session number: 2 Response from server: MyServer3
[java] Request: 530 Session number: 1 Response from server: MyServer1
[java] Request: 531 Session number: 0 Response from server: MyServer1
[java] Request: 532 Session number: 1 Response from server: MyServer1
[java] Request: 533 Session number: 1 Response from server: MyServer1
[java] Request: 534 Session number: 1 Response from server: MyServer1
[java] Request: 535 Session number: 0 Response from server: MyServer2
[java] Request: 536 Session number: 0 Response from server: MyServer2
[java] Request: 537 Session number: 0 Response from server: MyServer2
[java] Request: 538 Session number: 2 Response from server: MyServer3
[java] Request: 539 Session number: 0 Response from server: MyServer2
...</pre>
<div class="section"><h2>
<a name="Sample56" id="Sample56">Sample 56: WSDL endpoint</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;in>
            &lt;send>
                &lt;!-- get epr from the given wsdl -->
                &lt;endpoint>
                    &lt;wsdl uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"
                          service="SimpleStockQuoteService"
                          port="SimpleStockQuoteServiceHttpSoap11Endpoint"/>
                &lt;/endpoint>
            &lt;/send>
        &lt;/in>

        &lt;out>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Demonstrate the use of WSDL endpoints</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>Start the Synapse configuration numbered 56 (i.e. synapse -sample 56).
<br/>Deploy the SimpleStockQuoteService and start the sample Axis2 server. </p>

<p>This sample uses a WSDL endpoint inside the send mediator. WSDL endpoints can extract endpoint's address from the given WSDL. As WSDL documents can have many services and many ports inside each service, the service and port of the required endpoint has to be specified. As with address endpoints, QoS parameters for the endpoint can be specified in-line in the configuration. An excerpt taken from the sample_proxy_1.wsdl containing the specified service and port is listed below. </p>
<pre xml:space="preserve">&lt;wsdl:service name="SimpleStockQuoteService"&gt;
    &lt;wsdl:port name="SimpleStockQuoteServiceHttpSoap11Endpoint" binding="ns:SimpleStockQuoteServiceSoap11Binding"&gt;
        &lt;soap:address location="http://localhost:9000/services/SimpleStockQuoteService.SimpleStockQuoteServiceHttpSoap11Endpoint"/&gt;
    &lt;/wsdl:port&gt;
    &lt;wsdl:port name="SimpleStockQuoteServiceHttpSoap12Endpoint" binding="ns:SimpleStockQuoteServiceSoap12Binding"&gt;
        &lt;soap12:address location="http://localhost:9000/services/SimpleStockQuoteService.SimpleStockQuoteServiceHttpSoap12Endpoint"/&gt;
    &lt;/wsdl:port&gt;
&lt;/wsdl:service&gt;</pre>
<p>Specified service and port refers to the endpoint address &quot;http://localhost:9000/services/SimpleStockQuoteService.SimpleStockQuoteServiceHttpSoap11Endpoint&quot; according to the above WSDL. Now run the client using the following command. </p>
<pre xml:space="preserve">ant stockquote -Dsymbol=IBM -Dmode=quote -Daddurl=http://localhost:8280</pre>
<p>Client will print the quote price for IBM received from the server running on port 9000. Observe the Axis2 console and the Synapse console to verify this behavior. </p>
<div class="section"><h2>
<a name="Sample57" id="Sample57">Sample 57: Dynamic load balancing between 3 nodes</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main" onError="errorHandler">
        &lt;in>
            &lt;send>
                &lt;endpoint name="dynamicLB">
                    &lt;dynamicLoadbalance failover="true"
                                        algorithm="org.apache.synapse.endpoints.algorithms.RoundRobin">
                        &lt;membershipHandler
                                class="org.apache.synapse.core.axis2.Axis2LoadBalanceMembershipHandler">
                            &lt;property name="applicationDomain" value="apache.axis2.app.domain"/>
                        &lt;/membershipHandler>
                    &lt;/dynamicLoadbalance>
                &lt;/endpoint>
            &lt;/send>
            &lt;drop/>
        &lt;/in>

        &lt;out>
            &lt;!-- Send the messages where they have been sent (i.e. implicit To EPR) -->
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

    &lt;sequence name="errorHandler">
        &lt;makefault response="true">
            &lt;code xmlns:tns="http://www.w3.org/2003/05/soap-envelope" value="tns:Receiver"/>
            &lt;reason value="COULDN'T SEND THE MESSAGE TO THE SERVER."/>
        &lt;/makefault>
        &lt;send/>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Demonstrate the simple dynamic load balancing among a set of nodes</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>Enable clustering and load balancing in the &lt;Synapse installation directory&gt;/ repository/conf/axis2.xml file. This can be done by setting the &quot;enable&quot; attribute of the &quot;cluster&quot; and &quot;loadBalancer&quot; elements. Also provide the IP address of you machine as the values of the &quot;mcastBindAddress&quot; and &quot;localMemberHost&quot; parameters.
<br/>Start Synapse with sample configuration 57. (i.e. synapse -sample 57)
<br/>Deploy the LoadbalanceFailoverService by switching to &lt;Synapse installation directory&gt;/samples/axis2Server/src/LoadbalanceFailoverService directory and running ant.
<br/>Enable clustering in the &lt;Synapse installation directory&gt;/samples/axis2Server/ repository/conf/axis2.xml file. This can be done by setting the &quot;enable&quot; attribute of the &quot;cluster&quot; element. Also provide the IP address of you machine as the values of the &quot;mcastBindAddress&quot; and &quot;localMemberHost&quot; parameters. Make sure that the "applicationDomain" of the membershipHandler is the same as the domain name specified in the axis2.xml files of the Axis2 servers. Then Start three instances of sample Axis2 server on HTTP ports 9001, 9002 and 9003 and give some unique names to each server.</p>
<p>Example commands to run sample Axis2 servers from the &lt;Synapse installation directory&gt;/samples/axis2Server directory in Linux are listed below: </p>
<pre xml:space="preserve">./axis2server.sh -http 9001 -https 9005 -name MyServer1
./axis2server.sh -http 9002 -https 9006 -name MyServer2
./axis2server.sh -http 9003 -https 9007 -name MyServer3</pre>
<p>Now we are done with setting up the environment for load balance sample. Start the load balance and failover client using the following command: </p>
<pre xml:space="preserve">ant loadbalancefailover -Di=100</pre>
<p>This client sends 100 requests to the LoadbalanceFailoverService through Synapse. Synapse will distribute the load among the three nodes mentioned in the configuration in a round-robin manner. LoadbalanceFailoverService appends the name of the server to the response, so that client can determine which server has processed the message. If you examine the console output of the client, you can see that requests are processed by three servers as follows: </p>
<pre xml:space="preserve">[java] Request: 1 ==&gt; Response from server: MyServer1
[java] Request: 2 ==&gt; Response from server: MyServer2
[java] Request: 3 ==&gt; Response from server: MyServer3
[java] Request: 4 ==&gt; Response from server: MyServer1
[java] Request: 5 ==&gt; Response from server: MyServer2
[java] Request: 6 ==&gt; Response from server: MyServer3
[java] Request: 7 ==&gt; Response from server: MyServer1
...</pre>
<p>Now run the client without the -Di=100 parameter, i.e. ant loadbalancefailover, to send infinite requests. While running the client shutdown the server named MyServer1. You can observe that requests are only distributed among MyServer2 and MyServer3 after shutting down MyServer1. Console output before and after shutting down MyServer1 is listed below (MyServer1 was shutdown after request 63): </p>
<pre xml:space="preserve">...
[java] Request: 61 ==&gt; Response from server: MyServer1
[java] Request: 62 ==&gt; Response from server: MyServer2
[java] Request: 63 ==&gt; Response from server: MyServer3
[java] Request: 64 ==&gt; Response from server: MyServer2
[java] Request: 65 ==&gt; Response from server: MyServer3
[java] Request: 66 ==&gt; Response from server: MyServer2
[java] Request: 67 ==&gt; Response from server: MyServer3
...</pre>
<p>Now restart MyServer1. You can observe that requests will be again sent to all three servers. </p>
<div class="section"><h2>
<a name="Sample58" id="Sample58">Sample 58: Static load balancing between 3 nodes</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main" onError="errorHandler">
        &lt;in>
            &lt;send>
                &lt;endpoint>
                    &lt;loadbalance failover="true">
                        &lt;member hostName="127.0.0.1" httpPort="9001" httpsPort="9005"/>
                        &lt;member hostName="127.0.0.1" httpPort="9002" httpsPort="9006"/>
                        &lt;member hostName="127.0.0.1" httpPort="9003" httpsPort="9007"/>
                    &lt;/loadbalance>
                &lt;/endpoint>
            &lt;/send>
            &lt;drop/>
        &lt;/in>

        &lt;out>
            &lt;!-- Send the messages where they have been sent (i.e. implicit To EPR) -->
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

    &lt;sequence name="errorHandler">
        &lt;makefault response="true">
            &lt;code xmlns:tns="http://www.w3.org/2003/05/soap-envelope" value="tns:Receiver"/>
            &lt;reason value="COULDN'T SEND THE MESSAGE TO THE SERVER."/>
        &lt;/makefault>
        &lt;send/>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Demonstrate the simple static load balancing among a set of nodes</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>Start Synapse with sample configuration 58. (i.e. synapse -sample 58)
<br/>Deploy the LoadbalanceFailoverService by switching to &lt;Synapse installation directory&gt;/samples/axis2Server/src/LoadbalanceFailoverService directory and running ant.
<br/>Start three instances of sample Axis2 server on HTTP ports 9001, 9002 and 9003 and give some unique names to each server. </p>
<p>Example commands to run sample Axis2 servers from the &lt;Synapse installation directory&gt;/samples/axis2Server directory in Linux are listed below: </p>
<pre xml:space="preserve">./axis2server.sh -http 9001 -https 9005 -name MyServer1
./axis2server.sh -http 9002 -https 9006 -name MyServer2
./axis2server.sh -http 9003 -https 9007 -name MyServer3</pre>
<p>Now we are done with setting up the environment for load balance sample. Start the load balance and failover client using the following command: </p>
<pre xml:space="preserve">ant loadbalancefailover -Di=100</pre>
<p>This client sends 100 requests to the LoadbalanceFailoverService through Synapse. Synapse will distribute the load among the three nodes mentioned in the configuration in a round-robin manner. LoadbalanceFailoverService appends the name of the server to the response, so that client can determine which server has processed the message. If you examine the console output of the client, you can see that requests are processed by three servers as follows: </p>
<pre xml:space="preserve">[java] Request: 1 ==&gt; Response from server: MyServer1
[java] Request: 2 ==&gt; Response from server: MyServer2
[java] Request: 3 ==&gt; Response from server: MyServer3
[java] Request: 4 ==&gt; Response from server: MyServer1
[java] Request: 5 ==&gt; Response from server: MyServer2
[java] Request: 6 ==&gt; Response from server: MyServer3
[java] Request: 7 ==&gt; Response from server: MyServer1
...</pre>
<p>Now run the client without the -Di=100 parameter, i.e. ant loadbalancefailover, to send infinite requests. While running the client shutdown the server named MyServer1. You can observe that requests are only distributed among MyServer2 and MyServer3 after shutting down MyServer1. Console output before and after shutting down MyServer1 is listed below (MyServer1 was shutdown after request 63): </p>
<pre xml:space="preserve">...
[java] Request: 61 ==&gt; Response from server: MyServer1
[java] Request: 62 ==&gt; Response from server: MyServer2
[java] Request: 63 ==&gt; Response from server: MyServer3
[java] Request: 64 ==&gt; Response from server: MyServer2
[java] Request: 65 ==&gt; Response from server: MyServer3
[java] Request: 66 ==&gt; Response from server: MyServer2
[java] Request: 67 ==&gt; Response from server: MyServer3
...</pre>
<p>Now restart MyServer1. You can observe that requests will be again sent to all three servers. </p>
<h1>
<a name="MessageMediationQoS" id="MessageMediationQoS">Quality of Service addition or deduction samples in message mediation</a> </h1>
<div class="section"><h2>
<a name="Sample100" id="Sample100">Sample 100: Using WS-Security for outgoing messages</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;localEntry key="sec_policy" src="file:repository/conf/sample/resources/policy/policy_3.xml"/>

    &lt;sequence name="main">
        &lt;in>
            &lt;send>
                &lt;endpoint name="secure">
                    &lt;address uri="http://localhost:9000/services/SecureStockQuoteService">
                        &lt;enableSec policy="sec_policy"/>
                    &lt;/address>
                &lt;/endpoint>
            &lt;/send>
        &lt;/in>
        &lt;out>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Connecting to endpoints with WS-Security for outgoing messages</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>You may also need to download and install the unlimited strength policy files for your JDK before using Apache Rampart (e.g. see http://java.sun.com/javase/downloads/index_jdk5.jsp)
<br/>Start the Synapse configuration numbered 100: i.e. synapse -sample 100
<br/>Start the Axis2 server and deploy the SecureStockQuoteService if not already done</p>

<p>Use the stock quote client to send a request without WS-Security. Synapse is configured to enable WS-Security as per the policy specified by 'policy_3.xml' for the outgoing messages to the SecureStockQuoteService endpoint hosted on the Axis2 instance. The debug log messages on Synapse shows the encrypted message flowing to the service and the encrypted response being received by Synapse. The wsse:Security header is then removed from the decrypted message and the response is delivered back to the client, as expected. You may execute the client as follows: </p>
<pre xml:space="preserve">ant stockquote -Dtrpurl=http://localhost:8280/</pre>
<p>The message sent by Synapse to the secure service can be seen as follows, when TCPMon is used. </p>
<pre xml:space="preserve">POST http://localhost:9001/services/SecureStockQuoteService HTTP/1.1
Host: 127.0.0.1
SOAPAction: urn:getQuote
Content-Type: text/xml; charset=UTF-8
Transfer-Encoding: chunked
Connection: Keep-Alive
User-Agent: Synapse-HttpComponents-NIO

800
&lt;?xml version='1.0' encoding='UTF-8'?&gt;
   &lt;soapenv:Envelope xmlns:xenc=&quot;http://www.w3.org/2001/04/xmlenc#&quot; xmlns:wsa=&quot;http://www.w3.org/2005/08/addressing&quot; ..&gt;
      &lt;soapenv:Header&gt;
         &lt;wsse:Security ..&gt;
            &lt;wsu:Timestamp ..&gt;
               ...
            &lt;/wsu:Timestamp&gt;
            &lt;xenc:EncryptedKey..&gt;
               ...
            &lt;/xenc:EncryptedKey&gt;
            &lt;wsse:BinarySecurityToken ...&gt;
               &lt;ds:SignedInfo&gt;
               ...
               &lt;/ds:SignedInfo&gt;
               &lt;ds:SignatureValue&gt;
               ...
               &lt;/ds:SignatureValue&gt;
               &lt;ds:KeyInfo Id=&quot;KeyId-29551621&quot;&gt;
                  ...
               &lt;/ds:KeyInfo&gt;
            &lt;/ds:Signature&gt;
         &lt;/wsse:Security&gt;
         &lt;wsa:To&gt;http://localhost:9001/services/SecureStockQuoteService&lt;/wsa:To&gt;
         &lt;wsa:MessageID&gt;urn:uuid:1C4CE88B8A1A9C09D91177500753443&lt;/wsa:MessageID&gt;
         &lt;wsa:Action&gt;urn:getQuote&lt;/wsa:Action&gt;
      &lt;/soapenv:Header&gt;
      &lt;soapenv:Body xmlns:wsu=&quot;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd&quot; wsu:Id=&quot;Id-3789605&quot;&gt;
         &lt;xenc:EncryptedData Id=&quot;EncDataId-3789605&quot; Type=&quot;http://www.w3.org/2001/04/xmlenc#Content&quot;&gt;
            &lt;xenc:EncryptionMethod Algorithm=&quot;http://www.w3.org/2001/04/xmlenc#aes256-cbc&quot; /&gt;
            &lt;xenc:CipherData&gt;
                &lt;xenc:CipherValue&gt;Layg0xQcnH....6UKm5nKU6Qqr&lt;/xenc:CipherValue&gt;
            &lt;/xenc:CipherData&gt;
         &lt;/xenc:EncryptedData&gt;
      &lt;/soapenv:Body&gt;
   &lt;/soapenv:Envelope&gt;0</pre>

<div class="section"><h2>
<a name="Sample101" id="Sample101">Sample 101: Reliable message exchange between Synapse and the back-end server using WS-ReliableMessaging</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;in>
            &lt;RMSequence single="true" version="1.0"/>
            &lt;send>
                &lt;endpoint name="reliable">
                    &lt;address uri="http://localhost:9000/services/ReliableStockQuoteService">
                        &lt;enableRM/>
                        &lt;enableAddressing/>
                    &lt;/address>
                &lt;/endpoint>
            &lt;/send>
        &lt;/in>
        &lt;out>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre>
<strong>Objective: Demonstrate the message exchange between Synapse and the server using WS-ReliableMessaging (WS-RM) - 1.0</strong>
<p>
<strong>Prerequisites:</strong>
<br/>Deploy the ReliableStockQuoteService in the sample Axis2 server by switching to the samples/axis2Server/src/ReliableStockQuoteService directory and running the command 'ant'.
<br/>Start the sample Axis2 server on port 9000.
<br/>Start Synapse with the sample configuration 101 (i.e. synapse -sample 101).</p>

<p>In the above configuration, WS-RM is engaged to the endpoint using the &lt;enableRM/&gt; 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 takes place only between the Synapse and the server. Now run the sample client using the following command. </p>
<pre xml:space="preserve">ant stockquote -Dsymbol=IBM -Dmode=quote -Daddurl=http://localhost:8280</pre>
<p>You can observe the client output displaying the quote price for IBM as follows: </p>
<pre xml:space="preserve">[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 xml:space="preserve">...
&lt;soapenv:Body&gt;
   &lt;wsrm:CreateSequence xmlns:wsrm=&quot;http://schemas.xmlsoap.org/ws/2005/02/rm&quot;&gt;
      &lt;wsrm:AcksTo&gt;
         &lt;wsa:Address&gt;http://www.w3.org/2005/08/addressing/anonymous&lt;/wsa:Address&gt;
      &lt;/wsrm:AcksTo&gt;
      &lt;wsrm:Offer&gt;
         &lt;wsrm:Identifier&gt;urn:uuid:546F6F33FB7D8BBE351179807372769&lt;/wsrm:Identifier&gt;
      &lt;/wsrm:Offer&gt;
   &lt;/wsrm:CreateSequence&gt;
&lt;/soapenv:Body&gt;
...</pre>
<p>Sample Axis2 server responds to CreateSequence request with the following message: </p>
<pre xml:space="preserve">...
&lt;soapenv:Body&gt;
   &lt;wsrm:CreateSequenceResponse xmlns:wsrm=&quot;http://schemas.xmlsoap.org/ws/2005/02/rm&quot;&gt;
      &lt;wsrm:Identifier&gt;urn:uuid:879853A6871A66641C1179807373270&lt;/wsrm:Identifier&gt;
      &lt;wsrm:Accept&gt;
         &lt;wsrm:AcksTo&gt;
            &lt;wsa:Address&gt;http://localhost:9000/services/ReliableStockQuoteService&lt;/wsa:Address&gt;
         &lt;/wsrm:AcksTo&gt;
      &lt;/wsrm:Accept&gt;
   &lt;/wsrm:CreateSequenceResponse&gt;
&lt;/soapenv:Body&gt;
...</pre>
<p>Once the sequence is established, Synapse sends the request to the server with the pre-negotiated sequence ID. </p>
<pre xml:space="preserve">&lt;soapenv:Envelope xmlns:wsa=&quot;http://www.w3.org/2005/08/addressing&quot;
                  xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&gt;
    &lt;soapenv:Header&gt;
        &lt;wsa:To&gt;http://localhost:9000/services/ReliableStockQuoteService&lt;/wsa:To&gt;
        &lt;wsa:MessageID&gt;urn:uuid:DB9A5257B637DDA38B1179807372560712002-1515891720&lt;/wsa:MessageID&gt;
        &lt;wsa:Action&gt;urn:getQuote&lt;/wsa:Action&gt;
        &lt;wsrm:Sequence xmlns:wsrm=&quot;http://schemas.xmlsoap.org/ws/2005/02/rm&quot;
                       soapenv:mustUnderstand=&quot;1&quot;&gt;
            &lt;wsrm:Identifier&gt;urn:uuid:879853A6871A66641C1179807373270&lt;/wsrm:Identifier&gt;
            &lt;wsrm:MessageNumber&gt;1&lt;/wsrm:MessageNumber&gt;
            &lt;wsrm:LastMessage/&gt;
        &lt;/wsrm:Sequence&gt;
    &lt;/soapenv:Header&gt;
    &lt;soapenv:Body&gt;
        &lt;m0:getQuote xmlns:m0=&quot;http://services.samples/xsd&quot;&gt;
            &lt;m0:request&gt;
                &lt;m0:symbol&gt;IBM&lt;/m0:symbol&gt;
            &lt;/m0:request&gt;
        &lt;/m0:getQuote&gt;
    &lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;</pre>
<p>Synapse keeps on sending above message till the server responds 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 xml:space="preserve">&lt;soapenv:Envelope xmlns:wsa=&quot;http://www.w3.org/2005/08/addressing&quot;
                  xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&gt;
    &lt;soapenv:Header&gt;
        &lt;wsa:MessageID&gt;urn:uuid:879853A6871A66641C1179807373804&lt;/wsa:MessageID&gt;
        &lt;wsa:Action&gt;http://services.samples/ReliableStockQuoteServicePortType/getQuoteResponse
        &lt;/wsa:Action&gt;
        &lt;wsa:RelatesTo&gt;urn:uuid:DB9A5257B637DDA38B1179807372560712002-1515891720&lt;/wsa:RelatesTo&gt;
        &lt;wsrm:Sequence xmlns:wsrm=&quot;http://schemas.xmlsoap.org/ws/2005/02/rm&quot;
                       soapenv:mustUnderstand=&quot;1&quot;&gt;
            &lt;wsrm:Identifier&gt;urn:uuid:546F6F33FB7D8BBE351179807372769&lt;/wsrm:Identifier&gt;
            &lt;wsrm:MessageNumber&gt;1&lt;/wsrm:MessageNumber&gt;
            &lt;wsrm:LastMessage/&gt;
        &lt;/wsrm:Sequence&gt;
        &lt;wsrm:SequenceAcknowledgement xmlns:wsrm=&quot;http://schemas.xmlsoap.org/ws/2005/02/rm&quot;
                                      soapenv:mustUnderstand=&quot;1&quot;&gt;
            &lt;wsrm:Identifier&gt;urn:uuid:879853A6871A66641C1179807373270&lt;/wsrm:Identifier&gt;
            &lt;wsrm:AcknowledgementRange Lower=&quot;1&quot; Upper=&quot;1&quot;/&gt;
        &lt;/wsrm:SequenceAcknowledgement&gt;
    &lt;/soapenv:Header&gt;
    &lt;soapenv:Body&gt;
        &lt;ns:getQuoteResponse xmlns:ns=&quot;http://services.samples/xsd&quot;&gt;
...</pre>
<p>Now both Synapse and the server are done with the actual message exchange. Then Synapse sends a request to terminate the sequence as follows: </p>
<pre xml:space="preserve">&lt;soapenv:Envelope xmlns:wsa=&quot;http://www.w3.org/2005/08/addressing&quot;
                  xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&gt;
    &lt;soapenv:Header&gt;
        &lt;wsa:To&gt;http://localhost:9000/services/ReliableStockQuoteService&lt;/wsa:To&gt;
        &lt;wsa:MessageID&gt;urn:uuid:546F6F33FB7D8BBE351179807379591&lt;/wsa:MessageID&gt;
        &lt;wsa:Action&gt;http://schemas.xmlsoap.org/ws/2005/02/rm/TerminateSequence&lt;/wsa:Action&gt;
        &lt;wsrm:SequenceAcknowledgement xmlns:wsrm=&quot;http://schemas.xmlsoap.org/ws/2005/02/rm&quot;
                                      soapenv:mustUnderstand=&quot;1&quot;&gt;
            &lt;wsrm:Identifier&gt;urn:uuid:546F6F33FB7D8BBE351179807372769&lt;/wsrm:Identifier&gt;
            &lt;wsrm:AcknowledgementRange Lower=&quot;1&quot; Upper=&quot;1&quot;/&gt;
        &lt;/wsrm:SequenceAcknowledgement&gt;
    &lt;/soapenv:Header&gt;
    &lt;soapenv:Body&gt;
        &lt;wsrm:TerminateSequence xmlns:wsrm=&quot;http://schemas.xmlsoap.org/ws/2005/02/rm&quot;&gt;
            &lt;wsrm:Identifier&gt;urn:uuid:879853A6871A66641C1179807373270&lt;/wsrm:Identifier&gt;
        &lt;/wsrm:TerminateSequence&gt;
    &lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;</pre>
<p>Server responds to the sequence termination message, accepting to terminate the sequence as follows. </p>
<pre xml:space="preserve">&lt;soapenv:Envelope xmlns:wsa=&quot;http://www.w3.org/2005/08/addressing&quot;
                  xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&gt;
    &lt;soapenv:Header&gt;
        &lt;wsa:ReplyTo&gt;
            &lt;wsa:Address&gt;http://localhost:9000/services/ReliableStockQuoteService&lt;/wsa:Address&gt;
        &lt;/wsa:ReplyTo&gt;
        &lt;wsa:MessageID&gt;urn:uuid:879853A6871A66641C1179807380190&lt;/wsa:MessageID&gt;
        &lt;wsa:Action&gt;http://schemas.xmlsoap.org/ws/2005/02/rm/TerminateSequence&lt;/wsa:Action&gt;
    &lt;/soapenv:Header&gt;
    &lt;soapenv:Body&gt;
        &lt;wsrm:TerminateSequence xmlns:wsrm=&quot;http://schemas.xmlsoap.org/ws/2005/02/rm&quot;&gt;
            &lt;wsrm:Identifier&gt;urn:uuid:546F6F33FB7D8BBE351179807372769&lt;/wsrm:Identifier&gt;
        &lt;/wsrm:TerminateSequence&gt;
    &lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;</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>
<div class="section"><h2>
<a name="Sample102" id="Sample102">Sample 102: Reliable message exchange between Synapse and the back-end server using WS-ReliableMessaging</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;in>
            &lt;RMSequence single="true" version="1.1"/>
            &lt;send>
                &lt;endpoint name="reliable">
                    &lt;address uri="http://localhost:9000/services/ReliableStockQuoteService">
                        &lt;enableRM/>
                        &lt;enableAddressing/>
                    &lt;/address>
                &lt;/endpoint>
            &lt;/send>
        &lt;/in>
        &lt;out>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre>
<strong>Objective: Demonstrate the message exchange between Synapse and the server using WS-ReliableMessaging (WS-RM) - 1.1</strong>
<p>This sample is as same as the previous one except it uses WS-RM 1.1 version where as the previous sample is using the RM version 1.0</p>
<h1>
<a name="ProxyServices" id="ProxyServices">Synapse Proxy service samples</a> </h1>

<div class="section"><h2>
<a name="Sample150" id="Sample150">Sample 150: Introduction to proxy services</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;proxy name="StockQuoteProxy">
        &lt;target>
            &lt;endpoint>
                &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
            &lt;/endpoint>
            &lt;outSequence>
                &lt;send/>
            &lt;/outSequence>
        &lt;/target>
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: Introduction to Synapse proxy services</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Start the Synapse configuration numbered 150: i.e. synapse -sample 150
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService if not already done </p>
<p>Once Synapse starts, you could go to http://localhost:8280/services/StockQuoteProxy?wsdl and view the WSDL generated for the proxy service defined in the configuration. This WSDL is based on the source WSDL supplied in the proxy service definition, and is updated to reflect the proxy service EPR. </p>
<p>Execute the stock quote client by requesting for a stock quote on the proxy service as follows: </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:8280/services/StockQuoteProxy</pre>
<p>An 'inSequence' or 'endpoint' or both of these would decide how the message would be handled after the proxy service receives the message. In the above example, the request received is forwarded to the sample service hosted on Axis2. The 'outSequence' defines how the response is handled before it is sent back to the client. By default, a proxy service is exposed over all transports configured for Synapse, unless these are specifically mentioned through the 'transports' attribute. </p>
<div class="section"><h2>
<a name="Sample151" id="Sample151">Sample 151: Custom sequences and endpoints with proxy services</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;localEntry key="proxy_wsdl"
                src="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>

    &lt;endpoint name="proxy_2_endpoint">
        &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
    &lt;/endpoint>

    &lt;sequence name="proxy_1">
        &lt;send>
            &lt;endpoint>
                &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
            &lt;/endpoint>
        &lt;/send>
    &lt;/sequence>

    &lt;sequence name="out">
        &lt;send/>
    &lt;/sequence>

    &lt;proxy name="StockQuoteProxy1">
        &lt;target inSequence="proxy_1" outSequence="out"/>
        &lt;    publishWSDL key="proxy_wsdl"/>
    &lt;
    /proxy>

    &lt;    proxy name="StockQuoteProxy2">
        &lt;target endpoint="proxy_2_endpoint" outSequence="out"/>
        &lt;publishWSDL key="proxy_wsdl"/>
    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: Using custom sequences and endpoints for message mediation with proxy services</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Start the Synapse configuration numbered 151: i.e. synapse -sample 151
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService if not already done </p>

<p>This configuration creates two proxy services. The first proxy service 'StockQuoteProxy1' uses the sequence named 'proxy_1' to process incoming messages and the sequence named &quot;out&quot; to process outgoing responses. The second proxy service 'StockQuoteProxy2' is set to directly forward messages that are received to the endpoint named 'proxy_2_endpoint' without any mediation. </p>
<p>You could send a stock quote request to each of these proxy services and receive the reply generated by the actual service hosted on the Axis2 server instance. </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:8280/services/StockQuoteProxy1
<br/>ant stockquote -Daddurl=http://localhost:8280/services/StockQuoteProxy2</pre>
<div class="section"><h2>
<a name="Sample152" id="Sample152">Sample 152: Switching transports and message format from SOAP to REST/POX</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;proxy name="StockQuoteProxy" transports="https">
        &lt;target>
            &lt;endpoint>
                &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService" format="pox"/>
            &lt;/endpoint>
            &lt;outSequence>
                &lt;send/>
            &lt;/outSequence>
        &lt;/target>
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: Switching transports and message format from SOAP to REST/POX</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Start the Synapse configuration numbered 152: i.e. synapse -sample 152
<br/>Start the Axis2 server and deploy the SimpleStockQuoteService if not already done </p>

<p>This configuration demonstrates how a proxy service could be exposed on a subset of available transports, and how it could switch from one transport to another. This example exposes the created proxy service only on HTTPS, and thus if the user tries to access it over HTTP, would result in a fault. </p>
<pre xml:space="preserve">ant stockquote -Dtrpurl=http://localhost:8280/services/StockQuoteProxy
...
     [java] org.apache.axis2.AxisFault: The service cannot be found for the endpoint reference (EPR) /soap/StockQuoteProxy</pre>

<p>Accessing this over HTTPS (ant stockquote -Dtrpurl=https://localhost:8243/services/StockQuoteProxy) causes the proxy service to access the SimpleStockQuoteService on the sample Axis2 server using REST/POX. This could be seen if the message exchange was captured using TCPMon as follows. The REST/POX response is now transformed back into a SOAP message and returned to the client. </p>
<pre xml:space="preserve">POST http://localhost:9000/services/SimpleStockQuoteService HTTP/1.1
Host: 127.0.0.1
SOAPAction: urn:getQuote
Content-Type: application/xml; charset=UTF-8;action=&quot;urn:getQuote&quot;;
Transfer-Encoding: chunked
Connection: Keep-Alive
User-Agent: Synapse-HttpComponents-NIO

75
&lt;m0:getQuote xmlns:m0=&quot;http://services.samples/xsd&quot;&gt;
   &lt;m0:request&gt;
      &lt;m0:symbol&gt;IBM&lt;/m0:symbol&gt;
   &lt;/m0:request&gt;
&lt;/m0:getQuote&gt;</pre>
<pre xml:space="preserve">HTTP/1.1 200 OK
Content-Type: application/xml; charset=UTF-8;action=&quot;http://services.samples/SimpleStockQuoteServicePortType/getQuoteResponse&quot;;
Date: Tue, 24 Apr 2007 14:42:11 GMT
Server: Synapse-HttpComponents-NIO
Transfer-Encoding: chunked
Connection: Keep-Alive

2b3
&lt;ns:getQuoteResponse xmlns:ns=&quot;http://services.samples/xsd&quot;&gt;
   &lt;ns:return&gt;
      &lt;ns:change&gt;3.7730036841862384&lt;/ns:change&gt;
      &lt;ns:earnings&gt;-9.950236235550818&lt;/ns:earnings&gt;
      &lt;ns:high&gt;-80.23868444613285&lt;/ns:high&gt;
      &lt;ns:last&gt;80.50750970812187&lt;/ns:last&gt;
      &lt;ns:lastTradeTimestamp&gt;Tue Apr 24 20:42:11 LKT 2007&lt;/ns:lastTradeTimestamp&gt;
      &lt;ns:low&gt;-79.67368355714606&lt;/ns:low&gt;
      &lt;ns:marketCap&gt;4.502043663670823E7&lt;/ns:marketCap&gt;
      &lt;ns:name&gt;IBM Company&lt;/ns:name&gt;
      &lt;ns:open&gt;-80.02229531286982&lt;/ns:open&gt;
      &lt;ns:peRatio&gt;25.089295161182022&lt;/ns:peRatio&gt;
      &lt;ns:percentageChange&gt;4.28842665653824&lt;/ns:percentageChange&gt;
      &lt;ns:prevClose&gt;87.98107059692451&lt;/ns:prevClose&gt;
      &lt;ns:symbol&gt;IBM&lt;/ns:symbol&gt;
      &lt;ns:volume&gt;19941&lt;/ns:volume&gt;
   &lt;/ns:return&gt;&lt;/ns:getQuoteResponse&gt;</pre>

<div class="section"><h2>
<a name="Sample153" id="Sample153">Sample 153: Routing the messages arrived to a proxy service without processing the security headers</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;proxy name="StockQuoteProxy">
        &lt;target>
            &lt;inSequence>
                &lt;property name="preserveProcessedHeaders" value="true"/>
                &lt;send>
                    &lt;endpoint>
                        &lt;address uri="http://localhost:9000/services/SecureStockQuoteService"/>
                    &lt;/endpoint>
                &lt;/send>
            &lt;/inSequence>
            &lt;outSequence>
                &lt;send/>
            &lt;/outSequence>
        &lt;/target>
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: Routing the messages arrived to a proxy service without processing the MustUnderstand headers (Security header)</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> You may also need to download and install the unlimited strength policy files for your JDK before using Apache Rampart (e.g. see http://java.sun.com/javase/downloads/index_jdk5.jsp)
<br/>Start the Synapse configuration numbered 153: i.e. synapse -sample 153
<br/> Start the Axis2 server and deploy the SecureStockQuoteService if not already done </p>

<p>The proxy service will receive secure messages with security headers which are MustUnderstand. But hence element 'engageSec' is not present in the proxy configuration Synapse will not engage that Apache Rampart on this proxy service. It is expected that an MustUnderstand failure exception on the AxisEngine would occur before the message arrives Synapse. But Synapse handles this message and gets it in by setting all the headers which are MustUnderstand and not processed to processed state. This will enable Synapse to route the messages without reading the Security headers (just routing the messages from client to service, both of which are secure). To execute the client, send a stock quote request to the proxy service, and sign and encrypt the request by specifying the client side security policy as follows: </p>
<pre xml:space="preserve">ant stockquote -Dtrpurl=http://localhost:8280/services/StockQuoteProxy -Dpolicy=./../../repository/conf/sample/resources/policy/client_policy_3.xml</pre>
<p>By following through the debug logs or TCPMon output, you could see that the request received by the proxy service was signed and encrypted. Also, looking up the WSDL of the proxy service by requesting the URL http://localhost:8280/services/StockQuoteProxy?wsdl reveals the security policy attachments are not there and security is not engaged. When sending the message to the backend service, you could verify that the security headers were there as in the original message to Synapse from client, and that the response received does use WS-Security, and forwarded back to the client without any modification. You should note that this wont be a security hole because the message inside Synapse is signed and encrypted and can only be forwarded to a secure service to be useful. </p>
<div class="section"><h2>
<a name="Sample154" id="Sample154">Sample 154: Load Balancing with Proxy Services </a></h2></div>
<div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;proxy name="LBProxy" transports="http" startOnLoad="true">
        &lt;target faultSequence="errorHandler">
            &lt;inSequence>
                &lt;send>
                    &lt;endpoint>
                        &lt;session type="simpleClientSession"/>
                        &lt;loadbalance algorithm="org.apache.synapse.endpoints.algorithms.RoundRobin">
                            &lt;endpoint>
                                &lt;address uri="http://localhost:9001/services/LBService1">
                                    &lt;enableAddressing/>
                                    &lt;suspendDurationOnFailure>20&lt;/suspendDurationOnFailure>
                                &lt;/address>
                            &lt;/endpoint>
                            &lt;endpoint>
                                &lt;address uri="http://localhost:9002/services/LBService1">
                                    &lt;enableAddressing/>
                                    &lt;suspendDurationOnFailure>20&lt;/suspendDurationOnFailure>
                                &lt;/address>
                            &lt;/endpoint>
                            &lt;endpoint>
                                &lt;address uri="http://localhost:9003/services/LBService1">
                                    &lt;enableAddressing/>
                                    &lt;suspendDurationOnFailure>20&lt;/suspendDurationOnFailure>
                                &lt;/address>
                            &lt;/endpoint>
                        &lt;/loadbalance>
                    &lt;/endpoint>
                &lt;/send>
                &lt;drop/>
            &lt;/inSequence>
            &lt;outSequence>
                &lt;send/>
            &lt;/outSequence>
        &lt;/target>
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_2.wsdl"/>
    &lt;/proxy>

    &lt;sequence name="errorHandler">
        &lt;makefault response="true">
            &lt;code xmlns:tns="http://www.w3.org/2003/05/soap-envelope" value="tns:Receiver"/>
            &lt;reason value="COULDN'T SEND THE MESSAGE TO THE SERVER."/>
        &lt;/makefault>
        &lt;send/>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Load Balancing with Proxy Services </strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>Sample setup is same as LoadBalance endpoints (#53 to #54)
<br/>Start the Synapse configuration numbered 154: i.e. synapse -sample 154
<br/>Start the Axis2 server and deploy the SecureStockQuoteService if not already done </p>
<p>Run the client with </p>
<pre xml:space="preserve">  ant loadbalancefailover -Dmode=session -Dtrpurl=http://localhost:8280/services/LBProxy </pre>
<p>Functionality is similar to the sample #54. </p></div>
<div class="section"><h2>
<a name="Sample155" id="Sample155">Sample 155: Dual channel invocation on both client side and serverside of Synapse with Proxy Services</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;proxy name="StockQuoteProxy">
        &lt;target>
            &lt;endpoint>
                &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService">
                    &lt;enableAddressing separateListener="true"/>
                &lt;/address>
            &lt;/endpoint>
            &lt;outSequence>
                &lt;send/>
            &lt;/outSequence>
        &lt;/target>
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: Demonstrate the dual channel invocation with Synapse proxy services</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Start the Synapse configuration numbered 155: i.e. synapse -sample 155
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService if not already done </p>

<p>This sample will show the action of the dual channel invocation within client and Synapse as well as within Synapse and the actual server. Note that if you want to enable dual channel invocation you need to set the separateListener attribute to true of the enableAddressing element of the endpoint. </p>
<p>Execute the stock quote client by requesting for a stock quote on a dual channel from the proxy service as follows: </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:8280/services/StockQuoteProxy -Dmode=dualquote</pre>
<p>In the above example, the request received is forwarded to the sample service hosted on Axis2 and the endpoint specifies to enable addressing and do the invocation over a dual channel. If you observe this message flow by using a TCPmon, you could see that on the channel you send the request to Synapse the response has been written as an HTTP 202 Accepted, where as the real response from Synapse will come over a different channel which cannot be obsesrved unless you use tcpdump to dump all the TCP level messages. </p>
<p>At the same time you can observe the behaviour of the invocation between Synapse and the actual Axis2 service, where you can see a 202 Accepted message being delivered to Synapse as the response to the request. The actual response will be delivered to Synapse over a different channel. </p>
<h1>
<a name="ProxyServiceQoS" id="ProxyServiceQoS">QoS addition and deduction for service mediation (proxy) samples</a> </h1>
<div class="section"><h2>
<a name="Sample200" id="Sample200">Sample 200: Using WS-Security with policy attachments for proxy services</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;localEntry key="sec_policy" src="file:repository/conf/sample/resources/policy/policy_3.xml"/>

    &lt;proxy name="StockQuoteProxy">
        &lt;target>
            &lt;inSequence>
                &lt;send>
                    &lt;endpoint>
                        &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                    &lt;/endpoint>
                &lt;/send>
            &lt;/inSequence>
            &lt;outSequence>
                &lt;send/>
            &lt;/outSequence>
        &lt;/target>
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
        &lt;enableSec/>
        &lt;policy key="sec_policy"/>
    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: Using WS-Security signing and encryption with proxy services through WS-Policy</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> You may also need to download and install the unlimited strength policy files for your JDK before using Apache Rampart (e.g. see http://java.sun.com/javase/downloads/index_jdk5.jsp) </p>
<p>Start the Synapse configuration numbered 200: i.e. synapse -sample 200
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService if not already done </p>

<p>The proxy service expects to receive a signed and encrypted message as specified by the security policy. Please see Apache Rampart and Axis2 documentation on the format of the policy file. The element 'engageSec' specifies that Apache Rampart should be engaged on this proxy service. Hence if Rampart rejects any request messages that does not conform to the specified policy, those messages will never reach the 'inSequence' to be processed. Since the proxy service is forwarding the received request to the simple stock quote service that does not use WS-Security, we are instructing Synapse to remove the wsse:Security header from the outgoing message. To execute the client, send a stock quote request to the proxy service, and sign and encrypt the request by specifying the client side security policy as follows: </p>
<pre xml:space="preserve">ant stockquote -Dtrpurl=http://localhost:8280/services/StockQuoteProxy -Dpolicy=./../../repository/conf/sample/resources/policy/client_policy_3.xml</pre>
<p>By following through the debug logs or TCPMon output, you could see that the request received by the proxy service was signed and encrypted. Also, looking up the WSDL of the proxy service by requesting the URLhttp://localhost:8280/services/StockQuoteProxy?wsdl reveals the security policy attachment to the supplied base WSDL. When sending the message to the backend service, you could verify that the security headers were removed, and 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>
<div class="section"><h2>
<a name="Sample201" id="Sample201">Sample 201: Reliable message exchange between the client and proxy services using WS-ReliableMessaging</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;proxy name="StockQuoteProxy">
        &lt;target>
            &lt;inSequence>
                &lt;send>
                    &lt;endpoint>
                        &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                    &lt;/endpoint>
                &lt;/send>
            &lt;/inSequence>
            &lt;outSequence>
                &lt;send/>
            &lt;/outSequence>
        &lt;/target>
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
        &lt;enableRM/>
    &lt;/proxy>

&lt;/definitions></pre>
<strong>Objective: Demonstrate the reliable message exchange between the client and Synapse using WS-ReliableMessaging (WS-RM)</strong>
<p>
<strong>Prerequisites:</strong>
<br/>Deploy the SimpleStockQuoteService in the sample Axis2 server and start it on port 9000.
<br/>Start Synapse with the sample configuration number 201 (i.e. synapse -sample 201). </p>

<p>In the above configuration, a proxy service is created with WS-RM enabled using the &lt;enableRM/&gt; 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 backend 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 xml:space="preserve">ant stockquote -Dsymbol=IBM -Dmode=quote -Daddurl=http://localhost:8280/services/StockQuoteProxy -Dwsrm=true</pre>
<p>In this case, client sends a WS-RM enabled request to Synapse 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 101. Each message would perform a similar function to the messages discussed in sample 53. </p>

<h1>
<a name="Transport" id="Transport">Transport samples and switching transports</a> </h1>
<div class="section"><h2>
<a name="Sample250" id="Sample250">Sample 250: Introduction to switching transports - JMS to http/s</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;proxy name="StockQuoteProxy" transports="jms">
        &lt;target>
            &lt;inSequence>
                &lt;property action="set" name="OUT_ONLY" value="true"/>
            &lt;/inSequence>
            &lt;endpoint>
                &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
            &lt;/endpoint>
            &lt;outSequence>
                &lt;send/>
            &lt;/outSequence>
        &lt;/target>
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
        &lt;parameter name="transport.jms.ContentType">
            &lt;rules>
                &lt;jmsProperty>contentType&lt;/jmsProperty>
                &lt;default>application/xml&lt;/default>
            &lt;/rules>
        &lt;/parameter>
    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: Introduction to switching transports with proxy services</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Start the Axis2 server with the SimpleStockQuoteService deployed
<br/> Download, install and start a JMS server, and configure Synapse to listen on JMS (refer notes below)
<br/> Start the Synapse configuration numbered 250: i.e. synapse -sample 250</p>

<p> For this example we will use <a href="http://activemq.apache.org">Apache ActiveMQ</a> as the JMS provider.
Simply download the binary distribution, extract it and launch the startup script to start the JMS broker.</p>
<p>Now you have to enable the JMS transport receiver of Synapse. Start by deploying the ActiveMQ client
libraries into the Synapse runtime. Simply copy the following jars from the ActiveMQ distribution into
SYNAPSE_HOME/lib directory:</p>
<ul>
    <li>activemq-core.jar</li>
    <li>geronimo-j2ee_management.jar</li>
    <li>geronimo-jms.jar</li>
</ul>
<p>Now you need to add some entries into the axis2.xml file. For a default ActiveMQ v5.x installation, you may
uncomment the Axis2 transport listener configuration found at repository/conf/axis2.xml as </p>
<pre xml:space="preserve">&lt;transportReceiver name=&quot;jms&quot; class=&quot;org.apache.axis2.transport.jms.JMSListener&quot;&gt; ...</pre>

<p>Once you start the Synapse configuration and request for the WSDL of the proxy service (http://localhost:8280/services/StockQuoteProxy?wsdl)
you will notice that its exposed only on the JMS transport. This is because the configuration specified this requirement in the
proxy service definition. </p>
<p>Now lets send a stock quote request on JMS, using the dumb stock quote client as follows: </p>
<pre xml:space="preserve">ant jmsclient -Djms_type=pox -Djms_dest=dynamicQueues/StockQuoteProxy -Djms_payload=MSFT</pre>
<p>On the Synapse debug log you will notice that the JMS listener received the request message as: </p>
<pre xml:space="preserve">[JMSWorker-1] DEBUG ProxyServiceMessageReceiver -Proxy Service StockQuoteProxy received a new message...</pre>
<p>Now if you examine the console running the sample Axis2 server, you will see a message indicating that the server has accepted an order as follows: </p>
<pre xml:space="preserve">Accepted order for : 16517 stocks of MSFT at $ 169.14622538721846</pre>
<p>In this sample, the client sends the request message to the proxy service exposed over JMS in Synsape. Synapse forwards this message to the HTTP EPR of the simple stock quote service hosted on the sample Axis2 server.
Note that the operation is out-only and no response is sent back to the client. The transport.jms.ContentType property
is necessary to allow the JMS transport to determine the content type of incoming messages. With the given configuration
it will first try to read the content type from the 'contentType' message property and fall back to 'application/xml'
(i.e. POX) if this property is not set. Note that the JMS client used in this example doesn't send any content type information.</p>
<p>Note: It is possible to instruct a JMS proxy service to listen to an already existing destination without creating a new one. To do this, use the parameter elements on the proxy service definition to specify the destination and connection factory etc. </p>
<p>e.g. </p>
<pre xml:space="preserve">&lt;parameter name=&quot;transport.jms.Destination&quot;&gt;dynamicTopics/something.TestTopic&lt;/parameter&gt;</pre>
<div class="section"><h2>
<a name="Sample251" id="Sample251">Sample 251: Switching from http/s to JMS</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;proxy name="StockQuoteProxy" transports="http">
        &lt;target>
            &lt;endpoint>
                &lt;address
                        uri="jms:/SimpleStockQuoteService?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;java.naming.provider.url=tcp://localhost:61616&amp;transport.jms.DestinationType=queue"/>
            &lt;/endpoint>
            &lt;inSequence>
                &lt;property action="set" name="OUT_ONLY" value="true"/>
            &lt;/inSequence>
            &lt;outSequence>
                &lt;send/>
            &lt;/outSequence>
        &lt;/target>
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: Demonstrate switching from HTTP to JMS</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Download, install and start a JMS server
<br/> Configure sample Axis2 server for JMS (refer notes below)
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService (see below)
<br/> Configure the Synase JMS transport (refer notes above - sample 250)
<br/> Start the Synapse configuration numbered 251: i.e. synapse -sample 251 </p>
    
<p>To switch from HTTP to JMS, edit the samples/axis2Server/repository/conf/axis2.xml for the sample Axis2 server and enable JMS (refer notes above), and restart the server. Now you can see that the simple stock quote service is available in both JMS and HTTP in the sample Axis2 server. To see this, point your browser to the WSDL of the service at http://localhost:9000/services/SimpleStockQuoteService?wsdl. JMS URL for the service is mentioned as below: </p>
<pre xml:space="preserve">jms:/SimpleStockQuoteService?transport.jms.ConnectionFactoryJNDIName=
QueueConnectionFactory&amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;
java.naming.provider.url=tcp://localhost:61616</pre>
<p>You may also notice that the simple stock quote proxy service exposed in Synapse is now available only in HTTP as we have specified transport for that service as HTTP. To observe this, access the WSDL of stock quote proxy service at http://localhost:8280/services/StockQuoteProxy?wsdl. </p>
<p>This Synapse configuration creates a proxy service over HTTP and forwards received messages to the above EPR using JMS, and sends back the response to the client over HTTP once the simple stock quote service responds with the stock quote reply over JMS to the Synapse server. To test this, send a place order request to Synapse using HTTP as follows: </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:8280/services/StockQuoteProxy -Dmode=placeorder -Dsymbol=MSFT</pre>
<p>The sample Axis2 server console will print a message indicating that it has accepted the order as follows: </p>
<pre xml:space="preserve">Accepted order for : 18406 stocks of MSFT at $ 83.58806051152119</pre>
<div class="section"><h2>
<a name="Sample252" id="Sample252">Sample 252: Pure text/binary and POX message support with JMS</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="text_proxy">
        &lt;log level="full"/>
        &lt;header name="Action" value="urn:placeOrder"/>
        &lt;script language="js">
            var args = mc.getPayloadXML().toString().split(" ");
            mc.setPayloadXML(
            &lt;placeOrder xmlns="http://services.samples"&gt;
            &lt;order xmlns="http://services.samples/xsd"&gt;
            &lt;price&gt;{args[0]}&lt;/price&gt;
            &lt;quantity&gt;{args[1]}&lt;/quantity&gt;
            &lt;symbol&gt;{args[2]}&lt;/symbol&gt;
            &lt;/order&gt;
            &lt;/placeOrder&gt;);
        &lt;/script>
        &lt;property action="set" name="OUT_ONLY" value="true"/>
        &lt;log level="full"/>
        &lt;send>
            &lt;endpoint>
                &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
            &lt;/endpoint>
        &lt;/send>
    &lt;/sequence>

    &lt;sequence name="mtom_proxy">
        &lt;log level="full"/>
        &lt;property action="set" name="OUT_ONLY" value="true"/>
        &lt;header name="Action" value="urn:oneWayUploadUsingMTOM"/>
        &lt;send>
            &lt;endpoint>
                &lt;address uri="http://localhost:9000/services/MTOMSwASampleService" optimize="mtom"/>
            &lt;/endpoint>
        &lt;/send>
    &lt;/sequence>

    &lt;sequence name="pox_proxy">
        &lt;property action="set" name="OUT_ONLY" value="true"/>
        &lt;header name="Action" value="urn:placeOrder"/>
        &lt;send>
            &lt;endpoint>
                &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"
                         format="soap11"/>
            &lt;/endpoint>
        &lt;/send>
    &lt;/sequence>

    &lt;sequence name="out">
        &lt;send/>
    &lt;/sequence>

    &lt;proxy name="JMSFileUploadProxy" transports="jms">
        &lt;target inSequence="mtom_proxy" outSequence="out"/>
        &lt;parameter name="transport.jms.ContentType">
            &lt;rules>
                &lt;bytesMessage>application/octet-stream&lt;/bytesMessage>
            &lt;/rules>
        &lt;/parameter>
        &lt;parameter name="Wrapper">{http://services.samples/xsd}element&lt;/parameter>
    &lt;/proxy>

    &lt;proxy name="JMSTextProxy" transports="jms">
        &lt;target inSequence="text_proxy" outSequence="out"/>
        &lt;parameter name="transport.jms.ContentType">
            &lt;rules>
                &lt;textMessage>text/plain&lt;/textMessage>
            &lt;/rules>
        &lt;/parameter>
        &lt;parameter name="Wrapper">{http://services.samples/xsd}text&lt;/parameter>
    &lt;/proxy>

    &lt;proxy name="JMSPoxProxy" transports="jms">
        &lt;target inSequence="pox_proxy" outSequence="out"/>
        &lt;parameter name="transport.jms.ContentType">application/xml&lt;/parameter>
    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: Pure POX/Text and Binary JMS Proxy services - including MTOM</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Configure JMS for Synapse (Refer notes)
<br/> Start the Synapse configuration numbered 252: i.e. synapse -sample 252
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService and the MTOMSwASampleService if not already done </p>

<p>This configuration creates three JMS proxy services named JMSFileUploadProxy, JMSTextProxy and JMSPoxProxy exposed over JMS queues with the same names as the services. The first part of this example demonstrates the pure text message support with JMS, where a user sends a space separated text JMS message of the form &quot;&lt;price&gt; &lt;qty&gt; &lt;symbol&gt;&quot;. Synapse converts this message into a SOAP message and sends this to the SimpleStockQuoteServices' placeOrder operation. Synapse uses the script mediator to transform the text message into a XML payload using the JavaScript support available to tokenize the string. The proxy service property named &quot;Wrapper&quot; defines a custom wrapper element QName, to be used when wrapping text/binary content into a SOAP envelope. </p>

<p>Execute JMS client as follows. This will post a pure text JMS message with the content defined (e.g. &quot;12.33 1000 ACP&quot;) to the specified JMS destination - dynamicQueues/JMSTextProxy </p>
<pre xml:space="preserve">ant jmsclient -Djms_type=text -Djms_payload=&quot;12.33 1000 ACP&quot; -Djms_dest=dynamicQueues/JMSTextProxy</pre>
<p>Following the logs, you could notice that Synapse received the JMS text message and transformed it into a SOAP payload as follows. Notice that the wrapper element &quot;{http://services.samples/xsd}text&quot; has been used to hold the text message content. </p>
<pre xml:space="preserve">[jms-Worker-1] INFO LogMediator To: , WSAction: urn:mediate, SOAPAction: urn:mediate, MessageID: ID:orcus.veithen.net-50631-1225235276233-1:0:1:1:1, Direction: request,
Envelope:
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&gt;
  &lt;soapenv:Body&gt;
    &lt;axis2ns1:text xmlns:axis2ns1=&quot;http://services.samples/xsd&quot;&gt;12.33 1000 ACP&lt;/axis2ns1:text&gt;
  &lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;</pre>
<p>Now, you could see how the script mediator created a stock quote request by tokenizing the text as follows, and sent the message to the placeOrder operation of the SimpleStockQuoteService. </p>
<pre xml:space="preserve">[jms-Worker-1] INFO LogMediator To: , WSAction: urn:placeOrder, SOAPAction: urn:placeOrder, MessageID: ID:orcus.veithen.net-50631-1225235276233-1:0:1:1:1, Direction: request,
Envelope:
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&gt;
  &lt;soapenv:Body&gt;
    &lt;placeOrder xmlns=&quot;http://services.samples&quot;&gt;
      &lt;order xmlns=&quot;http://services.samples/xsd&quot;&gt;
        &lt;price&gt;12.33&lt;/price&gt;
        &lt;quantity&gt;1000&lt;/quantity&gt;
        &lt;symbol&gt;ACP&lt;/symbol&gt;
      &lt;/order&gt;
    &lt;/placeOrder&gt;
  &lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;</pre>
<p>The sample Axis2 server would now accept the one-way message and issue the following message: </p>
<pre xml:space="preserve">samples.services.SimpleStockQuoteService :: Accepted order for : 1000 stocks of ACP at $ 12.33</pre>

<p>The next section of this example demonstrates how a pure binary JMS message could be received and processed through Synapse. The configuration creates a proxy service named 'JMSFileUploadProxy' that accepts binary messages and wraps them into a custom element '{http://services.samples/xsd}element'. The received message is then forwarded to the MTOMSwASampleService using the SOAP action 'urn:oneWayUploadUsingMTOM' and optimizing binary content using MTOM. To execute this sample, use the JMS client to publish a pure binary JMS message containing the file './../../repository/conf/sample/resources/mtom/asf-logo.gif' to the JMS destination 'dynamicQueues/JMSFileUploadProxy' as follows: </p>
<pre xml:space="preserve">ant jmsclient -Djms_type=binary -Djms_dest=dynamicQueues/JMSFileUploadProxy \
              -Djms_payload=./../../repository/conf/sample/resources/mtom/asf-logo.gif</pre>
<p>Examining the Synapse debug logs reveals that the binary content was received over JMS and wrapped with the specified element into a SOAP infoset as follows: </p>
<pre xml:space="preserve">[jms-Worker-1] INFO LogMediator To: , WSAction: urn:mediate, SOAPAction: urn:mediate, MessageID: ID:orcus.veithen.net-50702-1225236039556-1:0:1:1:1, Direction: request,
Envelope:
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&gt;
  &lt;soapenv:Body&gt;
    &lt;axis2ns1:element xmlns:axis2ns1=&quot;http://services.samples/xsd&quot;&gt;R0lGODlhgw...AAOw==&lt;/axis2ns1:element&gt;
  &lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;</pre>
<p>Thereafter the message was sent as a MTOM optimized message as specified by the 'format=mtom' attribute of the endpoint, to the MTOMSwASampleService using the SOAP action 'urn:oneWayUploadUsingMTOM'. Once received by the sample service, it is saved into a temporary file and could be verified for correctness. </p>
<pre xml:space="preserve">Wrote to file : ./../../work/temp/sampleServer/mtom-4417.gif</pre>

<p>The final section of this example shows how a POX JMS message received by Synapse is sent to the SimpleStockQuoteService as a SOAP message. Use the JMS client as follows to create a POX (Plain Old XML) message with a stock quote request payload (without a SOAP envelope), and send it to the JMS destination 'dynamicQueues/JMSPoxProxy' as follows: </p>
<pre xml:space="preserve">ant jmsclient -Djms_type=pox -Djms_dest=dynamicQueues/JMSPoxProxy -Djms_payload=MSFT</pre>
<p>Synapse converts the POX message into a SOAP payload and sends to the SimpleStockQuoteService after setting the SOAP action as 'urn:placeOrder'.
The sample Axis2 server displays a successful message on the receipt of the message as: </p>
<pre xml:space="preserve">samples.services.SimpleStockQuoteService :: Accepted order for : 19211 stocks of MSFT at $ 172.39703010684752</pre>
<div class="section"><h2>
<a name="Sample253" id="Sample253">Sample 253: One way bridging from JMS to http and replying with a 202 Accepted response</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;proxy name="JMStoHTTPStockQuoteProxy" transports="jms">
        &lt;target>
            &lt;inSequence>
                &lt;property action="set" name="OUT_ONLY" value="true"/>
            &lt;/inSequence>
            &lt;endpoint>
                &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
            &lt;/endpoint>
            &lt;outSequence>
                &lt;send/>
            &lt;/outSequence>
        &lt;/target>
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
    &lt;/proxy>

    &lt;proxy name="OneWayProxy" transports="http">
        &lt;target>
            &lt;inSequence>
                &lt;log level="full"/>
            &lt;/inSequence>
            &lt;endpoint>
                &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
            &lt;/endpoint>
            &lt;outSequence>
                &lt;send/>
            &lt;/outSequence>
        &lt;/target>
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: Demonstrate one-way message bridging from JMS to HTTP and replying with a HTTP 202 Accepted response</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService if not already done
<br/>Start the Synapse configuration numbered 253: i.e. synapse -sample 253 </p>

<p>This example invokes the one-way 'placeOrder' operation on the SimpleStockQuoteService using the Axis2 ServiceClient.fireAndForget() API at the client. To test this, use 'ant -Dmode=placeorder...' and you will notice the one-way JMS message flowing through Synapse into the sample Axis2 server instance over HTTP, and Axis2 acknowledging it with a HTTP 202 Accepted response. </p>
<pre xml:space="preserve">ant stockquote -Dmode=placeorder -Dtrpurl=&quot;jms:/JMStoHTTPStockQuoteProxy?\
transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory\
&amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory\
&amp;java.naming.provider.url=tcp://localhost:61616\
&amp;transport.jms.ContentTypeProperty=Content-Type&amp;transport.jms.DestinationType=queue&quot;</pre>
<pre xml:space="preserve">SimpleStockQuoteService :: Accepted order for : 7482 stocks of IBM at $ 169.27205579038733</pre>
<p>The second example shows how Synapse could be made to respond with a HTTP 202 Accepted response to a request received. The proxy service simply logs the message received and acknowledges it. On the Synapse console you could see the logged message, and if TCPMon was used at the client, you would see the 202 Accepted response sent back to the client from Synapse </p>
<pre xml:space="preserve">ant stockquote -Dmode=placeorder -Dtrpurl=http://localhost:8280/services/OneWayProxy</pre>
<pre xml:space="preserve">HTTP/1.1 202 Accepted
Content-Type: text/xml; charset=UTF-8
Host: 127.0.0.1
SOAPAction: &quot;urn:placeOrder&quot;
Date: Sun, 06 May 2007 17:20:19 GMT
Server: Synapse-HttpComponents-NIO
Transfer-Encoding: chunked

0</pre>
<div class="section"><h2>
<a name="Sample254" id="Sample254">Sample 254: Using the file system as transport medium using VFS transport listener and sender</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;proxy name="StockQuoteProxy" transports="vfs">
        &lt;parameter name="transport.vfs.FileURI">file:///home/user/test/in&lt;/parameter> &lt;!--CHANGE-->
        &lt;parameter name="transport.vfs.ContentType">text/xml&lt;/parameter>
        &lt;parameter name="transport.vfs.FileNamePattern">.*\.xml&lt;/parameter>
        &lt;parameter name="transport.PollInterval">15&lt;/parameter>
        &lt;parameter name="transport.vfs.MoveAfterProcess">file:///home/user/test/original&lt;/parameter> &lt;!--CHANGE-->
        &lt;parameter name="transport.vfs.MoveAfterFailure">file:///home/user/test/original&lt;/parameter> &lt;!--CHANGE-->
        &lt;parameter name="transport.vfs.ActionAfterProcess">MOVE&lt;/parameter>
        &lt;parameter name="transport.vfs.ActionAfterFailure">MOVE&lt;/parameter>

        &lt;target>
            &lt;endpoint>
                &lt;address format="soap12"
                         uri="http://localhost:9000/services/SimpleStockQuoteService"/>
            &lt;/endpoint>
            &lt;outSequence>
                &lt;property name="transport.vfs.ReplyFileName"
                          expression="fn:concat(fn:substring-after(get-property('MessageID'), 'urn:uuid:'), '.xml')"
                          scope="transport"/>
                &lt;property action="set" name="OUT_ONLY" value="true"/>
                &lt;send>
                    &lt;endpoint>
                        &lt;address uri="vfs:file:///home/user/test/out"/> &lt;!--CHANGE-->
                    &lt;/endpoint>
                &lt;/send>
            &lt;/outSequence>
        &lt;/target>
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: Using the file system as transport medium using VFS transport listener and sender</strong> </p>

<p>
<strong>Prerequisites:</strong>
<br/>Start the Axis2 server and deploy the SimpleStockQuoteService if not already done
<br/>Create three new directories in a test directory. e.g. in, out, original in /home/user/test. Open SYNAPSE_HOME/repository/conf/sample/synapse_sample_254.xml and edit the following values. Change transport.vfs.FileURI, transport.vfs.MoveAfterProcess, transport.vfs.MoveAfterFailure parameter values to the above in, original, original directories respectively. Change outSequence endpoint address uri to out directory with the prefix
<em>vfs:</em>. Values you have to change are marked with &lt;!--CHANGE--&gt;
<br/>Start the Synapse configuration numbered 254: i.e. synapse -sample 254 </p>

<p>Copy SYNAPSE_HOME/repository/conf/sample/resources/vfs/test.xml to the directory given in transport.vfs.FileURI above. </p>
<p>test.xml file content is as follows </p>
<pre xml:space="preserve">&lt;?xml version='1.0' encoding='UTF-8'?&gt;
    &lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:wsa=&quot;http://www.w3.org/2005/08/addressing&quot;&gt;
    &lt;soapenv:Body&gt;
            &lt;m0:getQuote xmlns:m0=&quot;http://services.samples&quot;&gt;
                    &lt;m0:request&gt;
                            &lt;m0:symbol&gt;IBM&lt;/m0:symbol&gt;
                    &lt;/m0:request&gt;
            &lt;/m0:getQuote&gt;
    &lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;</pre>
<p>VFS transport listener will pick the file from 
<em>in</em> directory and send it to the Axis2 service. The request XML file will be moved to 
<em>original</em> directory. The response from the Axis2 server will be saved to 
<em>out</em> directory. </p>
<div class="section"><h2>
<a name="Sample255" id="Sample255">Sample 255: Switching from ftp transport listener to mail transport sender</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;proxy name="StockQuoteProxy" transports="vfs">

        &lt;target>
            &lt;inSequence>
                &lt;header name="Action" value="urn:getQuote"/>
            &lt;/inSequence>
            &lt;endpoint>
                &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
            &lt;/endpoint>
            &lt;outSequence>
                &lt;property action="set" name="OUT_ONLY" value="true"/>
                &lt;send>
                    &lt;endpoint>
                        &lt;address uri="mailto:user@host"/> &lt;!--CHANGE-->
                    &lt;/endpoint>
                &lt;/send>
            &lt;/outSequence>
        &lt;/target>
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>

        &lt;parameter name="transport.vfs.FileURI">vfs:ftp://guest:guest@localhost/test?vfs.passive=true&lt;/parameter> &lt;!--CHANGE-->
        &lt;parameter name="transport.vfs.ContentType">text/xml&lt;/parameter>
        &lt;parameter name="transport.vfs.FileNamePattern">.*\.xml&lt;/parameter>
        &lt;parameter name="transport.PollInterval">15&lt;/parameter>
    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: Switching from FTP transport listener to mail transport sender</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> You will need access to an FTP server and an SMTP server to try this sample. </p>
<p>Start the Axis2 server and deploy the SimpleStockQuoteService if not already done </p>
<p>Enable mail transport sender in the Synapse axis2.xml. See 
<a href="Synapse_Samples_Setup.html       #mailsender">Setting up mail transport sender</a> </p>
<p>Create a new test directory in the FTP server. Open SYNAPSE_HOME/repository/conf/sample/synapse_sample_116.xml and edit the following values. Change transport.vfs.FileURI parameter value point to the test directory at the FTP server. Change outSequence endpoint address uri email address to a working email address. Values you have to change are marked with &lt;!--CHANGE--&gt;. </p>
<p>Start the Synapse configuration numbered 255: i.e. synapse -sample 255 </p>
<p>Copy SYNAPSE_HOME/repository/conf/sample/resources/vfs/test.xml to the ftp directory given in transport.vfs.FileURI above. </p>
<p>VFS transport listener will pick the file from the directory in the FTP server and send it to the Axis2 service. The file in the FTP directory will be deleted. The response will be sent to the given email address. </p>
<div class="section"><h2>
<a name="Sample256" id="Sample256">Sample 256: Proxy services with the mail transport </a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;proxy name="StockQuoteProxy" transports="mailto">

        &lt;target>
            &lt;inSequence>
                &lt;property name="senderAddress" expression="get-property('transport', 'From')"/>
                &lt;log level="full">
                    &lt;property name="Sender Address" expression="get-property('senderAddress')"/>
                &lt;/log>
                &lt;send>
                    &lt;endpoint>
                        &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                    &lt;/endpoint>
                &lt;/send>
            &lt;/inSequence>
            &lt;outSequence>
                &lt;property name="Subject" value="Custom Subject for Response" scope="transport"/>
                &lt;header name="To" expression="fn:concat('mailto:', get-property('senderAddress'))"/>
                &lt;log level="full">
                    &lt;property name="message" value="Response message"/>
                    &lt;property name="Sender Address" expression="get-property('senderAddress')"/>
                &lt;/log>
                &lt;send/>
            &lt;/outSequence>
        &lt;/target>
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>

        &lt;parameter name="transport.mail.Address">synapse.demo.1@gmail.com&lt;/parameter>
        &lt;parameter name="transport.mail.Protocol">pop3&lt;/parameter>
        &lt;parameter name="transport.PollInterval">5&lt;/parameter>
        &lt;parameter name="mail.pop3.host">pop.gmail.com&lt;/parameter>
        &lt;parameter name="mail.pop3.port">995&lt;/parameter>
        &lt;parameter name="mail.pop3.user">synapse.demo.1&lt;/parameter>
        &lt;parameter name="mail.pop3.password">mailpassword&lt;/parameter>
        &lt;parameter name="mail.pop3.socketFactory.class">javax.net.ssl.SSLSocketFactory&lt;/parameter>
        &lt;parameter name="mail.pop3.socketFactory.fallback">false&lt;/parameter>
        &lt;parameter name="mail.pop3.socketFactory.port">995&lt;/parameter>
        &lt;parameter name="transport.mail.ContentType">application/xml&lt;/parameter>

    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: Using the mail transport with Proxy services</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> You will need access to an email account
<br/>Start the Axis2 server and deploy the SimpleStockQuoteService if not already done
<br/>Enable mail transport sender in the Synapse axis2.xml. See
<a href="Synapse_Samples_Setup.html#mailsender">Setting up mail transport sender</a>
<br/>Start the Synapse configuration numbered 256: i.e. synapse -sample 256 </p>
<p>Send an email with the following body and any custom Subject from your mail account. </p>
<pre xml:space="preserve">&lt;getQuote xmlns=&quot;http://services.samples&quot;&gt;
   &lt;request xmlns=&quot;http://services.samples/xsd&quot;&gt;
       &lt;symbol&gt;IBM&lt;/symbol&gt;
   &lt;/request&gt;
&lt;/getQuote&gt;</pre>
<p>After a few seconds (e.g. 30s), you should receive a POX response in your email account with the stock quote reply. </p>
<p>Note that in this sample we used the <tt>transport.mail.ContentType</tt> property to make sure that the transport parses
the request message as POX. If you remove this property, you may still be able to send requests using a standard
mail client if instead of writing the XML in the body of the message, you add it as an attachment. In that case, you
should use <tt>.xml</tt> as a suffix for the attachment and format the request as a SOAP 1.1 message. Indeed,
for a file with suffix <tt>.xml</tt> the mail client will most likely use <tt>text/xml</tt> as the content type, exactly
as required for SOAP 1.1. Sending a POX message using this approach will be a lot trickier, because most standard
mail clients don't allow the user to explicitly set the content type.</p>
<div class="section"><h2>
<a name="Sample257" id="Sample257">Sample 257: Proxy services with the FIX transport </a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;proxy name="OrderProcesserProxy40" transports="fix">
        &lt;target>
            &lt;endpoint>
                &lt;address
                        uri="fix://localhost:19876?BeginString=FIX.4.0&amp;SenderCompID=SYNAPSE&amp;TargetCompID=EXEC"/>
            &lt;/endpoint>
            &lt;inSequence>
                &lt;log level="full"/>
            &lt;/inSequence>
            &lt;outSequence>
                &lt;log level="full"/>
                &lt;send/>
            &lt;/outSequence>
        &lt;/target>

        &lt;parameter name="transport.fix.AcceptorConfigURL">
            file:repository/conf/sample/resources/fix/fix-synapse.cfg
        &lt;/parameter>
        &lt;parameter name="transport.fix.AcceptorMessageStore">file&lt;/parameter>
        &lt;parameter name="transport.fix.InitiatorConfigURL">
            file:repository/conf/sample/resources/fix/synapse-sender.cfg
        &lt;/parameter>
        &lt;parameter name="transport.fix.InitiatorMessageStore">file&lt;/parameter>
    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: Demonstrate the usage of the FIX (Financial Information eXchange) transport with proxy services</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> You will need the two sample FIX applications that come with Quickfix/J (Banzai and Executor). Configure the two applications to establish sessions with Synapse. See
<a href="Synapse_Samples_Setup.html#fixsamplesconfig">Configuring Sample FIX Applications</a>
<br/>Start Banzai and Executor
<br/>Enable FIX transport in the Synapse axis2.xml. See
<a href="Synapse_Samples_Setup.html#fixtransport">Setting up FIX transport </a>
<br/>Configure Synapse for FIX samples. See
<a href="Synapse_Samples_Setup.html#fixsamples">Configuring Synapse for FIX Samples</a>
<br/>Open up the SYNAPSE_HOME/repository/conf/sample/synapse_sample_257.xml file and make sure that transport.fix.AcceptorConfigURL property points to the fix-synapse.cfg file you created. Also make sure that transport.fix. InitiatorConfigURL property points to the synapse-sender.cfg file you created. Once done you can start the Synapse configuration numbered 257: i.e. synapse -sample 257. Note that Synapse creates new FIX sessions with Banzai and Executor at this point. </p>
<p>Send an order request from Banzai to Synapse. </p>
<p>Synapse will forward the order request to the session with the Executor. The responses coming from the Executor will be sent back to Banzai. </p>
<p>To get an idea about the various transport parameters being used in this sample see 
<a href="Synapse_Samples_Setup.html#fixparameters">FIX Transport Parameters </a>. </p>
<div class="section"><h2>
<a name="Sample258" id="Sample258">Sample 258: Switching from HTTP to FIX </a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;proxy name="FIXProxy" transports="http">
        &lt;target>
            &lt;endpoint>
                &lt;address
                        uri="fix://localhost:19876?BeginString=FIX.4.0&amp;SenderCompID=SYNAPSE&amp;TargetCompID=EXEC"/>
            &lt;/endpoint>

            &lt;inSequence>
                &lt;property name="transport.fix.ServiceName" value="FIXProxy" scope="axis2-client"/>
                &lt;log level="full"/>
            &lt;/inSequence>

            &lt;outSequence>
                &lt;log level="full"/>
                &lt;send/>
            &lt;/outSequence>
        &lt;/target>

        &lt;parameter name="transport.fix.InitiatorConfigURL">
            file:repository/conf/sample/resources/fix/synapse-sender.cfg
        &lt;/parameter>
        &lt;parameter name="transport.fix.InitiatorMessageStore">file&lt;/parameter>
        &lt;parameter name="transport.fix.SendAllToInSequence">false&lt;/parameter>
        &lt;parameter name="transport.fix.DropExtraResponses">true&lt;/parameter>
    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: Demonstrate switching from HTTP to FIX</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> You will need the Executor sample application that comes with Quickfix/J. Configure Executor to establish a session with Synapse. See
<a href="Synapse_Samples_Setup.html#fixsamplesconfig">Configuring Sample FIX Applications</a>
<br/>Start Executor
<br/>Enable FIX transport sender in the Synapse axis2.xml. See
<a href="Synapse_Samples_Setup.html#fixtransport">Setting up FIX transport </a>
<br/>Configure Synapse for FIX samples. See
<a href="Synapse_Samples_Setup.html#fixsamples">Configuring Synapse for FIX Samples</a>. There is no need to create the fix-synapse.cfg file for this sample. Having only the synapse-sender.cfg file is sufficient.
<br/>Go to the SYNAPSE_HOME/repository/conf/sample/synapse_sample_258.xml file and make sure that transport.fix.InitiatorConfigURL property points to the synapse-sender.cfg file you created. Once done you can start the Synapse configuration numbered 258: i.e. synapse -sample 258 </p>

<p>Invoke the FIX Client as follows. This command sends a FIX message embedded in a SOAP message over HTTP. 
<pre>ant fixclient -Dsymbol=IBM -Dqty=5 -Dmode=buy -Daddurl=http://localhost:8280/services/FIXProxy</pre> </p>
<p>Synapse will forward the order request to the session with the Executor. The first response coming from the Executor will be sent back over HTTP. Executor generally sends two responses for each incoming order request. But since the response has to be forwarded over HTTP only one can be sent back to the client. </p>
<div class="section"><h2>
<a name="Sample259" id="Sample259">Sample 259: Switch from FIX to HTTP </a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;localEntry key="xslt-key-req"
                src="file:repository/conf/sample/resources/transform/transform_fix_to_http.xslt"/>

    &lt;proxy name="FIXProxy" transports="fix">
        &lt;target>
            &lt;endpoint>
                &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
            &lt;/endpoint>
            &lt;inSequence>
                &lt;log level="full"/>
                &lt;xslt key="xslt-key-req"/>
                &lt;log level="full"/>
            &lt;/inSequence>
            &lt;outSequence>
                &lt;log level="full"/>
            &lt;/outSequence>
        &lt;/target>
        &lt;parameter name="transport.fix.AcceptorConfigURL">
            file:repository/conf/sample/resources/fix/fix-synapse.cfg
        &lt;/parameter>
        &lt;parameter name="transport.fix.AcceptorMessageStore">file&lt;/parameter>
    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: Demonstrate the capability of switching between FIX to HTTP</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> You will need the sample FIX blotter that come with Quickfix/J (Banzai). Configure the blotter to establish sessions with Synapse. See
<a href="Synapse_Samples_Setup.html#fixsamplesconfig">Configuring Sample FIX Applications</a>
<br/>Start the Axis2 server and deploy the SimpleStockQuoteService if not already deployed
<br/>Start Banzai
<br/>Enable FIX transport in the Synapse axis2.xml. See
<a href="Synapse_Samples_Setup.html#fixtransport">Setting up FIX transport </a>
<br/>Configure Synapse for FIX samples. See
<a href="Synapse_Samples_Setup.html#fixsamples">Configuring Synapse for FIX Samples</a>
<br/>Open up the SYNAPSE_HOME/repository/conf/sample/synapse_sample_259.xml file and make sure that transport.fix.AcceptorConfigURL property points to the fix-synapse.cfg file you created. Once done you can start the Synapse configuration numbered 259: i.e. synapse -sample 259. Note that Synapse creates a new FIX session with Banzai at this point. </p>
    
<p>Send an order request from Banzai to Synapse. e.g. Buy DELL 1000 @ 100. User has to send a 'Limit' Order because price is a mandatory field for 'placeOrder' operation. </p>
<p>Synapse will forward the order request to one-way 'placeOrder' operation on the SimpleStockQuoteService. Synapse uses a simple XSLT mediator to transform the incoming FIX to a SOAP message. </p>
<pre xml:space="preserve">&lt;xsl:stylesheet version=&quot;2.0&quot;
    xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;
    xmlns:fn=&quot;http://www.w3.org/2005/02/xpath-functions&quot;&gt;
    &lt;xsl:output method=&quot;xml&quot; omit-xml-declaration=&quot;yes&quot; indent=&quot;yes&quot; /&gt;
  &lt;xsl:template match=&quot;/&quot;&gt;
    &lt;m0:placeOrder xmlns:m0=&quot;http://services.samples&quot;&gt;
        &lt;m0:order&gt;
            &lt;m0:price&gt;&lt;xsl:value-of select=&quot;//message/body/field[@id='44']&quot;/&gt;&lt;/m0:price&gt;
            &lt;m0:quantity&gt;&lt;xsl:value-of select=&quot;//message/body/field[@id='38']&quot;/&gt;&lt;/m0:quantity&gt;
            &lt;m0:symbol&gt;&lt;xsl:value-of select=&quot;//message/body/field[@id='55']&quot;/&gt;&lt;/m0:symbol&gt;
        &lt;/m0:order&gt;
    &lt;/m0:placeOrder&gt;
   &lt;/xsl:template&gt;
&lt;/xsl:stylesheet&gt;
      </pre>
<p>To get an idea about the various transport parameters being used in this sample see 
<a href="Synapse_Samples_Setup.html#fixparameters">FIX Transport Parameters </a>. </p>
<div class="section"><h2>
<a name="Sample260" id="Sample260">Sample 260: Switch from FIX to AMQP </a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;proxy name="FIXProxy" transports="fix">
        &lt;target>
            &lt;endpoint>
                &lt;address
                        uri="jms:/QpidStockQuoteService?transport.jms.ConnectionFactoryJNDIName=qpidConnectionfactory&amp;java.naming.factory.initial=org.apache.qpid.jndi.PropertiesFileInitialContextFactory&amp;java.naming.provider.url=repository/conf/sample/resources/fix/conn.properties&amp;transport.jms.ReplyDestination=replyQueue"/>
            &lt;/endpoint>
            &lt;inSequence>
                &lt;log level="full"/>
            &lt;/inSequence>
            &lt;outSequence>
                &lt;property name="transport.fix.ServiceName" value="FIXProxy" scope="axis2-client"/>
                &lt;log level="full"/>
                &lt;send/>
            &lt;/outSequence>
        &lt;/target>
        &lt;parameter name="transport.fix.AcceptorConfigURL">
            file:repository/conf/sample/resources/fix/fix-synapse.cfg
        &lt;/parameter>
        &lt;parameter name="transport.fix.AcceptorMessageStore">
            file
        &lt;/parameter>
    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: Demonstrate the capability of switching between FIX and AMQP protocols</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> You will need the sample FIX blotter that comes with Quickfix/J (Banzai). Configure the blotter to establish sessions with Synapse. See
<a href="Synapse_Samples_Setup.html#fixsamplesconfig">Configuring Sample FIX Applications</a> </p>
<p>Configure the AMQP transport for Synapse. See 
<a href="Synapse_Samples_Setup.html#setupamqpjms">Configure Synapse for AMQP Transport</a> </p>
<p>Start the AMQP consumer, by switching to samples/axis2Client directory and running the consumer using the following command. Consumer will listen to the queue 'QpidStockQuoteService', accept the orders and reply to the queue 'replyQueue'. </p>
<pre xml:space="preserve">ant amqpconsumer -Dpropfile=$SYNAPSE_HOME/repository/conf/sample/resources/fix/direct.properties</pre>
<p>Start Banzai </p>
<p>Enable FIX transport in the Synapse axis2.xml. See 
<a href="Synapse_Samples_Setup.html#fixtransport">Setting up FIX transport </a> </p>
<p>Configure Synapse for FIX samples. See 
<a href="Synapse_Samples_Setup.html#fixsamples">Configuring Synapse for FIX Samples</a> </p>
<p>Open up the SYNAPSE_HOME/repository/conf/sample/synapse_sample_260.xml file and make sure that the transport.fix.AcceptorConfigURL property points to the fix-synapse.cfg file you created. Once done you can start the Synapse configuration numbered 260: i.e. synapse -sample 260. Note that Synapse creates a new FIX session with Banzai at this point. </p>
<p>Send an order request from Banzai to Synapse. e.g. Buy DELL 1000 @ MKT. </p>
<p>Synapse will forward the order request by binding it to a JMS message payload and sending it to the AMQP consumer. AMQP consumer will send a execution back to Banzai. </p>
<p>To get an idea about the various transport parameters being used in this sample see 
<a href="Synapse_Samples_Setup.html#fixparameters">FIX Transport Parameters </a>. </p>
<div class="section"><h2>
<a name="Sample261" id="Sample261">Sample 261: Switch between FIX versions </a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;proxy name="OrderProcesserProxy41" transports="fix">
        &lt;target>
            &lt;endpoint>
                &lt;address
                        uri="fix://localhost:19877?BeginString=FIX.4.1&amp;SenderCompID=SYNAPSE&amp;TargetCompID=EXEC"/>
            &lt;/endpoint>
            &lt;inSequence>
                &lt;log level="full"/>
            &lt;/inSequence>
            &lt;outSequence>
                &lt;log level="full"/>
                &lt;send/>
            &lt;/outSequence>
        &lt;/target>
        &lt;parameter name="transport.fix.AcceptorConfigURL">
            file:repository/conf/sample/resources/fix/fix-synapse-m40.cfg
        &lt;/parameter>
        &lt;parameter name="transport.fix.AcceptorMessageStore">file&lt;/parameter>
        &lt;parameter name="transport.fix.InitiatorConfigURL">
            file:repository/conf/sample/resources/fix/synapse-sender-m.cfg
        &lt;/parameter>
        &lt;parameter name="transport.fix.InitiatorMessageStore">file&lt;/parameter>
    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: Demonstrate the capability of switching between FIX versions e.g. FIX4.0 to FIX4.1</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> You will need the two sample FIX applications that come with Quickfix/J (Banzai and Executor). Configure the two applications to establish sessions with Synapse. See
<a href="Synapse_Samples_Setup.html#fixsamplesconfig">Configuring Sample FIX Applications.</a> </p>
<p>Add the following lines to the Banzai configuration file (banzai.cfg). </p>
<pre xml:space="preserve">DataDictionary=~/etc/spec/FIX40-synapse.xml</pre>
<p>Note: FIX40-synapse.xml can be found at $SYNAPSE_HOME/repository/conf/samples/resources/fix. This is a custom FIX data dictionary file that has added tag 150,151 to the execution messages (35=8) of FIX4.0. Make sure the DataDictionary property of the banzai.cfg points to this data dictionary file. </p>
<p>Add the following lines to the Executor configuration file (executor.cfg). </p>
<pre xml:space="preserve">[session]
BeginString=FIX.4.1
SocketAcceptPort=19877</pre>
<p>Start Banzai and Executor using the custom configuration files. </p>
<p>Enable FIX transport in the Synapse axis2.xml. See 
<a href="Synapse_Samples_Setup.html#fixtransport">Setting up FIX transport </a> </p>
<p>Configure Synapse for FIX samples. We will be using two custom configuration files for Synapse in this sample. These two custom configuration files can be found at SYNAPSE_HOME/repository/conf/sample/resources/fix directory. The two files are called fix-synapse-m40.cfg and synapse-sender-m.cfg. You can point your Synapse configuration to these two files (this is already done in the supplied synapse_sample_261.xml file) or you may create copies of them and point the Synapse configuration to the copies. In either case make sure that the properties like FileStorePath and FileLogPath in the two files point to valid locations in your local file system. </p>
<p>Open up the SYNAPSE_HOME/repository/conf/sample/synapse_sample_261.xml file and make sure that transport.fix.AcceptorConfigURL property points to the fix-synapse-m40.cfg file described above and transport.fix.InitiatorConfigURL points to the synapse-sender-m.cfg file described above. Once done you can start the Synapse configuration numbered 261: i.e. synapse -sample 261. Note that Synapse creates a new FIX session with Banzai at this point. </p>
<p>Send an order request from Banzai to Synapse. e.g. Buy DELL 1000 @ MKT. </p>
<p>Synapse will forward the order request from FIX4.0 to the Executor that accepts FIX4.1 messages. Executor will send an ack and an execution back to Banzai. </p>
<p>To get an idea about the various transport parameters being used in this sample see 
<a href="Synapse_Samples_Setup.html#fixparameters">FIX Transport Parameters </a>. </p>
<div class="section"><h2>
<a name="Sample262" id="Sample262">Sample 262: CBR of FIX messages</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="CBR_SEQ">
        &lt;in>
            &lt;switch source="//message/body/field[@id='55']">
                &lt;case regex="GOOG">
                    &lt;send>
                        &lt;endpoint>
                            &lt;address
                                    uri="fix://localhost:19876?BeginString=FIX.4.0&amp;SenderCompID=SYNAPSE&amp;TargetCompID=EXEC"/>
                        &lt;/endpoint>
                    &lt;/send>
                &lt;/case>
                &lt;case regex="MSFT">
                    &lt;send>
                        &lt;endpoint>
                            &lt;address
                                    uri="fix://localhost:19877?BeginString=FIX.4.1&amp;SenderCompID=SYNAPSE&amp;TargetCompID=EXEC"/>
                        &lt;/endpoint>
                    &lt;/send>
                &lt;/case>
                &lt;default/>
            &lt;/switch>
        &lt;/in>
        &lt;out>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

    &lt;proxy name="FIXProxy" transports="fix">
        &lt;target inSequence="CBR_SEQ"/>
        &lt;parameter name="transport.fix.AcceptorConfigURL">
            file:repository/conf/sample/resources/fix/fix-synapse.cfg
        &lt;/parameter>
        &lt;parameter name="transport.fix.AcceptorMessageStore">
            file
        &lt;/parameter>
        &lt;parameter name="transport.fix.InitiatorConfigURL">
            file:repository/conf/sample/resources/fix/synapse-sender.cfg
        &lt;/parameter>
        &lt;parameter name="transport.fix.InitiatorMessageStore">
            file
        &lt;/parameter>
    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: Demonstrate the capability of CBR FIX messages</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> You will need the two sample FIX applications that come with Quickfix/J (Banzai and Executor). Configure the two applications to establish sessions with Synapse. See
<a href="Synapse_Samples_Setup.html#fixsamplesconfig">Configuring Sample FIX Applications</a> </p>
<p>Add the following lines to banzai.cfg. </p>
<pre xml:space="preserve">DataDictionary=~/etc/spec/FIX40-synapse.xml</pre>
<p>Note: FIX40-synapse.xml can be found at $SYNAPSE_HOME/repository/conf/samples/resources/fix. This is a custom FIX data dictionary file that has added tag 150,151 to the execution messages (35=8) of FIX4.0. Make sure the DataDictionary property of the banzai.cfg points to this data dictionary file. </p>
<p>Add the following lines to executor.cfg </p>
<pre xml:space="preserve">[session]
BeginString=FIX.4.1
SocketAcceptPort=19877</pre>
<p>Start Banzai and Executor using the custom config files. </p>
<p>Enable FIX transport in the Synapse axis2.xml. See 
<a href="Synapse_Samples_Setup.html#fixtransport">Setting up FIX transport </a> </p>
<p>Configure Synapse for FIX samples. See 
<a href="Synapse_Samples_Setup.html#fixsamples">Configuring Synapse for FIX Samples</a> </p>
<p>Open up the SYNAPSE_HOME/repository/conf/sample/synapse_sample_262.xml file and make sure that transport.fix.AcceptorConfigURL property points to the fix-synapse.cfg file you created and transport.fix.InitiatorConfigURL points to the synapse-sender.cfg file you created. Once done you can start the Synapse configuration numbered 262: i.e. synapse -sample 262. Note that Synapse creates a new FIX session with Banzai at this point. </p>
<p>Send an order request from Banzai to Synapse. e.g. Buy GOOG 1000 @ MKT, Buy MSFT 3000 @ MKT, Buy SUNW 500 @ 100.20 </p>
<p>Synapse will forward the order requests with symbol 'GOOG' to FIX endpoint FIX-4.0 @ localhost:19876.</p>
<p>Synapse will forward the order requests with symbol 'MSFT' to FIX endpoint FIX-4.1 @ localhost:19877.</p>
<p>Synapse will not forward the orders with other symbols to any endpoint. (default case has kept blank in the configuration)</p>
<p>To get an idea about the various transport parameters being used in this sample see 
<a href="Synapse_Samples_Setup.html#fixparameters">FIX Transport Parameters </a>. </p>  
  
<div class="section"><h2>
<a name="Sample263" id="Sample263">Sample 263: Transport switching - JMS to http/s using JBoss Messaging(JBM) </a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;proxy name="StockQuoteProxy" transports="jms">
        &lt;target>
            &lt;inSequence>
                &lt;property action="set" name="OUT_ONLY" value="true"/>
            &lt;/inSequence>
            &lt;endpoint>
                &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
            &lt;/endpoint>
            &lt;outSequence>
                &lt;send/>
            &lt;/outSequence>
        &lt;/target>
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
        &lt;parameter name="transport.jms.ContentType">
            &lt;rules>
                &lt;jmsProperty>contentType&lt;/jmsProperty>
                &lt;default>application/xml&lt;/default>
            &lt;/rules>
        &lt;/parameter>
    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: Introduction to switching transports with proxy services. The JMS provider will be <a href="http://jboss.org/jbossmessaging/">JBoss Messaging(JBM).</a></strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService (Refer steps above)
<br/> <a href="http://jboss.org/jbossmessaging/">Download</a>, install and start JBM server, and configure Synapse to listen on JBM (refer notes below)
<br/> Start the Synapse configuration numbered 250: i.e. synapse -sample 250
<br/> We need to configure the required queues in JBM. Add the following entry to JBM jms configuration inside file-config/stand-alone/non-clustered/jbm-jms.xml.
    Once JBM is installed and started you should get a message as follows: </p>
<pre xml:space="preserve">
&lt;queue name=&quot;StockQuoteProxy&quot;&gt;
    &lt;entry name=&quot;StockQuoteProxy&quot;/&gt;
&lt;/queue&gt;
</pre>
<p>Once you started the JBM server with the above changes you'll be able to see the following on STDOUT.</p>
<pre xml:space="preserve">10:18:02,673 INFO [org.jboss.messaging.core.server.impl.MessagingServerImpl]  JBoss Messaging Server version 2.0.0.BETA3 (maggot, 104) started </pre>
<p>You will now need to configure the Axis2 instance used by Synapse (not the sample Axis2 server) to enable JMS support using the above provider. Refer Axis2 documentation on setting up JMS in detail (http://ws.apache.org/axis2/1_1/jms-transport.html). You will also need to copy the jbm-core-client.jar, jbm-jms-client.jar, jnp-client.jar(these jars are inside client folder ) and
    jbm-transports.jar, netty.jar(these jars are from lib folder) jars from JBM into the lib directory to allow Synapse to connect to the JBM JMS provider. This was tested with JBM 2.0.0.BETA3 </p>

<p>You need to add the following configuration for Axis2 JMS transport listener in axis2.xml found at repository/conf/axis2.xml.</p>
<pre xml:space="preserve">
&lt;transportReceiver name=&quot;jms&quot; class=&quot;org.apache.axis2.transport.jms.JMSListener&quot;&gt;
    &lt;parameter name=&quot;java.naming.factory.initial&quot;&gt;org.jnp.interfaces.NamingContextFactory&lt;/parameter&gt;
    &lt;parameter name=&quot;java.naming.provider.url&quot;&gt;jnp://localhost:1099&lt;/parameter&gt;
    &lt;parameter name=&quot;java.naming.factory.url.pkgs&quot;&gt;org.jboss.naming:org.jnp.interfaces&lt;/parameter&gt;
    &lt;parameter name=&quot;transport.jms.ConnectionFactoryJNDIName&quot;&gt;ConnectionFactory&lt;/parameter&gt;
&lt;/transportReceiver&gt;
</pre>
<p>And also uncomment the section for JMS transport sender in the same file.</p>
<p>Once you start the Synapse configuration 250 and request for the WSDL of the proxy service (http://localhost:8280/services/StockQuoteProxy?wsdl) you will notice that its exposed only on the JMS transport. This is because the configuration specified this requirement in the proxy service definition. </p>
<p>Now lets send a stock quote request on JMS, using the dumb stock quote client as follows: </p>
<pre xml:space="preserve">ant jmsclient -Djms_type=pox -Djms_dest=StockQuoteProxy -Djms_payload=MSFT -Djava.naming.provider.url=jnp://localhost:1099 -Djava.naming.factory.initial=org.jnp.interfaces.NamingContextFactory -D=java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces</pre>
<p>On the Synapse debug log you will notice that the JMS listener received the request message as: </p>
<pre xml:space="preserve">[JMSWorker-1] DEBUG ProxyServiceMessageReceiver -Proxy Service StockQuoteProxy received a new message...</pre>
<p>Now if you examine the console running the sample Axis2 server, you will see a message indicating that the server has accepted an order as follows: </p>
<pre xml:space="preserve">Accepted order for : 16517 stocks of MSFT at $ 169.14622538721846</pre>
<p>In this sample, the client sends the request message to the proxy service exposed over JMS in Synsape. Synapse forwards this message to the HTTP EPR of the simple stock quote service hosted on the sample Axis2 server.
Note that the operation is out-only and no response is sent back to the client. The transport.jms.ContentType property
is necessary to allow the JMS transport to determine the content type of incoming messages. With the given configuration
it will first try to read the content type from the 'contentType' message property and fall back to 'application/xml'
(i.e. POX) if this property is not set. Note that the JMS client used in this example doesn't send any content type information.</p>
<p>Note: It is possible to instruct a JMS proxy service to listen to an already existing destination without creating a new one. To do this, use the parameter elements on the proxy service definition to specify the destination and connection factory etc. </p>
<p>e.g. </p>
<pre xml:space="preserve">&lt;parameter name=&quot;transport.jms.Destination&quot;&gt;dynamicTopics/something.TestTopic&lt;/parameter&gt;</pre>

  <div class="section"><h2>
    <a name="Sample264" id="Sample264">Sample 264: Sending Two-Way Messages Using JMS transport</a>
  </h2></div>
  <pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;proxy name="StockQuoteProxy" transports="http">
        &lt;target>
            &lt;endpoint>
                &lt;address
                        uri="jms:/SimpleStockQuoteService?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;java.naming.provider.url=tcp://localhost:61616&amp;transport.jms.DestinationType=queue"/>
            &lt;/endpoint>
            &lt;inSequence>
                &lt;property action="set" name="transport.jms.ContentTypeProperty" value="Content-Type"
                          scope="axis2"/>
            &lt;/inSequence>
            &lt;outSequence>
                &lt;property action="remove" name="TRANSPORT_HEADERS" scope="axis2"/>
                &lt;send/>
            &lt;/outSequence>
        &lt;/target>
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
    &lt;/proxy>

&lt;/definitions></pre>
  <p>
    <strong>Objective: Demonstrate sending request response scenario with JMS transport</strong>
  </p>
  <p>
    <strong>Prerequisites:</strong>
    <br/>You need to set up synpase and axis2 server to use the JMS transport. See
    <a href="#Sample251">Sample 251</a> for more details.
  </p>
  <p>
    This sample is similar to the <a href="#Sample251">Sample 251</a>. Only difference is we are expecting a response from the server. JMS transport uses <strong>transport.jms.ContentTypeProperty</strong> to
    determine the content type of the response message. If this property is not set JMS transport treats the incoming message as plain text.
  </p>
  <p>
    In the out path we remove the message context property <strong>TRANSPORT_HEADERS</strong>. If these property is not removed JMS headers will be passed to the client.
  </p>
  <p>Start Synpase using sample 264.</p>
  <pre xml:space="preserve">synapse.bat/synapse.sh -sample 264</pre>
  <p>Start Axis2 server with SimpleStockService deployed</p>
  <p>Invoke the stockquote client using the following command.</p>
  <pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:8280/services/StockQuoteProxy -Dsymbol=MSFT</pre>
  <p>The sample Axis2 server console will print a message indicating that it has received the request: </p>
  <pre xml:space="preserve">Generating quote for : MSFT</pre>
  <p>In the client side it shoud print a message indicating it has received the price.</p>
  <pre xml:space="preserve"> Standard :: Stock price = $154.31851804993238</pre>

  <div class="section"><h2>
    <a name="Sample265" id="Sample265">Sample 265: Switching from TCP to HTTP/S</a>
  </h2></div>
  <pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;proxy name="StockQuoteProxy" transports="tcp">
        &lt;target>
            &lt;endpoint>
                &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
            &lt;/endpoint>
            &lt;inSequence>
                &lt;log level="full"/>
                &lt;property name="OUT_ONLY" value="true"/>
            &lt;/inSequence>
        &lt;/target>
    &lt;/proxy>

&lt;/definitions></pre>
  <p>
    <strong>Objective: Demonstrate receiving SOAP messages over TCP and forwarding them over HTTP</strong>
  </p>
  <p>
    <strong>Prerequisites:</strong>
    <br/>You need to configure Synpase to use the TCP transport. The sample Axis2 client should also
      be setup to send TCP requests. Refer <a href="Synapse_Samples_Setup.html#tcp">Setting
      Up the TCP Transport</a> section in the sample setup guide for more details.
    <br/>Start Synpase using sample 265: ie synapse -sample 265
    <br/>Start Axis2 server with SimpleStockService deployed  
  </p>
  <p>
    This sample is similar to <a href="#Sample250">Sample 250</a>. Only difference is instead of the JMS transport
    we will be using the TCP transport to receive messages. TCP is not an application layer protocol. Hence there
    are no application level headers available in the requests. Synapse has to simply read the XML content coming
    through the socket and dispatch it to the right proxy service based on the information available in the message
    payload itself. The TCP transport is capable of dispatching requests based on addressing headers or the first
    element in the SOAP body. In this sample, we will get the sample client to send WS-Addressing headers in the
    request. Therefore the dispatching will take place based on the addressing header values.
  </p>
  <p>Invoke the stockquote client using the following command. Note the TCP URL in the command.</p>
  <pre xml:space="preserve">ant stockquote -Daddurl=tcp://localhost:6060/services/StockQuoteProxy -Dmode=placeorder</pre>
  <p>The TCP transport will receive the message and hand it over to the mediation engine. Synapse will
  dispatch the request to the StockQuoteProxy service based on the addressing header values.</p>
  <p>The sample Axis2 server console will print a message indicating that it has received the request: </p>
  <pre xml:space="preserve">Thu May 20 12:25:01 IST 2010 samples.services.SimpleStockQuoteService  :: Accepted order #1 for : 17621 stocks of IBM at $ 73.48068475255796
</pre>

  <div class="section"><h2>
    <a name="Sample266" id="Sample266">Sample 266: Switching from UDP to HTTP/S</a>
  </h2></div>
  <pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;proxy name="StockQuoteProxy" transports="udp">
        &lt;target>
            &lt;endpoint>
                &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
            &lt;/endpoint>
            &lt;inSequence>
                &lt;log level="full"/>
                &lt;property name="OUT_ONLY" value="true"/>
            &lt;/inSequence>
        &lt;/target>
        &lt;parameter name="transport.udp.port">9999&lt;/parameter>
        &lt;parameter name="transport.udp.contentType">text/xml&lt;/parameter>
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
    &lt;/proxy>

&lt;/definitions></pre>
  <p>
    <strong>Objective: Demonstrate receiving SOAP messages over UDP and forwarding them over HTTP</strong>
  </p>
  <p>
    <strong>Prerequisites:</strong>
    <br/>You need to configure Synpase to use the UDP transport. The sample Axis2 client should also
      be setup to send UDP requests. Refer <a href="Synapse_Samples_Setup.html#udp">Setting
      Up the UDP Transport</a> section in the sample setup guide for more details.
    <br/>Start Synpase using sample 266: i.e. synapse -sample 266
    <br/>Start Axis2 server with SimpleStockService deployed
  </p>    
  <p>
    This sample is similar to <a href="#Sample265">Sample 265</a>. Only difference is instead of the TCP transport
    we will be using the UDP transport to receive messages.
  </p>
  <p>Invoke the stockquote client using the following command. Note the UDP URL in the command.</p>
  <pre xml:space="preserve">ant stockquote -Daddurl=udp://localhost:9999?contentType=text/xml -Dmode=placeorder</pre>
  <p>Since we have configured the content type as text/xml for the proxy service, incoming messages will be processed
  as SOAP 1.1 messages.</p>
  <p>The sample Axis2 server console will print a message indicating that it has received the request: </p>
  <pre xml:space="preserve">Thu May 20 12:25:01 IST 2010 samples.services.SimpleStockQuoteService  :: Accepted order #1 for : 17621 stocks of IBM at $ 73.48068475255796
</pre>

  <h1>
<a name="Task" id="Task">Introduction to Synapse Tasks</a> </h1>
<div class="section"><h2>
<a name="Sample300" id="Sample300">Sample 300: Introduction to Tasks with simple trigger</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;task class="org.apache.synapse.startup.tasks.MessageInjector" name="CheckPrice">
        &lt;property name="to" value="http://localhost:9000/services/SimpleStockQuoteService"/>
        &lt;property name="soapAction" value="urn:getQuote"/>
        &lt;property name="message">
            &lt;m0:getQuote xmlns:m0="http://services.samples">
                &lt;m0:request>
                    &lt;m0:symbol>IBM&lt;/m0:symbol>
                &lt;/m0:request>
            &lt;/m0:getQuote>
        &lt;/property>
        &lt;trigger interval="5"/>
    &lt;/task>

    &lt;sequence name="main">
        &lt;in>
            &lt;send/>
        &lt;/in>
        &lt;out>
            &lt;log level="custom">
                &lt;property xmlns:ax21="http://services.samples/xsd"
                          xmlns:ns="http://services.samples" name="Stock_Quote_on"
                          expression="//ns:return/ax21:lastTradeTimestamp/child::text()"/>
                &lt;property xmlns:ax21="http://services.samples/xsd"
                          xmlns:ns="http://services.samples" name="For_the_organization"
                          expression="//ns:return/ax21:name/child::text()"/>
                &lt;property xmlns:ax21="http://services.samples/xsd"
                          xmlns:ns="http://services.samples" name="Last_Value"
                          expression="//ns:return/ax21:last/child::text()"/>
            &lt;/log>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Introduce the concept of tasks and how simple trigger works</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/> Build the SimpleStockQuoteService as mentioned above and start the sample Axis2 server
<br/> Start Synapse using sample 300: ie synapse -sample 300</p>
<p>When ever Synapse gets started with this configuration, a task will run periodically in 5 second
    intervals. You could limit the number of times that you want to run this task by adding a count
    attribute with an integer as the value, if the count is not present as in this sample this task
    will run until the server is shutdown.</p>
<p>One can write his/her own task class implementing the org.apache.synapse.task.Task interface and
    implementing the execute method to run the necessary logic. For this particular sample we have used the
    MessageInjector class which just injects a message specified into Synapse environment. </p>
    
<h1>
<a name="AdvancedMediation" id="AdvancedMediation">Advanced mediations with advanced mediators</a> </h1>
<div class="section"><h2>
<a name="ScriptMediator" id="ScriptMediator">Using scripts in mediation (Script Mediator)</a></h2></div>
<p>The Synapse Script Mediator is a Synapse extension, and thus all prerequisites are not bundled by default with the Synapse distribution. Before you use some script mediators you may need to manually add the required jar files to the Synapse lib directory, and optionally perform other installation tasks as may be required by the individual scripting language. This is explained in the 
<a href="Synapse_Samples_Setup.html#script">Samples Setup guide</a>. </p>
<div class="section"><h2>
<a name="Sample350" id="Sample350">Sample 350: Introduction to the script mediator using js scripts</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;registry provider="org.apache.synapse.registry.url.SimpleURLRegistry">
        &lt;!-- the root property of the simple URL registry helps resolve a resource URL as root + key -->
        &lt;parameter name="root">file:repository/conf/sample/resources/&lt;/parameter>
        &lt;!-- all resources loaded from the URL registry would be cached for this number of milli seconds -->
        &lt;parameter name="cachableDuration">15000&lt;/parameter>
    &lt;/registry>

    &lt;localEntry key="stockquoteScript"
                src="file:repository/conf/sample/resources/script/stockquoteTransformRequest.js"/>

    &lt;sequence name="main">
        &lt;in>
            &lt;!-- transform the custom quote request into a standard quote request expected by the service -->
            &lt;script language="js" key="stockquoteScript" function="transformRequest"/>
            &lt;send>
                &lt;endpoint>
                    &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                &lt;/endpoint>
            &lt;/send>
        &lt;/in>
        &lt;out>
            &lt;!-- transform the standard response back into the custom format the client expects -->
            &lt;script language="js" key="script/stockquoteTransformResponse.js"
                    function="transformResponse"/>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre>

<pre xml:space="preserve">&lt;x&gt;&lt;![CDATA[
  function transformRequest(mc) {
     var symbol = mc.getPayloadXML()..*::Code.toString();
     mc.setPayloadXML(
        &lt;m:getQuote xmlns:m=&quot;http://services.samples&quot;&gt;
           &lt;m:request&gt;
              &lt;m:symbol&gt;{symbol}&lt;/m:symbol&gt;
           &lt;/m:request&gt;
        &lt;/m:getQuote&gt;);
  }

  function transformResponse(mc) {
     var symbol = mc.getPayloadXML()..*::symbol.toString();
     var price = mc.getPayloadXML()..*::last.toString();
     mc.setPayloadXML(
        &lt;m:CheckPriceResponse xmlns:m=&quot;http://www.apache-synapse.org/test&quot;&gt;
   &lt;m:Code&gt;{symbol}&lt;/m:Code&gt;
   &lt;m:Price&gt;{price}&lt;/m:Price&gt;
        &lt;/m:CheckPriceResponse&gt;);
  }
]]&gt;&lt;/x&gt;</pre>
<p>
<strong>Objective: Introduction to the script mediator</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>Start the Synapse configuration numbered 350: i.e. synapse -sample 350
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService if not already done </p>

<p>This sample is similar to sample 8 but instead of using XSLT, the transformation is done with JavaScript and E4X. Note that the script source loaded from a resource must be specified within a CDATA tag within an XML element. The script used in this example has two functions, 'transformRequest' and 'transformResponse', and the Synapse configuration uses the function attribute to specify which function should be invoked. Use the stock quote client to issue a custom quote client as follows.: </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dmode=customquote</pre>
<p>Synapse uses the script mediator and the specified JavaScript function to convert the custom request to a standard quote request. Subsequently the response received is transformed and sent back to the client. </p>
<div class="section"><h2>
<a name="Sample351" id="Sample351">Sample 351: In-line script mediation with JavaScript</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;in>
            &lt;!-- transform the custom quote request into a standard quote requst expected by the service -->
            &lt;script language="js">
                var symbol = mc.getPayloadXML()..*::Code.toString();
                mc.setPayloadXML(
                &lt;m:getQuote xmlns:m="http://services.samples"&gt;
                &lt;m:request&gt;
                &lt;m:symbol&gt;{symbol}&lt;/m:symbol&gt;
                &lt;/m:request&gt;
                &lt;/m:getQuote&gt;);
            &lt;/script>
            &lt;send>
                &lt;endpoint>
                    &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                &lt;/endpoint>
            &lt;/send>
        &lt;/in>
        &lt;out>
            &lt;!-- transform the standard response back into the custom format the client expects -->
            &lt;script language="js">
                var symbol = mc.getPayloadXML()..*::symbol.toString();
                var price = mc.getPayloadXML()..*::last.toString();
                mc.setPayloadXML(
                &lt;m:CheckPriceResponse xmlns:m="http://services.samples/xsd"&gt;
                &lt;m:Code&gt;{symbol}&lt;/m:Code&gt;
                &lt;m:Price&gt;{price}&lt;/m:Price&gt;
                &lt;/m:CheckPriceResponse&gt;);
            &lt;/script>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Introduction to in-line script mediation</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>Start the Synapse configuration numbered 351: i.e. synapse -sample 351
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService if not already done </p>

<p>This example is functionally equivalent to sample # 350 and sample # 8, and demonstrates in-line script mediation in Synapse. Use the stock quote client to send a custom quote as in example # 350 to try this example. </p>

<div class="section"><h2>
<a name="Sample352" id="Sample352">Sample 352: Accessing Synapse message context API methods using scripting language</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;in>
            &lt;!-- change the MessageContext into a response and set a response payload -->
            &lt;script language="js">
                mc.setTo(mc.getReplyTo());
                mc.setProperty("RESPONSE", "true");
                mc.setPayloadXML(
                &lt;ns:getQuoteResponse xmlns:ns="http://services.samples/xsd"&gt;
                &lt;ns:return&gt;
                &lt;ns:last&gt;99.9&lt;/ns:last&gt;
                &lt;/ns:return&gt;
                &lt;/ns:getQuoteResponse&gt;);
            &lt;/script>
        &lt;/in>
        &lt;send/>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Accessing the Synapse APIs from scripting languages</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>Start the Synapse configuration numbered 352: i.e. bin/synapse -sample 352</p>

<p>This example shows how an in-line JavaScript mediator script could access the Synapse message context API to set its 'To' EPR and to set a custom property to mark it as a response. Execute the stock quote client, and you will receive the response &quot;99.9&quot; as the last sale price as per the above script. </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/
...
stockquote:
     [java] Standard :: Stock price = $99.9</pre>
<div class="section"><h2>
<a name="Sample353" id="Sample353">Sample 353: Using Ruby scripts for mediation</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;localEntry key="stockquoteScript"
                src="file:repository/conf/sample/resources/script/stockquoteTransform.rb"/>

    &lt;sequence name="main">
        &lt;in>
            &lt;!-- transform the custom quote request into a standard quote request expected by the service -->
            &lt;script language="rb" key="stockquoteScript" function="transformRequest"/>

            &lt;!-- send message to real endpoint referenced by name "stockquote" and stop -->
            &lt;send>
                &lt;endpoint name="stockquote">
                    &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                &lt;/endpoint>
            &lt;/send>
        &lt;/in>
        &lt;out>
            &lt;!-- transform the standard response back into the custom format the client expects -->
            &lt;script language="rb" key="stockquoteScript" function="transformResponse"/>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre>
<pre xml:space="preserve">&lt;x&gt;&lt;![CDATA[
require 'rexml/document'
include REXML

def transformRequest(mc)
   newRequest= Document.new '&lt;m:getQuote xmlns:m=&quot;http://services.samples&quot;&gt;'&lt;&lt;
      '&lt;m:request&gt;&lt;m:symbol&gt;&lt;/m:symbol&gt;&lt;/m:request&gt;&lt;/m:getQuote&gt;'
   newRequest.root.elements[1].elements[1].text = mc.getPayloadXML().root.elements[1].get_text
   mc.setPayloadXML(newRequest)
end

def transformResponse(mc)
   newResponse = Document.new '&lt;m:CheckPriceResponse xmlns:m=&quot;http://www.apache-synapse.org/test&quot;&gt;&lt;m:Code&gt;' &lt;&lt;
      '&lt;/m:Code&gt;&lt;m:Price&gt;&lt;/m:Price&gt;&lt;/m:CheckPriceResponse&gt;'
   newResponse.root.elements[1].text = mc.getPayloadXML().root.elements[1].elements[1].get_text
   newResponse.root.elements[2].text = mc.getPayloadXML().root.elements[1].elements[2].get_text
   mc.setPayloadXML(newResponse)
end
]]&gt;&lt;/x&gt;</pre>
<p>
<strong>Objective: Script mediators using Ruby</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>This sample uses Ruby so first setup support for this in Synapse as described at
<a href="Synapse_Samples_Setup.html#script">Configuring JRuby</a>
<br/>Start the Synapse configuration numbered 353: i.e. bin/synapse -sample 353
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService if not already done </p>
<p>This sample is functionally equivalent to sample # 350 (#351 and #8) but instead uses a Ruby script using the JRuby interpreter. The script has two functions, 'transformRequest' and 'transformResponse', and the Synapse configuration specifies which function to be invoked when used. Execute the stock quote client to send a custom stock quote as per example #350 and check the received stock quote response. </p>

<div class="section"><h2>
<a name="Sample354" id="Sample354">Sample 354: Using In-lined Ruby scripts for mediation</a></h2></div>
<div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;in>
            &lt;script language="rb">

                require 'rexml/document'
                include REXML
                newRequest= Document.new '&lt;m:getQuote xmlns:m="http://services.samples"&gt;&lt;m:request&gt;&lt;m:symbol&gt;...test...&lt;/m:symbol&gt;&lt;/m:request&gt;&lt;/m:getQuote&gt;'
                newRequest.root.elements[1].elements[1].text =
                $mc.getPayloadXML().root.elements[1].get_text
                $mc.setPayloadXML(newRequest)

            &lt;/script>
            &lt;send>
                &lt;endpoint>
                    &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                &lt;/endpoint>
            &lt;/send>
        &lt;/in>
        &lt;out>
            &lt;script language="rb">

                require 'rexml/document'
                include REXML
                newResponse = Document.new '&lt;m:CheckPriceResponse
                xmlns:m="http://services.samples/xsd"&gt;&lt;m:Code&gt;&lt;/m:Code&gt;&lt;m:Price&gt;&lt;/m:Price&gt;&lt;/m:CheckPriceResponse&gt;'
                newResponse.root.elements[1].text =
                $mc.getPayloadXML().root.elements[1].elements[1].get_text
                newResponse.root.elements[2].text =
                $mc.getPayloadXML().root.elements[1].elements[2].get_text
                $mc.setPayloadXML(newResponse)

            &lt;/script>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Script mediators using Ruby(In-line Ruby Script)</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>This sample uses Ruby so first setup support for this in Synapse as described at
<a href="Synapse_Samples_Setup.html#script">Configuring JRuby</a>
<br/>Start the Synapse configuration numbered 354: i.e. bin/synapse -sample 354
<br/> Start the Axis2 server and deploy the SimpleStockQuoteService if not already done </p>

<p>This sample is functionally equivalent to the sample 353. </p>
<p>Run the client with </p>
<pre xml:space="preserve"> ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dmode=customquote</pre></div>
<div class="section"><h2>
<a name="DBMediators" id="DBMediators">Database interactions in mediation (DBLookup / DBReport)</a></h2></div>
<p>Following database mediators use Derby in a client/server configuration by using the network server. Therefore, to proceed with the following samples, you need a working Derby database server and you have to follow the steps in 
<a href="Synapse_Samples_Setup.html#derby">Sample Setup Guide</a> before going through the samples. </p>

<div class="section"><h2>
<a name="Sample360" id="Sample360">Sample 360: Introduction to dblookup mediator</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="myFaultHandler">
        &lt;makefault response="true">
            &lt;code xmlns:tns="http://www.w3.org/2003/05/soap-envelope" value="tns:Receiver"/>
            &lt;reason expression="get-property('ERROR_MESSAGE')"/>
        &lt;/makefault>
        &lt;send/>
        &lt;drop/>
    &lt;/sequence>

    &lt;sequence name="main" onError="myFaultHandler">
        &lt;in>
            &lt;log level="custom">
                &lt;property name="text" value="** Looking up from the Database **"/>
            &lt;/log>
            &lt;dblookup>
                &lt;connection>
                    &lt;pool>
                        &lt;driver>org.apache.derby.jdbc.ClientDriver&lt;/driver>
                        &lt;url>jdbc:derby://localhost:1527/synapsedb;create=false&lt;/url>
                        &lt;user>synapse&lt;/user>
                        &lt;password>synapse&lt;/password>
                    &lt;/pool>
                &lt;/connection>
                &lt;statement>
                    &lt;sql>select * from company where name =?&lt;/sql>
                    &lt;parameter xmlns:m0="http://services.samples"
                               expression="//m0:getQuote/m0:request/m0:symbol" type="VARCHAR"/>
                    &lt;result name="company_id" column="id"/>
                &lt;/statement>
            &lt;/dblookup>

            &lt;switch source="get-property('company_id')">
                &lt;case regex="c1">
                    &lt;log level="custom">
                        &lt;property name="text"
                                  expression="fn:concat('Company ID - ',get-property('company_id'))"/>
                    &lt;/log>
                    &lt;send>
                        &lt;endpoint>
                            &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                        &lt;/endpoint>
                    &lt;/send>
                &lt;/case>
                &lt;case regex="c2">
                    &lt;log level="custom">
                        &lt;property name="text"
                                  expression="fn:concat('Company ID - ',get-property('company_id'))"/>
                    &lt;/log>
                    &lt;send>
                        &lt;endpoint>
                            &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                        &lt;/endpoint>
                    &lt;/send>
                &lt;/case>
                &lt;case regex="c3">
                    &lt;log level="custom">
                        &lt;property name="text"
                                  expression="fn:concat('Company ID - ',get-property('company_id'))"/>
                    &lt;/log>
                    &lt;send>
                        &lt;endpoint>
                            &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                        &lt;/endpoint>
                    &lt;/send>
                &lt;/case>
                &lt;default>
                    &lt;log level="custom">
                        &lt;property name="text" value="** Unrecognized Company ID **"/>
                    &lt;/log>
                    &lt;makefault response="true">
                        &lt;code xmlns:tns="http://www.w3.org/2003/05/soap-envelope"
                              value="tns:Receiver"/>
                        &lt;reason value="** Unrecognized Company ID **"/>
                    &lt;/makefault>
                    &lt;send/>
                    &lt;drop/>
                &lt;/default>
            &lt;/switch>
            &lt;drop/>
        &lt;/in>

        &lt;out>
            &lt;send/>
        &lt;/out>

    &lt;/sequence>

&lt;/definitions></pre>

<p>
<strong>Objective:Introduction to the dblookup mediator</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>Setting up Derby database as explained above.
<br/>Start the Synapse configuration numbered 360: i.e. synapse -sample 360
<br/>Start the Axis2 server and deploy the SimpleStockQuoteService if not already done</p>

<p>This sample demonstrates simple database read operations through Synapse. When a message arrives at dblookup mediator, it opens a connection to the database and executes the SQL query. The SQL query use '?' character for attributes that will be filled at runtime. The parameters define how to calculate the value of those attributes at runtime. In this sample a dblookup mediator has been used to extract 'id' of the company from the company database using the symbol which is evaluated using an xpath against the SOAP envelope. Then 'id' base switching will be done by a switch mediator. </p>

<p>When the IBM stock quote is requested, </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dsymbol=IBM</pre>
<p>Synapse console shows </p>
<pre xml:space="preserve">INFO LogMediator text = ** Looking up from the Database **INFO LogMediator text = Company ID &#x2013; c1
<br/></pre>

<p>For the SUN stock quote, </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dsymbol=SUN</pre>

<p>Synapse console shows </p>
<pre xml:space="preserve">INFO LogMediator text = ** Looking up from the Database **INFO LogMediator text = Company ID &#x2013; c2
<br/></pre>
<p>and for the MSFT stock quote, </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dsymbol=MSFT</pre>
<pre xml:space="preserve">INFO LogMediator text = ** Looking up from the Database **
<br/>INFO LogMediator text = Company ID &#x2013; c2</pre>
<p>For any other symbols, Synapse console shows </p>
<pre xml:space="preserve">INFO LogMediator text = ** Unrecognized Company ID **</pre>

<p>and the client gets a response which has following message. </p>
<pre xml:space="preserve">** Unrecognized Company ID **</pre>
<p/>
<div class="section"><h2>
<a name="Sample361" id="Sample361">Sample 361: Introduction to dbreport mediator</a></h2></div>
<pre xml:space="preserve">definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;in>
            &lt;send>
                &lt;endpoint>
                    &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                &lt;/endpoint>
            &lt;/send>
        &lt;/in>

        &lt;out>
            &lt;log level="custom">
                &lt;property name="text" value="** Reporting to the Database **"/>
            &lt;/log>
            &lt;dbreport>
                &lt;connection>
                    &lt;pool>
                        &lt;driver>org.apache.derby.jdbc.ClientDriver&lt;/driver>
                        &lt;url>jdbc:derby://localhost:1527/synapsedb;create=false&lt;/url>
                        &lt;user>synapse&lt;/user>
                        &lt;password>synapse&lt;/password>
                    &lt;/pool>
                &lt;/connection>
                &lt;statement>
                    &lt;sql>update company set price=? where name =?&lt;/sql>
                    &lt;parameter xmlns:m1="http://services.samples/xsd"
                               xmlns:m0="http://services.samples"
                               expression="//m0:return/m1:last/child::text()" type="DOUBLE"/>
                    &lt;parameter xmlns:m1="http://services.samples/xsd"
                               xmlns:m0="http://services.samples"
                               expression="//m0:return/m1:symbol/child::text()" type="VARCHAR"/>
                &lt;/statement>
            &lt;/dbreport>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre>
<div>
<p>
<strong>Objective:Introduction to the dbreport mediator</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>Setting up Derby database as above.
<br/>Start the Synapse configuration numbered 361: i.e. synapse -sample 361
<br/>Start the Axis2 server and deploy the SimpleStockQuoteService if not already done</p></div>
<p>This sample demonstrates simple database write operations. The dbreport mediator writes (i.e. inserts one row) to a table using the message details. It works the same as the dblookup mediator. In this sample , dbreport mediator is used for updating the stock price of the company using the last quote value which is calculated by evaluating an XPath against the response message. After running this sample, user can check the company table using the Derby client tool. It will show the inserted value by the dbreport mediator. </p>
<p>Run the client using, </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dsymbol=IBM</pre>
<p>and then execute the following query using database client tool against synapsedb. </p>
<pre xml:space="preserve">select price from company where name='IBM';</pre>
<p>It will show some value as follows. </p>
<pre xml:space="preserve">96.39535981018865</pre>
<p/>
<div class="section"><h2>
<a name="Sample362" id="Sample362">Sample 362: Action of dbreport and dblookup mediators together</a></h2></div>
<pre xml:space="preserve">definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;in>
            &lt;send>
                &lt;endpoint>
                    &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                &lt;/endpoint>
            &lt;/send>
        &lt;/in>

        &lt;out>
            &lt;log level="custom">
                &lt;property name="text" value="** Reporting to the Database **"/>
            &lt;/log>

            &lt;dbreport>
                &lt;connection>
                    &lt;pool>
                        &lt;driver>org.apache.derby.jdbc.ClientDriver&lt;/driver>
                        &lt;url>jdbc:derby://localhost:1527/synapsedb;create=false&lt;/url>
                        &lt;user>synapse&lt;/user>
                        &lt;password>synapse&lt;/password>
                    &lt;/pool>
                &lt;/connection>
                &lt;statement>
                    &lt;sql>update company set price=? where name =?&lt;/sql>
                    &lt;parameter xmlns:m1="http://services.samples/xsd"
                               xmlns:m0="http://services.samples"
                               expression="//m0:return/m1:last/child::text()" type="DOUBLE"/>
                    &lt;parameter xmlns:m1="http://services.samples/xsd"
                               xmlns:m0="http://services.samples"
                               expression="//m0:return/m1:symbol/child::text()" type="VARCHAR"/>
                &lt;/statement>
            &lt;/dbreport>
            &lt;log level="custom">
                &lt;property name="text" value="** Looking up from the Database **"/>
            &lt;/log>
            &lt;dblookup>
                &lt;connection>
                    &lt;pool>
                        &lt;driver>org.apache.derby.jdbc.ClientDriver&lt;/driver>
                        &lt;url>jdbc:derby://localhost:1527/synapsedb;create=false&lt;/url>
                        &lt;user>synapse&lt;/user>
                        &lt;password>synapse&lt;/password>
                    &lt;/pool>
                &lt;/connection>
                &lt;statement>
                    &lt;sql>select * from company where name =?&lt;/sql>
                    &lt;parameter xmlns:m1="http://services.samples/xsd"
                               xmlns:m0="http://services.samples"
                               expression="//m0:return/m1:symbol/child::text()" type="VARCHAR"/>
                    &lt;result name="stock_price" column="price"/>
                &lt;/statement>
            &lt;/dblookup>
            &lt;log level="custom">
                &lt;property name="text"
                          expression="fn:concat('Stock price - ',get-property('stock_price'))"/>
            &lt;/log>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Demonstrate the use of dbreport and dblookup mediators</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>Setting up Derby database as above
<br/>Start the Synapse configuration numbered 362: i.e. synapse -sample 362
<br/>Start the Axis2 server and deploy the SimpleStockQuoteService if not already done</p>

<p>In this sample ,the dbreport mediator works the same as the above sample. It updates the price for the given company using the response messages content. Then the dblookup mediator reads the last updated value from the company database and logs it. </p>
<p>When running client, </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dsymbol=IBM</pre>
<p>Synapse console shows, </p>
<pre xml:space="preserve">INFO LogMediator text = ** Reporting to the Database **
...
INFO LogMediator text = ** Looking up from the Database **
...
INFO LogMediator text = Stock price - 153.47886496064808</pre>
<p/>
<div class="section"><h2>
<a name="Sample363" id="Sample363">Sample 363: Reusable database connection pools</a></h2></div>
<div>
<p>Prior to run this sample please follow the 'Setting up Synapse DataSources' section in the 
<a href="Synapse_Samples_Setup.html">sample setup guide</a>.</p>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="myFaultHandler">
        &lt;makefault response="true">
            &lt;code xmlns:tns="http://www.w3.org/2003/05/soap-envelope" value="tns:Receiver"/>
            &lt;reason expression="get-property('ERROR_MESSAGE')"/>
        &lt;/makefault>
        &lt;send/>
        &lt;drop/>
    &lt;/sequence>

    &lt;sequence name="main" onError="myFaultHandler">
        &lt;in>
            &lt;log level="custom">
                &lt;property name="text" value="** Looking up from the Database **"/>
            &lt;/log>
            &lt;dblookup>
                &lt;connection>
                    &lt;pool>
                        &lt;dsName>lookupdb&lt;/dsName>
                    &lt;/pool>
                &lt;/connection>
                &lt;statement>
                    &lt;sql>select * from company where name =?&lt;/sql>
                    &lt;parameter xmlns:m0="http://services.samples"
                               expression="//m0:getQuote/m0:request/m0:symbol" type="VARCHAR"/>
                    &lt;result name="company_id" column="id"/>
                &lt;/statement>
            &lt;/dblookup>

            &lt;switch source="get-property('company_id')">
                &lt;case regex="c1">
                    &lt;log level="custom">
                        &lt;property name="text"
                                  expression="fn:concat('Company ID - ',get-property('company_id'))"/>
                    &lt;/log>
                    &lt;send>
                        &lt;endpoint>
                            &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                        &lt;/endpoint>
                    &lt;/send>
                &lt;/case>
                &lt;case regex="c2">
                    &lt;log level="custom">
                        &lt;property name="text"
                                  expression="fn:concat('Company ID - ',get-property('company_id'))"/>
                    &lt;/log>
                    &lt;send>
                        &lt;endpoint>
                            &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                        &lt;/endpoint>
                    &lt;/send>
                &lt;/case>
                &lt;case regex="c3">
                    &lt;log level="custom">
                        &lt;property name="text"
                                  expression="fn:concat('Company ID - ',get-property('company_id'))"/>
                    &lt;/log>
                    &lt;send>
                        &lt;endpoint>
                            &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                        &lt;/endpoint>
                    &lt;/send>
                &lt;/case>
                &lt;default>
                    &lt;log level="custom">
                        &lt;property name="text" value="** Unrecognized Company ID **"/>
                    &lt;/log>
                    &lt;makefault response="true">
                        &lt;code xmlns:tns="http://www.w3.org/2003/05/soap-envelope"
                              value="tns:Receiver"/>
                        &lt;reason value="** Unrecognized Company ID **"/>
                    &lt;/makefault>
                    &lt;send/>
                    &lt;drop/>
                &lt;/default>
            &lt;/switch>
            &lt;drop/>
        &lt;/in>

        &lt;out>
            &lt;log level="custom">
                &lt;property name="text" value="** Reporting to the Database **"/>
            &lt;/log>
            &lt;dbreport>
                &lt;connection>
                    &lt;pool>
                        &lt;dsName>reportdb&lt;/dsName>
                    &lt;/pool>
                &lt;/connection>
                &lt;statement>
                    &lt;sql>update company set price=? where name =?&lt;/sql>
                    &lt;parameter xmlns:m0="http://services.samples"
                               xmlns:m1="http://services.samples/xsd"
                               expression="//m0:return/m1:last/child::text()" type="DOUBLE"/>
                    &lt;parameter xmlns:m0="http://services.samples"
                               xmlns:m1="http://services.samples/xsd"
                               expression="//m0:return/m1:symbol/child::text()" type="VARCHAR"/>
                &lt;/statement>
            &lt;/dbreport>
            &lt;log level="custom">
                &lt;property name="text" value="** Looking up from the Database **"/>
            &lt;/log>
            &lt;dblookup>
                &lt;connection>
                    &lt;pool>
                        &lt;dsName>reportdb&lt;/dsName>
                    &lt;/pool>
                &lt;/connection>
                &lt;statement>
                    &lt;sql>select * from company where name =?&lt;/sql>
                    &lt;parameter xmlns:m0="http://services.samples"
                               xmlns:m1="http://services.samples/xsd"
                               expression="//m0:return/m1:symbol/child::text()" type="VARCHAR"/>
                    &lt;result name="stock_price" column="price"/>
                &lt;/statement>
            &lt;/dblookup>
            &lt;log level="custom">
                &lt;property name="text"
                          expression="fn:concat('Stock price - ',get-property('stock_price'))"/>
            &lt;/log>
            &lt;send/>

        &lt;/out>

    &lt;/sequence>

&lt;/definitions></pre></div>
<div>
<p>
<strong>Objective: Demonstrate the use of reusable database connection pools</strong></p>
<p>
<strong>Prerequisites:</strong>
<br/>Set up the database and Data sources according to the
<a href="Synapse_Samples_Setup.html">sample setup guide</a>
<br/>Start the Synapse configuration numbered 363: i.e. synapse -sample 363
<br/>Start the Axis2 server and deploy the SimpleStockQuoteService if not already done </p>

<p>Runs the client as follows</p>
<pre>ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dsymbol=IBM</pre>
<p>Then the console output </p>
<pre>INFO LogMediator text = ** Looking up from the Database ** ...
    INFO LogMediator text = Company ID - c1 ...
    INFO LogMediator text = ** Reporting to the Database ** ...
    INFO LogMediator text = ** Looking up from the Database ** ...
    INFO LogMediator text = Stock price - 183.3635460215262</pre></div>
<div class="section"><h2>
<a name="Sample364" id="Sample364">Sample 364: Executing database Stored Procedures</a></h2></div>
<div>
<p>This sample if functionally similar to sample 363 but uses a stored procedure to query
the database instead of direct SQL statements. Prior to running this sample please follow the
instructions given in the 'Setting up MySQL database server' section in the
<a href="Synapse_Samples_Setup.html#mysql">sample setup guide</a>.</p>

<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;in>
            &lt;send>
                &lt;endpoint>
                    &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                &lt;/endpoint>
            &lt;/send>
        &lt;/in>

        &lt;out>
            &lt;log level="custom">
                &lt;property name="text" value="** Reporting to the Database **"/>
            &lt;/log>

            &lt;dbreport>
                &lt;connection>
                    &lt;pool>
                        &lt;driver>com.mysql.jdbc.Driver&lt;/driver>
                        &lt;url>jdbc:mysql://localhost:3306/synapsedb&lt;/url>
                        &lt;user>user&lt;/user>
                        &lt;password>password&lt;/password>
                    &lt;/pool>
                &lt;/connection>
                &lt;statement>
                    &lt;sql>call updateCompany(?,?)&lt;/sql>
                    &lt;parameter xmlns:m0="http://services.samples"
                               xmlns:m1="http://services.samples/xsd"
                               expression="//m0:return/m1:last/child::text()" type="DOUBLE"/>
                    &lt;parameter xmlns:m0="http://services.samples"
                               xmlns:m1="http://services.samples/xsd"
                               expression="//m0:return/m1:symbol/child::text()" type="VARCHAR"/>
                &lt;/statement>
            &lt;/dbreport>
            &lt;log level="custom">
                &lt;property name="text" value="** Looking up from the Database **"/>
            &lt;/log>
            &lt;dblookup>
                &lt;connection>
                    &lt;pool>
                        &lt;driver>com.mysql.jdbc.Driver&lt;/driver>
                        &lt;url>jdbc:mysql://localhost:3306/synapsedb&lt;/url>
                        &lt;user>user&lt;/user>
                        &lt;password>password&lt;/password>
                    &lt;/pool>
                &lt;/connection>
                &lt;statement>
                    &lt;sql>call getCompany(?)&lt;/sql>
                    &lt;parameter xmlns:m0="http://services.samples"
                               xmlns:m1="http://services.samples/xsd"
                               expression="//m0:return/m1:symbol/child::text()" type="VARCHAR"/>
                    &lt;result name="stock_prize" column="price"/>
                &lt;/statement>
            &lt;/dblookup>
            &lt;log level="custom">
                &lt;property name="text"
                          expression="fn:concat('Stock Prize - ',get-property('stock_prize'))"/>
            &lt;/log>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre></div>
<div>
<p>
<strong>Objective: Demonstrate the use of dblookup and dbreport mediators to execute a database Stored Procedures</strong></p>
<p>
<strong>Prerequisites:</strong>
<br/>Set up MySQL database server according to the
<a href="Synapse_Samples_Setup.html#mysql">sample setup guide</a>
<br/>Edit the synapse_sample_364.xml
configuration file and update the configuration with the appropriate database connection details
<br/>Start the Synapse configuration numbered 364: i.e. synapse -sample 364
<br/>Start the Axis2 server and deploy the SimpleStockQuoteService if not already done </p>
<p>Run the client as follows</p>
<pre>ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dsymbol=IBM</pre>
<p>Then you will get the following console output </p>
<pre>INFO LogMediator text = ** Looking up from the Database ** ... 
INFO LogMediator text = Company ID - c1 ...  
INFO LogMediator text = Stock price - 183.3635460215262</pre></div>
<div class="section"><h2>
<a name="Throttle" id="Throttle">Throttling messages (Throttle Mediator)</a></h2></div>
<div class="section"><h2>
<a name="Sample370" id="Sample370">Sample 370: Introduction to throttle mediator and concurrency throttling</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;in>
            &lt;throttle id="A">
                &lt;policy>
                    &lt;!-- define throttle policy -->
                    &lt;wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
                                xmlns:throttle="http://www.wso2.org/products/wso2commons/throttle">
                        &lt;throttle:ThrottleAssertion>
                            &lt;throttle:MaximumConcurrentAccess>10&lt;/throttle:MaximumConcurrentAccess>
                        &lt;/throttle:ThrottleAssertion>
                    &lt;/wsp:Policy>
                &lt;/policy>
                &lt;onAccept>
                    &lt;log level="custom">
                        &lt;property name="text" value="**Access Accept**"/>
                    &lt;/log>
                    &lt;send>
                        &lt;endpoint>
                            &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                        &lt;/endpoint>
                    &lt;/send>
                &lt;/onAccept>
                &lt;onReject>
                    &lt;log level="custom">
                        &lt;property name="text" value="**Access Denied**"/>
                    &lt;/log>
                    &lt;makefault response="true">
                        &lt;code xmlns:tns="http://www.w3.org/2003/05/soap-envelope"
                              value="tns:Receiver"/>
                        &lt;reason value="**Access Denied**"/>
                    &lt;/makefault>
                    &lt;send/>
                    &lt;drop/>
                &lt;/onReject>
            &lt;/throttle>
        &lt;/in>
        &lt;out>
            &lt;throttle id="A"/>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: </strong>Demonstrate the use of throttle mediator for concurrency throttling </p>
<p>
<strong>Prerequisites:</strong>
<br/>Deploy the SimpleStockQuoteService in sample Axis2 server and start it on port 9000
<br/>Start Synapse with the sample configuration 370 (i.e. synapse -sample 370)</p>

<p>Above configuration specifies a throttle mediator inside the in mediator. Therefore, all request messages directed to the main sequence will be subjected to throttling. Throttle mediator has 'policy', 'onAccept' and 'onReject' tags at top level. The 'policy' tag specifies the throttling policy for throttling messages. This sample policy only contains a component called &quot;MaximumConcurrentAccess&quot;. This indicates the maximum number of concurrent requests that can pass through Synapse on a single unit of time. To test concurrency throttling, it is required to send concurrent requests to Synapse. If Synapse with above configuration, receives 20 requests concurrently from clients, then approximately half of those will succeed while the others being throttled. The client command to try this is as follows. </p>
<pre xml:space="preserve">ant stockquote -Dsymbol=IBM -Dmode=quote -Daddurl=http://localhost:8280/</pre>
<p/>
<div class="section"><h2>
<a name="Sample371" id="Sample371">Sample 371: Restricting requests based on policies </a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;in>
            &lt;throttle id="A">
                &lt;policy>
                    &lt;!-- define throttle policy -->
                    &lt;wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
                                xmlns:throttle="http://www.wso2.org/products/wso2commons/throttle">
                        &lt;throttle:ThrottleAssertion>
                            &lt;wsp:All>
                                &lt;throttle:ID throttle:type="IP">other&lt;/throttle:ID>
                                &lt;wsp:ExactlyOne>
                                    &lt;wsp:All>
                                        &lt;throttle:MaximumCount>4&lt;/throttle:MaximumCount>
                                        &lt;throttle:UnitTime>800000&lt;/throttle:UnitTime>
                                        &lt;throttle:ProhibitTimePeriod wsp:Optional="true">10000
                                        &lt;/throttle:ProhibitTimePeriod>
                                    &lt;/wsp:All>
                                    &lt;throttle:IsAllow>true&lt;/throttle:IsAllow>
                                &lt;/wsp:ExactlyOne>
                            &lt;/wsp:All>
                            &lt;wsp:All>
                                &lt;throttle:ID throttle:type="IP">192.168.8.200-192.168.8.222
                                &lt;/throttle:ID>
                                &lt;wsp:ExactlyOne>
                                    &lt;wsp:All>
                                        &lt;throttle:MaximumCount>8&lt;/throttle:MaximumCount>
                                        &lt;throttle:UnitTime>800000&lt;/throttle:UnitTime>
                                        &lt;throttle:ProhibitTimePeriod wsp:Optional="true">10
                                        &lt;/throttle:ProhibitTimePeriod>
                                    &lt;/wsp:All>
                                    &lt;throttle:IsAllow>true&lt;/throttle:IsAllow>
                                &lt;/wsp:ExactlyOne>
                            &lt;/wsp:All>
                            &lt;wsp:All>
                                &lt;throttle:ID throttle:type="IP">192.168.8.201&lt;/throttle:ID>
                                &lt;wsp:ExactlyOne>
                                    &lt;wsp:All>
                                        &lt;throttle:MaximumCount>200&lt;/throttle:MaximumCount>
                                        &lt;throttle:UnitTime>600000&lt;/throttle:UnitTime>
                                        &lt;throttle:ProhibitTimePeriod wsp:Optional="true"/>
                                    &lt;/wsp:All>
                                    &lt;throttle:IsAllow>true&lt;/throttle:IsAllow>
                                &lt;/wsp:ExactlyOne>
                            &lt;/wsp:All>
                            &lt;wsp:All>
                                &lt;throttle:ID throttle:type="IP">192.168.8.198&lt;/throttle:ID>
                                &lt;wsp:ExactlyOne>
                                    &lt;wsp:All>
                                        &lt;throttle:MaximumCount>50&lt;/throttle:MaximumCount>
                                        &lt;throttle:UnitTime>500000&lt;/throttle:UnitTime>
                                        &lt;throttle:ProhibitTimePeriod wsp:Optional="true"/>
                                    &lt;/wsp:All>
                                    &lt;throttle:IsAllow>true&lt;/throttle:IsAllow>
                                &lt;/wsp:ExactlyOne>
                            &lt;/wsp:All>
                        &lt;/throttle:ThrottleAssertion>
                    &lt;/wsp:Policy>
                &lt;/policy>
                &lt;onAccept>
                    &lt;log level="custom">
                        &lt;property name="text" value="**Access Accept**"/>
                    &lt;/log>
                    &lt;send>
                        &lt;endpoint>
                            &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                        &lt;/endpoint>
                    &lt;/send>
                &lt;/onAccept>
                &lt;onReject>
                    &lt;log level="custom">
                        &lt;property name="text" value="**Access Denied**"/>
                    &lt;/log>
                    &lt;makefault response="true">
                        &lt;code xmlns:tns="http://www.w3.org/2003/05/soap-envelope"
                              value="tns:Receiver"/>
                        &lt;reason value="**Access Denied**"/>
                    &lt;/makefault>
                    &lt;send/>
                    &lt;drop/>
                &lt;/onReject>
            &lt;/throttle>
        &lt;/in>
        &lt;out>
            &lt;throttle id="A"/>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Demonstrate the use of throttle mediator for restricting request counts</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>Deploy the SimpleStockQuoteService in sample Axis2 server and start it on port 9000
<br/>Start Synapse with the sample configuration 371 (i.e. synapse -sample 371)</p>

<p>Above configuration specifies a throttle mediator inside the in mediator. Therefore, all request messages directed to the main sequence will be subjected to throttling. Throttle mediator has policy, onAccept and onReject tags at the top level. Policy tag specifies the throttling policy to be applied for messages. It contains some IP address ranges and the maximum number of messages to be allowed for those ranges within a time period given in &quot;UnitTime&quot; tag. &quot;ProhibitTimePeriod&quot; tag specifies the time period to prohibit further requests after the received request count exceeds the specified time. Now run the client 5 times repetitively using the following command to see how throttling works. </p>
<pre xml:space="preserve">ant stockquote -Dsymbol=IBM -Dmode=quote -Daddurl=http://localhost:8280/</pre>
<p>For the first four requests you will get the quote prices for IBM as follows. </p>
<pre xml:space="preserve">[java] Standard :: Stock price = $177.20143371883802</pre>
<p>You will receive the following response for the fifth request. </p>
<pre xml:space="preserve">[java] org.apache.axis2.AxisFault: **Access Denied**</pre>
<p>Maximum number of requests within 800000 milliseconds is specified as 4 for any server (including localhost) other than the explicitly specified ones. Therefore, our fifth request is denied by the throttle mediator. You can verify this by looking at the Synapse console. </p>
<pre xml:space="preserve">[HttpServerWorker-1] INFO  LogMediator - text = **Access Accept**
[HttpServerWorker-2] INFO  LogMediator - text = **Access Accept**
[HttpServerWorker-3] INFO  LogMediator - text = **Access Accept**
[HttpServerWorker-4] INFO  LogMediator - text = **Access Accept**
[HttpServerWorker-5] INFO  LogMediator - text = **Access Denied** </pre>
<div class="section"><h2>
<a name="Sample372" id="Sample372">Sample 372: Use of both concurrency throttling and request rate based throttling </a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;registry provider="org.apache.synapse.registry.url.SimpleURLRegistry">
        &lt;!-- the root property of the simple URL registry helps resolve a resource URL as root + key -->
        &lt;parameter name="root">file:repository/&lt;/parameter>
        &lt;!-- all resources loaded from the URL registry would be cached for this number of milli seconds -->
        &lt;parameter name="cachableDuration">150000&lt;/parameter>
    &lt;/registry>

    &lt;sequence name="onAcceptSequence">
        &lt;log level="custom">
            &lt;property name="text" value="**Access Accept**"/>
        &lt;/log>
        &lt;send>
            &lt;endpoint>
                &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
            &lt;/endpoint>
        &lt;/send>
    &lt;/sequence>

    &lt;sequence name="onRejectSequence" trace="enable">
        &lt;log level="custom">
            &lt;property name="text" value="**Access Denied**"/>
        &lt;/log>
        &lt;makefault response="true">
            &lt;code xmlns:tns="http://www.w3.org/2003/05/soap-envelope" value="tns:Receiver"/>
            &lt;reason value="**Access Denied**"/>
        &lt;/makefault>
        &lt;send/>
        &lt;drop/>
    &lt;/sequence>

    &lt;proxy name="StockQuoteProxy">
        &lt;target>
            &lt;inSequence>
                &lt;throttle onReject="onRejectSequence" onAccept="onAcceptSequence" id="A">
                    &lt;policy key="conf/sample/resources/policy/throttle_policy.xml"/>
                &lt;/throttle>
            &lt;/inSequence>
            &lt;outSequence>
                &lt;throttle id="A"/>
                &lt;send/>
            &lt;/outSequence>
        &lt;/target>
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: Use of both concurrency throttling and request rate based throttling </strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>Deploy the SimpleStockQuoteService in sample Axis2 server and start it on port 9000
<br/>Start Synapse with the sample configuration 372 (i.e. synapse -sample 372)</p>
<p>Throttle policy is loaded from the &#x201c;throttle_policy. xml&#x201d; . That policy contains merging policy from sample 370 and 371. To check the functionality, it requires to run a load test. The all enabled request from the concurrency throttling will be controlled by the access rate base throttling according to the policy. </p>
<p>Run the client as follows </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:8280/services/StockQuoteProxy</pre>
<div>
<p>You will get same results as in sample 371. If you run the load test, results will be different due to the effect of concurrency throttling. </p></div>
<div class="section"><h2>
<a name="Class" id="Class">Extending the mediation in java (Class Mediator)</a></h2></div>
<p>Class mediator can be used to write your own custom mediation in Java and you have access to the SynapseMessageContext and to the full Synapse API in there. This is a useful extension mechanism within Synapse to extend its functionality. This class can contain fields for which you can assign values at runtime through the configuration. </p>
<div class="section"><h2>
<a name="Sample380" id="Sample380">Sample 380: Writing your own custom mediation in Java</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="fault">
        &lt;makefault>
            &lt;code xmlns:tns="http://www.w3.org/2003/05/soap-envelope" value="tns:Receiver"/>
            &lt;reason value="Mediation failed."/>
        &lt;/makefault>
        &lt;send/>
    &lt;/sequence>

    &lt;sequence name="main" onError="fault">
        &lt;in>
            &lt;send>
                &lt;endpoint name="stockquote">
                    &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                &lt;/endpoint>
            &lt;/send>
        &lt;/in>
        &lt;out>
            &lt;class name="samples.mediators.DiscountQuoteMediator">
                &lt;property name="discountFactor" value="10"/>
                &lt;property name="bonusFor" value="5"/>
            &lt;/class>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre>

<p>
<strong>Objective: Demonstrate the use of Class mediator to extend the mediation functionality</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>Make sure the synapse-samples-1.0.jar is in your class path (by default this jar is placed in the lib directory when installing Synapse)
<br/>Start Synapse with the sample configuration 380 (i.e. synapse -sample 380)
<br/>Start the sample Axis2 server and deploy the SimpleStockQuoteService. </p>

<p>In this configuration, Synapse hands over the request message to the specified endpoint, which sends it to the Axis2 server running on port 9000. </p>
<p>But the response message is passed through the class mediator before sending it back to the client. Two parameters named &quot;discountFactor&quot; </p>
<p>and &quot;bonusFor&quot; are passed to the instance mediator implementation class (i.e. samples.mediators.DiscountQuoteMediator) before each </p>
<p>invocation. Code of the mediator implementation class is shown below. </p>
<pre xml:space="preserve">package samples.mediators;

import org.apache.synapse.MessageContext;
import org.apache.synapse.Mediator;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import javax.xml.namespace.QName;

public class DiscountQuoteMediator implements Mediator {

    private static final Log log = LogFactory.getLog(DiscountQuoteMediator.class);

    private String discountFactor=&quot;10&quot;;

    private String bonusFor=&quot;10&quot;;

    private int bonusCount=0;

    public DiscountQuoteMediator(){}

    public boolean mediate(MessageContext mc) {

        String price= mc.getEnvelope().getBody().getFirstElement().getFirstElement().
                getFirstChildWithName(new QName(&quot;http://services.samples/xsd&quot;,&quot;last&quot;)).getText();

        //converting String properties into integers
        int discount=Integer.parseInt(discountFactor);
        int bonusNo=Integer.parseInt(bonusFor);
        double currentPrice=Double.parseDouble(price);

        //discounting factor is deducted from current price form every response
        Double lastPrice = new Double(currentPrice - currentPrice * discount / 100);

        //Special discount of 5% offers for the first responses as set in the bonusFor property
        if (bonusCount &lt;= bonusNo) {
            lastPrice = new Double(lastPrice.doubleValue() - lastPrice.doubleValue() * 0.05);
            bonusCount++;
        }

        String discountedPrice = lastPrice.toString();

        mc.getEnvelope().getBody().getFirstElement().getFirstElement().getFirstChildWithName
                (new QName(&quot;http://services.samples/xsd&quot;,&quot;last&quot;)).setText(discountedPrice);

        System.out.println(&quot;Quote value discounted.&quot;);
        System.out.println(&quot;Original price: &quot; + price);
        System.out.println(&quot;Discounted price: &quot; + discountedPrice);

        return true;
    }

    public String getType() {
        return null;
    }

    public void setTraceState(int traceState) {
        traceState = 0;
    }

    public int getTraceState() {
        return 0;
    }

    public void setDiscountFactor(String discount) {
        discountFactor=discount;
    }

    public String getDiscountFactor() {
        return discountFactor;
    }

    public void setBonusFor(String bonus){
        bonusFor=bonus;
    }

    public String getBonusFor(){
        return bonusFor;
    }
}</pre>
<p>All classes developed for class mediation should implement the Mediator interface, which contains the mediate(...) method. mediate(...) method of the above class is invoked for each response message mediated through the main sequence, with the message context of the current message as the parameter. All details of the message including the SOAP headers, SOAP body and properties of the context hierarchy can be accessed from the message context. In this sample, the body of the message is retrieved and the discount percentage is subtracted from the quote price. If the quote request number is less than the number specified in the &quot;bonusFor&quot; property in the configuration, a special discount is given. </p>

<p>Now run the client using the following command. </p>
<pre xml:space="preserve">ant stockquote -Dsymbol=IBM -Dmode=quote -Daddurl=http://localhost:8280</pre>
<p>You will see the below output in the client console with the discounted quote value. </p>
<pre xml:space="preserve">[java] Standard :: Stock price = $138.77458254967408</pre>
<p>Now check the console running Synapse. You will see the original value and the discounted value for the requested quote as follows. </p>
<pre xml:space="preserve">Quote value discounted.
Original price: 162.30945327447262
Discounted price: 138.77458254967408</pre>
<p/>
<div class="section"><h2>        
<a name="Sample381" id="Sample381">Sample 381:Class mediator to CBR binary messages</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;proxy name="JMSBinaryProxy" transports="jms">
        &lt;target inSequence="BINARY_CBR_SEQ"/>
    &lt;/proxy>

    &lt;sequence name="BINARY_CBR_SEQ">
        &lt;in>
            &lt;log level="full"/>
            &lt;property action="set" name="OUT_ONLY" value="true"/>
            &lt;class name="samples.mediators.BinaryExtractMediator">
                &lt;property name="offset" value="11"/>
                &lt;property name="length" value="4"/>
                &lt;property name="variableName" value="symbol"/>
                &lt;property name="binaryEncoding" value="utf-8"/>
            &lt;/class>
            &lt;log level="custom">
                &lt;property name="symbol" expression="get-property('symbol')"/>
            &lt;/log>
            &lt;switch source="get-property('symbol')">
                &lt;case regex="GOOG">
                    &lt;send>
                        &lt;endpoint>
                            &lt;address
                                    uri="jms:/dynamicTopics/mdd.GOOG?transport.jms.ConnectionFactoryJNDIName=TopicConnectionFactory&amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;java.naming.provider.url=tcp://localhost:61616&amp;transport.jms.DestinationType=topic"/>
                        &lt;/endpoint>
                    &lt;/send>
                &lt;/case>
                &lt;case regex="MSFT">
                    &lt;send>
                        &lt;endpoint>
                            &lt;address
                                    uri="jms:/dynamicTopics/mdd.MSFT?transport.jms.ConnectionFactoryJNDIName=TopicConnectionFactory&amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;java.naming.provider.url=tcp://localhost:61616&amp;transport.jms.DestinationType=topic"/>
                        &lt;/endpoint>
                    &lt;/send>
                &lt;/case>
                &lt;default/>
            &lt;/switch>
        &lt;/in>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Demonstrate on CBR a message with binary payload</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>Make sure the synapse-samples-1.0.jar is in your class path (by default this jar is placed in the lib directory when installing Synapse)
<br/>Configure JMS transport using ActiveMQ (refer <a href="Synapse_Samples_Setup.html">Sample Configuration Guide </a>)
<br/>Start Synapse with the sample configuration 381 (i.e. synapse -sample 381) </p>

<p>In this configuration, a proxy has configured to accept incoming JMS messages. JMS messages contains a binary payload. User configure the offset, length, binary encoding of the text literal that it need to use for CBR. And a variable name to set the  decoded value as a property. Configuration simply route the messages based on the text to different endpoints. </p>
<p>A JMS producer and two instances of a consumer used to demonstrate the CBR functionality.</p>
<p>Now run the first consumer using the following command. </p>
<pre xml:space="preserve">ant mddconsumer -Djms_topic=mdd.MSFT</pre>
<p>Now run the second consumer using the following command. </p>
<pre xml:space="preserve">ant mddconsumer -Djms_topic=mdd.GOOG</pre>
<p>Now run the market data producer to genenrate market data for symbol 'MSFT' using the following command. </p>
<pre xml:space="preserve">ant mddproducer -Dsymbol=MSFT</pre>
<p>Now run the market data producer to genenrate market data for symbol 'GOOG' using the following command. </p>
<pre xml:space="preserve">ant mddproducer -Dsymbol=GOOG</pre>
<p>You will see the below output in the client console(s) based on the symbol. </p>
<pre xml:space="preserve">mddconsumer:
     [java]  Market data recived for symbol : topic://mdd.MSFT
     [java]  Market data recived for symbol : topic://mdd.MSFT</pre>
<p/>
<div class="section"><h2>
<a name="XQuery" id="XQuery">Evaluating XQuery for mediation (XQuery Mediator)</a></h2></div>
<div class="section"><h2>
<a name="Sample390" id="Sample390">Sample 390: Introduction to the XQuery mediator</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;!-- the SimpleURLRegistry allows access to a URL based registry (e.g. file:/// or http://) -->
    &lt;registry provider="org.apache.synapse.registry.url.SimpleURLRegistry">
        &lt;!-- the root property of the simple URL registry helps resolve a resource URL as root + key -->
        &lt;parameter name="root">file:repository/conf/sample/resources/&lt;/parameter>
        &lt;!-- all resources loaded from the URL registry would be cached for this number of milli seconds -->
        &lt;parameter name="cachableDuration">15000&lt;/parameter>
    &lt;/registry>

    &lt;localEntry key="xquery-key-req"
                src="file:repository/conf/sample/resources/xquery/xquery_req.xq"/>

    &lt;proxy name="StockQuoteProxy">
        &lt;target>
            &lt;inSequence>
                &lt;property name="body" expression="$body/child::*[position()=1]"/>
                &lt;xquery key="xquery-key-req">
                    &lt;variable name="payload" type="ELEMENT"/>
                &lt;/xquery>
                &lt;send>
                    &lt;endpoint>
                        &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                    &lt;/endpoint>
                &lt;/send>
            &lt;/inSequence>
            &lt;outSequence>
                &lt;out>
                    &lt;xquery key="xquery/xquery_res.xq">
                        &lt;variable name="payload" type="ELEMENT"/>
                        &lt;variable xmlns:m0="http://services.samples"
                                  xmlns:ax21="http://services.samples/xsd" name="code" type="STRING"
                                  expression="self::node()//m0:return/ax21:symbol/child::text()"/>
                        &lt;variable xmlns:m0="http://services.samples"
                                  xmlns:ax21="http://services.samples/xsd" name="price"
                                  type="DOUBLE"
                                  expression="self::node()//m0:return/ax21:last/child::text()"/>
                    &lt;/xquery>
                    &lt;send/>
                &lt;/out>
            &lt;/outSequence>
        &lt;/target>
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: </strong>Introduction transformation using XQuery mediator </p>
<p>
<strong>Prerequisites</strong>:
<br/>Start the Synapse configuration numbered 390: i.e. synapse -sample 390
<br/>Start the Axis2 server and deploy the SimpleStockQuoteService if not already done. </p>

<p>This example uses the XQuery mediator to perform transformations. This sample behaves the same as sample number 8 and the only difference is that this sample uses XQuery instead of XSLT for transformation. </p>

<p>Execute the custom quote client as 'ant stockquote -Dmode=customquote ...' </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:8280/services/StockQuoteProxy -Dmode=customquote </pre>
<p/>
<div class="section"><h2>
<a name="Sample391" id="Sample391">Sample 391: How to use data from an external XML document with in XQuery </a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;!-- the SimpleURLRegistry allows access to a URL based registry (e.g. file:/// or http://) -->
    &lt;registry provider="org.apache.synapse.registry.url.SimpleURLRegistry">
        &lt;!-- the root property of the simple URL registry helps resolve a resource URL as root + key -->
        &lt;parameter name="root">file:repository/conf/sample/resources/&lt;/parameter>
        &lt;!-- all resources loaded from the URL registry would be cached for this number of milli seconds -->
        &lt;parameter name="cachableDuration">15000&lt;/parameter>
    &lt;/registry>

    &lt;proxy name="StockQuoteProxy">
        &lt;target>
            &lt;inSequence>
                &lt;send>
                    &lt;endpoint>
                        &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                    &lt;/endpoint>
                &lt;/send>
            &lt;/inSequence>
            &lt;outSequence>
                &lt;out>
                    &lt;xquery key="xquery/xquery_commisson.xq">
                        &lt;variable name="payload" type="ELEMENT"/>
                        &lt;variable name="commission" type="ELEMENT" key="misc/commission.xml"/>
                    &lt;/xquery>
                    &lt;send/>
                &lt;/out>
            &lt;/outSequence>
        &lt;/target>
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: Demonstrate the use of XQuery mediator to import external XML documents to the XQuery engine</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>Deploy the SimpleStockQuoteService in sample Axis2 server and start it on port 9000
<br/>Start Synapse with the sample configuration 391 (i.e. synapse -sample 391). </p>
<p>In this sample, data from commission.xml document is used inside XQuery . The stock quote price from the response and commission from the commission.xml document will be added and given as a new price . </p>
<p>Invoke the client as follows. </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:8280/services/StockQuoteProxy</pre>
<div class="section"><h2>
<a name="Splitter" id="Splitter">Splitting messages in to parts and process in parallel (Iterate / Clone)</a></h2></div>
<div class="section"><h2>
<a name="Sample400" id="Sample400">Sample 400: Message splitting and aggregating the responses</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;proxy name="SplitAggregateProxy">
        &lt;target>
            &lt;inSequence>
                &lt;iterate xmlns:m0="http://services.samples" expression="//m0:getQuote/m0:request"
                         preservePayload="true" attachPath="//m0:getQuote">
                    &lt;target>
                        &lt;sequence>
                            &lt;send>
                                &lt;endpoint>
                                    &lt;address
                                            uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                                &lt;/endpoint>
                            &lt;/send>
                        &lt;/sequence>
                    &lt;/target>
                &lt;/iterate>
            &lt;/inSequence>
            &lt;outSequence>
                &lt;aggregate>
                    &lt;onComplete xmlns:m0="http://services.samples"
                                expression="//m0:getQuoteResponse">
                        &lt;send/>
                    &lt;/onComplete>
                &lt;/aggregate>
            &lt;/outSequence>
        &lt;/target>
    &lt;/proxy>

&lt;/definitions></pre>
<p>
<strong>Objective: Demonstrate the use of Iterate mediator to split the messages in to parts and process them asynchronously and then aggregate the responses coming in to Synapse</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>Deploy the SimpleStockQuoteService in sample Axis2 server and start it on port 9000
<br/>Start Synapse with the sample configuration 400 (i.e. synapse -sample 400). </p>
<p>In this sample, the message sent to Synapse is comprised of a number of elements of the same type. When Synapse receives this message it will iterate through those elements and then will send to the specified endpoint. When all the responses appear to Synapse then those messages will be aggregated to form the resultant response and will send back to the client. </p>
<p>Invoke the client as follows. </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:8280/services/SplitAggregateProxy -Ditr=4</pre>
<div class="section"><h2>
<a name="Cache" id="Cache">Caching the responses over the requests (Cache Mediator)</a></h2></div>
<p>Cache mediator can be used to utilize the network bandwidth, to protect the backend service from being loaded with the same type of requests like browser refresh actions and also to speed up the execution of the web service. This mediator should be used with sense, because it is not applicable for each and every service (for example services with dynamic responses for a particular release) </p>
<div class="section"><h2>
<a name="Sample420" id="Sample420">Sample 420: Simple cache implemented on Synapse for the actual service</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;in>
            &lt;cache timeout="20" scope="per-host" collector="false"
                   hashGenerator="org.wso2.caching.digest.DOMHASHGenerator">
                &lt;implementation type="memory" maxSize="100"/>
            &lt;/cache>
            &lt;send>
                &lt;endpoint>
                    &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                &lt;/endpoint>
            &lt;/send>
        &lt;/in>
        &lt;out>
            &lt;cache collector="true"/>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre>
<p>
<strong>Objective: Demonstrate the use of Cache mediator in order to cache the response and use that cached response as the response for an identical xml request</strong> </p>
<p>
<strong>Prerequisites:</strong>
<br/>Deploy the SimpleStockQuoteService in sample Axis2 server and start it on port 9000
<br/>Start Synapse with the sample configuration 420 (i.e. synapse -sample 420)</p>
<p>In this sample, the message sent to Synapse is checked for an existing cached response by calculating the hash value of the request. If there is a cache hit in Synapse then this request will not be forwarded to the actual service, rather Synapse responds to the client with the cached response. In case of a cache miss that particular message will be forwarded to the actual service and caches that response in the out path for the use of consecutive requests of the same type. </p>
<p>To observe this behaviour, invoke the client as follows. </p>
<pre xml:space="preserve">ant stockquote -Dtrpurl=http://localhost:8280/</pre>
<p>You could notice that if you send more than one requests within 20 seconds only the first request is forwarded to the actual service, and the rest of the requests will be served by the cache inside Synapse. You could observe this by looking at the printed line of the axis2 server, as well as by observing a constant rate as the response to the client instead of the random rate, which changes by each and every 20 seconds.
<br/> </p>
<div class="section"><h2>
<a name="Callout" id="Callout">Synchronous Web Services Invocations with the Callout Mediator</a></h2></div>
<p>The Callout mediator calls the given service URL with the request message which is given by the source attribute, waits for the response and attaches the received response to the destination which is given by the target attribute. Both the source and the target can be a key or an XPath. In the case of the source, this key refers to either a message context property or to a local entry. For the target, this key refers to a message context property only. </p>
<div class="section"><h2>
<a name="Sample430" id="Sample430">Sample 430: Simple Callout Mediator for synchronizing web service invocation</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;callout serviceURL="http://localhost:9000/services/SimpleStockQuoteService"
                 action="urn:getQuote">
            &lt;source xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/"
                    xmlns:s12="http://www.w3.org/2003/05/soap-envelope"
                    xpath="s11:Body/child::*[fn:position()=1] | s12:Body/child::*[fn:position()=1]"/>
            &lt;target xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/"
                    xmlns:s12="http://www.w3.org/2003/05/soap-envelope"
                    xpath="s11:Body/child::*[fn:position()=1] | s12:Body/child::*[fn:position()=1]"/>
        &lt;/callout>
        &lt;property name="RESPONSE" value="true"/>
        &lt;header name="To" action="remove"/>
        &lt;send/>
        &lt;drop/>
    &lt;/sequence>

&lt;/definitions></pre>
<div>
<p>
<strong>Objective:</strong> Demonstrate the use of the callout mediator for the synchronized web service invocation </p>
<p>
<strong>Prerequisites:</strong>
<br/>Deploy the SimpleStockQuoteService in sample Axis2 server and start it on port 9000
<br/>Start Synapse with the sample configuration 430 (i.e. synapse -sample 430)</p>
<p>In this sample, the callout mediator does the direct service invocation to the StockQuoteService using the client request, gets the response and sets it as the first child of the SOAP message body. Then using the send mediator, the message is sent back to the client. </p>
<p>Invoke the client as follows. </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/</pre></div>
<div class="section"><h2>
    <a name="Sample440" id="Sample440">Sample 440: Exposing a SOAP Service Over JSON</a>
</h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;proxy name="JSONProxy" transports="http https">
        &lt;target>
            &lt;endpoint>
                &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
            &lt;/endpoint>
            &lt;inSequence>
                &lt;log level="full"/>
                &lt;xslt key="in_transform"/>
                &lt;property name="messageType" scope="axis2" value="text/xml"/>
            &lt;/inSequence>
            &lt;outSequence>
                &lt;log level="full"/>
                &lt;xslt key="out_transform"/>
                &lt;property name="messageType" scope="axis2" value="application/json"/>
                &lt;send/>
            &lt;/outSequence>
        &lt;/target>
    &lt;/proxy>

    &lt;localEntry key="in_transform">
        &lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                        xmlns:fn="http://www.w3.org/2005/02/xpath-functions"
                        xmlns:m0="http://services.samples" version="2.0" exclude-result-prefixes="m0 fn">
            &lt;xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
            &lt;xsl:template match="*">
                &lt;xsl:element name="{local-name()}" namespace="http://services.samples">
                    &lt;xsl:copy-of select="attribute::*"/>
                    &lt;xsl:apply-templates/>
                &lt;/xsl:element>
            &lt;/xsl:template>
        &lt;/xsl:stylesheet>
    &lt;/localEntry>

    &lt;localEntry key="out_transform">
        &lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
            &lt;xsl:output method="xml" version="1.0" encoding="UTF-8"/>
            &lt;xsl:template match="*">
                &lt;xsl:element name="{local-name()}">
                    &lt;xsl:apply-templates/>
                &lt;/xsl:element>
            &lt;/xsl:template>
        &lt;/xsl:stylesheet>
    &lt;/localEntry>

&lt;/definitions></pre>
<div>
<p>
<strong>Objective:</strong> Demonstrate the ability to switch between JSON and XML/SOAP content interchange formats</p>
<p>
<strong>Prerequisites:</strong>
<br/>Deploy the SimpleStockQuoteService in sample Axis2 server and start it on port 9000
<br/>Setup Synapse and the sample Axis2 client for JSON (Refer <a href="Synapse_Samples_Setup.html#json">Synapse Samples Setup Guide</a>
for details)
<br/>Start Synapse with the sample configuration 440 (i.e. synapse -sample 440)</p>
<p>Invoke the JSON client as follows. </p>
<pre xml:space="preserve">ant jsonclient -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/services/JSONProxy</pre>
<p>JSON client will send a stockquote request to Synapse using the JSON content interchange format. Synapse
will trnasform it into a SOAP request and forward to the Axis2 server. The SOAP response from the Axis2 server
will be converted into a JSON message and sent back to the JSON client.</p>
<p>You may use a tool like TCPMon to monitor the JSON requests sent over the wire. A sample JSON request and response
 is shown below:</p>
<pre>{"getQuote":{"request":{"symbol":"IBM"}}}</pre>
<pre>{"getQuoteResponse":{"return":{"change":3.853593376681722,"earnings":12.802850763714854,"high":67.92488310190126,"last":66.14619264746406,"lastTradeTimestamp":"Mon Aug 23 16:48:40 IST 2010","low":-66.04000424423522,"marketCap":-9334516.42324327,"name":"IBM Company","open":-64.61950137150009,"peRatio":-19.78600441437058,"percentageChange":5.411779328273005,"prevClose":71.2075112994578,"symbol":"IBM","volume":16842}}}</pre>
</div>

<div class="section"><h2>
    <a name="Sample450" id="Sample450">Sample 450: Introduction to the URL Rewrite Mediator</a>
</h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;in>
            &lt;rewrite>
                &lt;rule>
                    &lt;action type="replace" regex="soap" value="services" fragment="path"/>
                &lt;/rule>
            &lt;/rewrite>
            &lt;send/>
        &lt;/in>
        &lt;out>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre>
<div>
<p>
<strong>Objective:</strong> Demonstrate the basic functions of the URL rewrite mediator</p>
<p>
<strong>Prerequisites:</strong>
<br/>Deploy the SimpleStockQuoteService in sample Axis2 server and start it on port 9000
<br/>Start Synapse with the sample configuration 450 (i.e. synapse -sample 450)</p>
<p>Invoke the Axis2 client as follows. </p>
<pre xml:space="preserve">ant stockquote -Dtrpurl=http://localhost:8280 -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService</pre>
<p>Note that the address URL of the client request contains the context 'soap'. But in the Axis2 server all the
services are deployed under a context named 'services' by default. Synapse will rewrite the To header of the request
by replacing the 'soap' context with 'services. Hence the request will be delivered to the Axis2 server and the
Axis2 client will receive a valid response.</p>
</div>
<div class="section"><h2>
    <a name="Sample451" id="Sample451">Sample 451: Conditional URL Rewriting</a>
</h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;in>
            &lt;rewrite>
                &lt;rule>
                    &lt;condition>
                        &lt;and>
                            &lt;equal type="url" source="host" value="localhost"/>
                            &lt;not>
                                &lt;equal type="url" source="protocol" value="https"/>
                            &lt;/not>
                        &lt;/and>
                    &lt;/condition>
                    &lt;action fragment="protocol" value="https"/>
                    &lt;action fragment="port" value="9002"/>
                &lt;/rule>
            &lt;/rewrite>
            &lt;send/>
        &lt;/in>
        &lt;out>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre>
<div>
<p>
<strong>Objective:</strong> Demonstrate the ability of the URL rewrite mediator to evaluate conditions on messages and
perform rewrites based on the results.</p>
<p>
<strong>Prerequisites:</strong>
<br/>Deploy the SimpleStockQuoteService in sample Axis2 server and start it on port 9000
<br/>Start Synapse with the sample configuration 451 (i.e. synapse -sample 451)</p>
<p>Invoke the Axis2 client and send some requests to Synapse with different address URL values. If the address
URL value contains localhost as the hostname and https as the protocol prefix, Synapse will route the message as
it is. But if the hostname is localhost and the protocol is not https, Synapse will rewrite the URL by setting
https as the protocol. The port number will also be set to the HTTPS port of the Axis2 server.</p>
<p>The condition evaluation feature is provided by the Synapse evaluator framework. Currently one can evaluate
expressions on URL values, query parameters, transport headers, properties and SOAP envelope content using this
framework. Hence URL rewriting can be done based on any of these aspects.</p>    
</div>

<div class="section"><h2>
    <a name="Sample452" id="Sample452">Sample 452: Conditional URL Rewriting with Multiple Rules</a>
</h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="main">
        &lt;in>
            &lt;property name="http.port" value="9000"/>
            &lt;property name="https.port" value="9002"/>
            &lt;rewrite>
                &lt;rule>
                    &lt;action fragment="host" value="localhost"/>
                    &lt;action fragment="path" type="prepend" value="/services"/>
                &lt;/rule>
                &lt;rule>
                    &lt;condition>
                        &lt;equal type="url" source="protocol" value="http"/>
                    &lt;/condition>
                    &lt;action fragment="port" xpath="get-property('http.port')"/>
                &lt;/rule>
                &lt;rule>
                    &lt;condition>
                        &lt;equal type="url" source="protocol" value="https"/>
                    &lt;/condition>
                    &lt;action fragment="port" xpath="get-property('https.port')"/>
                &lt;/rule>
            &lt;/rewrite>
            &lt;log level="full"/>
            &lt;send/>
        &lt;/in>
        &lt;out>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre>
<div>
<p>
<strong>Objective:</strong> Demonstrate the ability of the URL rewrite mediator to perform rewrites based
on multiple rules.</p>
<p>
<strong>Prerequisites:</strong>
<br/>Deploy the SimpleStockQuoteService in sample Axis2 server and start it on port 9000
<br/>Start Synapse with the sample configuration 452 (i.e. synapse -sample 452)</p>
<p>Invoke the Axis2 client as follows. </p>
<pre xml:space="preserve">ant stockquote -Dtrpurl=http://localhost:8280 -Daddurl=http://test.com/SimpleStockQuoteService</pre>
<p>The provided address URL does not contain a port number and the context. The URL rewrite mediator will replace
the hostname to be 'localhost' and add the context '/services' to the path. Then it will add the appropriate
port number to the URL by looking at the protocol prefix. Ultimately the service request will be routed the sample Axis2
server and the client will receive a valid response.</p>
<p>Another important aspect shown by this sample is the ability of the URL rewirte mediator to obtain the necessary
values by executing XPath expressions. The port numbers are calculated by executing an XPath on the messages.</p>
</div>

<div class="section"><h2>
<a name="Sample460" id="Sample460">Sample 460: How to initialize and use a Spring Bean as a Mediator</a></h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;registry provider="org.apache.synapse.registry.url.SimpleURLRegistry">
        &lt;parameter name="root">file:repository/conf/sample/resources/&lt;/parameter>
        &lt;parameter name="cachableDuration">15000&lt;/parameter>
    &lt;/registry>

    &lt;sequence name="main">
        &lt;!--Setting the Spring Mediator and its Spring Beans xml file location -->
        &lt;!--Note that springtest is the bean id used in springCustomLogger.xml -->
        &lt;spring bean="springtest" key="spring/springCustomLogger.xml"/>
        &lt;send/>
    &lt;/sequence>

&lt;/definitions></pre>
<p>springCustomLogger.xml file</p>
<pre xml:space="preserve">
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE beans PUBLIC  "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd"&gt;

&lt;beans&gt;

   &lt;bean id="springtest" class="samples.mediators.extentions.SpringCustomLogger" singleton="false"&gt;
	   &lt;property name="userName"&gt;&lt;value&gt;"Synapse User"&lt;/value&gt;&lt;/property&gt;
	   &lt;property name="email"&gt;&lt;value&gt;"usr@synapse.org"&lt;/value&gt;&lt;/property&gt;
   &lt;/bean&gt;

&lt;/beans&gt;

</pre>
<div>
<p>
<strong>Objective:</strong> Demonstrate How to initialize and use a SpringBean as a mediator  </p>
<p>
<strong>Prerequisites:</strong>
<br/>Deploy the SimpleStockQuoteService in sample Axis2 server and start it on port 9000
<br/>Start Synapse with the sample configuration 460 (i.e. synapse -sample 460)</p>
<p>In this sample, the Spring Bean, SpringCustomLogger get initialized using springCustomLogger.xml file and then it log the message Id.</p>
<p>Invoke the client as follows. </p>
<pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/</pre>
<p>If you have enabled logging for the samples.mediators package you will see an output similar to the
following on the console:</p>
<pre xml:space="preserve">2010-09-26 20:46:57,946 [-] [HttpServerWorker-1]  INFO SpringCustomLogger Starting Spring Meditor
2010-09-26 20:46:57,946 [-] [HttpServerWorker-1]  INFO SpringCustomLogger Bean in Initialized with User:["Synapse User"]
2010-09-26 20:46:57,946 [-] [HttpServerWorker-1]  INFO SpringCustomLogger E-MAIL:["usr@synapse.org"]
2010-09-26 20:46:57,946 [-] [HttpServerWorker-1]  INFO SpringCustomLogger Massage Id:  urn:uuid:383FA8B27D7CC549D91285514217720
2010-09-26 20:46:57,946 [-] [HttpServerWorker-1]  INFO SpringCustomLogger Logged....</pre>
</div>
    
   <div class="section"><h2>
      <a name="Sample500" id="Sample500">Sample 500: Simple Eventing Sample</a>
    </h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;eventSource name="SampleEventSource">
        &lt;subscriptionManager
                class="org.apache.synapse.eventing.managers.DefaultInMemorySubscriptionManager">
            &lt;!--property name="registryURL" value="http://localhost:8180/wso2registry"/>
          &lt;property name="username" value="admin"/>
          &lt;property name="password" value="admin"/-->
            &lt;property name="topicHeaderName" value="Topic"/>
            &lt;    property name="topicHeaderNS" value="http://apache.org/aip"/>
        &lt;    /subscriptionManager>
    &lt;/eventSource>

    &lt;sequence name="PublicEventSource">
        &lt;log level="full"/>
        &lt;eventPublisher eventSourceName="SampleEventSource"/>
    &lt;/sequence>

    &lt;proxy name="EventingProxy">
        &lt;target inSequence="PublicEventSource"/>
    &lt;/proxy>

&lt;/definitions></pre>
    <div>
      <p>
        <strong>Objective:</strong> Demonstrate the use of the Eventing functionality built with Synapse
      </p>
      <p>
        <strong>Prerequisites:</strong>
        <br/>Deploy the SimpleStockQuoteService in sample Axis2 server and start it on port 9000
        <br/>Start Synapse with the sample configuration 500 (i.e. synapse -sample 500)
      </p>
      <p>
        In this sample, the event source creted based on the configuration. Event subscriber subscribes for the events, Event sender publish events and the SimpleStockQuoteService act as the Event Sink.
      </p>
      <p>
        Invoke the client (Subscriber) as follows:
      </p>
<pre xml:space="preserve">ant eventsubscriber</pre>
      <p>
        This will create a new subscription with the SimpleStockQuoteService deployed on the sample
        Axis2 server acting as the sink: whenever a new event is published, SimpleStockQuoteService
        will receive a message with that event.
        You should see a message like this:
      </p>
<pre>[java] Subscription identifier: urn:uuid:6989F66706E73C69F5259116575749162017010321</pre>
      <p>
        You will need this identifier to modify the subscription in the next steps below.
        Now, invoke the client (Sender) as follows:
      </p>
<pre xml:space="preserve">ant eventsender</pre>
      <p>
        This will send a placeOrder message to the EventingProxy. You should see this message in the
        Synapse logs. Note the presence of the following SOAP header in the request:
      </p>
<pre>&lt;aip:Topic xmlns:aip="http://apache.org/aip">synapse/event/test&lt;/aip:Topic></pre>
      <p>
        Since there is a single subscription with SimpleStockQuoteService as the sink, Synapse will
        send the message to the sample Axis2 server and you should see the following message in
        its logs:
      </p>
<pre>Accepted order for : 1000 stocks of GOOG at $ 10.1</pre>
      <p>
        To get the current status of the subscription, invoke the client as follows:
      </p>
<pre xml:space="preserve">ant eventsubscriber -Dmode=getstatus -Didentifier=<i>&lt;identifier></i></pre>
      <p>
        To renew the subscription, invoke the client as follows:
      </p>
<pre xml:space="preserve">ant eventsubscriber -Dmode=renew -Didentifier=<i>&lt;identifier></i> -Dexpires=2009-12-31T21:07:00.000-08:00</pre>
      <p>
        Finally, in order to unsubscribe, use the following command:
      </p>
<pre xml:space="preserve">ant eventsubscriber -Dmode=unsubscribe -Didentifier=<i>&lt;identifier></i></pre>
    </div>
   <div class="section"><h2>
      <a name="Sample501" id="Sample501">Sample 501: EventSource with static subscriptions</a>
    </h2></div>
<pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;eventSource name="SampleEventSource">
        &lt;subscriptionManager
                class="org.apache.synapse.eventing.managers.DefaultInMemorySubscriptionManager">
            &lt;!--property name="registryURL" value="http://localhost:8180/wso2registry"/>
          &lt;property name="username" value="admin"/>
          &lt;property name="password" value="admin"/-->
            &lt;property name="topicHeaderName" value="Topic"/>
            &lt;property name="topicHeaderNS" value="http://apache.org/aip"/>
        &lt;/subscriptionManager>
        &lt;subscription id="mysub1">
            &lt;filter source="synapse/event/test"
                    dialect="http://synapse.apache.org/eventing/dialect/topicFilter"/>
            &lt;endpoint>
                &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
            &lt;/endpoint>
        &lt;/subscription>
        &lt;subscription id="mysub2">
            &lt;filter source="synapse/event/test"
                    dialect="http://synapse.apache.org/eventing/dialect/topicFilter"/>
            &lt;endpoint>
                &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
            &lt;/endpoint>
            &lt;expires>2020-06-27T21:07:00.000-08:00&lt;/expires>
        &lt;/subscription>
    &lt;/eventSource>

    &lt;sequence name="PublicEventSource">
        &lt;log level="full"/>
        &lt;eventPublisher eventSourceName="SampleEventSource"/>
    &lt;/sequence>

    &lt;proxy name="EventingProxy">
        &lt;target inSequence="PublicEventSource"/>
    &lt;/proxy>

&lt;/definitions></pre>
    <div>
      <p>
        <strong>Objective:</strong> Demonstrate static subscription capability of Synapse
      </p>
      <p>
        <strong>Prerequisites:</strong>
        <br/>Deploy the SimpleStockQuoteService in sample Axis2 server and start it on port 9000
        <br/>Start Synapse with the sample configuration 501 (i.e. synapse -sample 501)
      </p>
      <p>
        In this sample, two static subscriptions created by providing the SimpleStockQuoteService as the event sink.
      </p>
        <p>
          Invoke the client (Sender) as follows.
        </p>
<pre xml:space="preserve">ant eventsender</pre>
      <p>
        Event sender will send the events to the static subscriptions
      </p>
    </div>
      <div class="section"><h2>
         <a name="Sample502" id="Sample502">Sample 502: Transform events before publish</a>
       </h2></div>
       <p>
         &#xa0;
       </p>
   <pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;eventSource name="SampleEventSource">
        &lt;subscriptionManager
                class="org.apache.synapse.eventing.managers.DefaultInMemorySubscriptionManager">
            &lt;!--property name="registryURL" value="http://localhost:8180/wso2registry"/>
          &lt;property name="username" value="admin"/>
          &lt;property name="password" value="admin"/-->
            &lt;property name="topicHeaderName" value="Topic"/>
            &lt;property name="topicHeaderNS" value="http://apache.org/aip"/>
        &lt;/subscriptionManager>
        &lt;subscription id="mysub1">
            &lt;filter source="synapse/event/test"
                    dialect="http://synapse.apache.org/eventing/dialect/topicFilter"/>
            &lt;endpoint>
                &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
            &lt;/endpoint>
        &lt;/subscription>
    &lt;/eventSource>

    &lt;sequence name="PublicEventSource">
        &lt;log level="full"/>
        &lt;xslt key="xslt-key-req"/>
        &lt;log level="full"/>
        &lt;eventPublisher eventSourceName="SampleEventSource"/>
    &lt;/sequence>

    &lt;proxy name="EventingProxy">
        &lt;target inSequence="PublicEventSource"/>
    &lt;/proxy>

    &lt;localEntry key="xslt-key-req"
                src="file:repository/conf/sample/resources/transform/transform_eventing.xslt"/>

&lt;/definitions></pre>
       <div>
         <p>
           <strong>Objective:</strong> Demonstrate the mediation capability of events before publishsing to event sink.
         </p>
         <p>
           <strong>Prerequisites:</strong>
           <br/>Deploy the SimpleStockQuoteService in sample Axis2 server and start it on port 9000
           <br/>Start Synapse with the sample configuration 502 (i.e. synapse -sample 502)
         </p>
         <p>
           In this sample, the event (order request) transform to a new order with different namesapce using XSLT mediator.
         </p>
           <p>
             Invoke the client (Sender) as follows.
           </p>
   <pre xml:space="preserve">ant eventsender</pre>
         <p>
           Event publish after transformation.
         </p>
       </div>
    
       <div class="section"><h2>
         <a name="Sample600" id="Sample600">Sample 600: File hierarchy based configuration builder</a>
       </h2></div>
       <pre xml:space="preserve">
         synapse_sample_600.xml
            |-- endpoints
            |   `-- foo.xml
            |-- events
            |   `-- event1.xml
            |-- local-entries
            |   `-- bar.xml
            |-- proxy-services
            |   |-- proxy1.xml
            |   |-- proxy2.xml
            |   `-- proxy3.xml
            |-- registry.xml
            |-- sequences
            |   |-- custom-logger.xml
            |   |-- fault.xml
            |   `-- main.xml
            |-- synapse.xml
            `-- tasks
                `-- task1.xml

       </pre>
       <div>
         <p>
           <strong>Objective:</strong> Demonstrate the ability to construct the Synapse configuration from a file hierarchy
         </p>
         <p>
           <strong>Prerequisites:</strong>
           <br/>Deploy the SimpleStockQuoteService in sample Axis2 server and start it on port 9000
           <br/>Start Synapse with the sample configuration 600 (i.e. synapse -sample 600)
         </p>
         <p>
            Go to the SYNAPSE_HOME/repository/conf/sample directory and locate the subdirectory named synapse_sample_600.xml
            within it. When Synapse is started with the sample configuration 600, Synapse will load the configuration from
            this directory. You will find a number of subdirectories and a set of XML files in each of those directories.
            Synapse will parse all the XML files in this file hierarchy and construct the full Synapse configuration at startup. 
            As a result when this sample is executed Synapse will start with four proxy services, several sequences, a task, an event
            source and some endpoint and local entry definitions.
         </p>
         <p>
            The names of the subdirectories (eg: proxy-services, sequences, endpoints) are fixed and hence cannot be changed.
            Also the registry definition should go into a file named registry.xml which resides at the top level of the file
            hierarchy. It can also be specified in the synapse.xml file at top level. This synapse.xml file can include
            any item that can be normally defined in a synapse.xml file. The files which define proxy services, sequences,
            endpoints etc can have any name. These configuration files must have the .xml extension at the end of the name. Synapse
            will ignore any files which do not have the .xml extension.
         </p>
         <p>
            None of the directories and files in the sample file hierachy are mandatory. You can leave entire directories out if
            you do not need them. For example if your configuration does not contain any proxy services you can leave the
            subdirectory named proxy-services out.
         </p>
         <p>
            To use this feature you should simply pass a path to an existing directory when starting the Synapse server. The
            SynapseServer class which is responsible for starting the server accepts a file path as an argument from where to
            load the configuration. Generally we pass the path to the synapse.xml file as the value of this argument. If you
            pass a directory path instead, Synapse configuration will be loaded from the specified directory. Note the following
            line on the console when Synapse is loading the configuration from a file hierarchy.
         </p>
         <pre>2009-08-04 14:14:42,489 [-] [main]  INFO SynapseConfigurationBuilder Loaded Synapse configuration from the directory hierarchy at : /home/synapse/repository/conf/sample/synapse_sample_600.xml</pre>
         <p>
            This feature comes in handy when managing large Synapse configurations. It is easier to maintain a well structured
            file hierarchy than managing one large flat XML file.
         </p>
       </div>
       <div class="section"><h2>
         <a name="Sample601" id="Sample601">Sample 601: Using Synapse observers</a>
       </h2></div>
       <div>
         <p>
           <strong>Objective:</strong> Demonstrate the ability to monitor the Synapse configuration at runtime using the
             SynapseObserver interface
         </p>
         <p>
           Open the synapse.properties file in the SYNAPSE_HOME/repository/conf directory using a text editor and uncomment the line which
           defines the simple logging Synapse observer.
         </p>
         <pre xml:space="preserve">synapse.observers=samples.userguide.SimpleLoggingObserver</pre>
         <p>
           Open the log4j.properties file in the SYNAPSE_HOME/lib directory and uncomment the line which sets the INFO log
           level to the samples.userguide package.
         </p>
         <pre xml:space="preserve">log4j.category.samples.userguide=INFO</pre>
         <p>
           Start Synapse using any of the sample configurations. The SimpleLoggingObserver will capture events that occur
           while constructing the Synapse configuration and log them on the console as follows.
         </p>
         <pre xml:space="preserve">
 2009-08-06 14:30:24,578 [-] [main]  INFO SimpleLoggingObserver Simple logging observer initialized...Capturing Synapse events...
 2009-08-06 14:30:24,604 [-] [main]  INFO SimpleLoggingObserver Endpoint : a3 was added to the Synapse configuration successfully
 2009-08-06 14:30:24,605 [-] [main]  INFO SimpleLoggingObserver Endpoint : a2 was added to the Synapse configuration successfully
 2009-08-06 14:30:24,606 [-] [main]  INFO SimpleLoggingObserver Endpoint : null was added to the Synapse configuration successfully
 2009-08-06 14:30:24,611 [-] [main]  INFO SimpleLoggingObserver Local entry : a1 was added to the Synapse configuration successfully
 2009-08-06 14:30:24,649 [-] [main]  INFO SimpleLoggingObserver Proxy service : StockQuoteProxy2 was added to the Synapse configuration successfully
 2009-08-06 14:30:24,661 [-] [main]  INFO SimpleLoggingObserver Proxy service : StockQuoteProxy1 was added to the Synapse configuration successfully
 2009-08-06 14:30:24,664 [-] [main]  INFO SimpleLoggingObserver Sequence : main was added to the Synapse configuration successfully
 2009-08-06 14:30:24,701 [-] [main]  INFO SimpleLoggingObserver Sequence : fault was added to the Synapse configuration successfully</pre>

         <p>
           The SimpleLoggingObserver is implemented as follows. It does not override any of the event handler implementations
           in the AbstractSynapseObserver class. The AbstractSynapseObserver logs all the received events by default.
         </p>
         <pre xml:space="preserve">
    package samples.userguide;

    import org.apache.synapse.config.AbstractSynapseObserver;

    public class SimpleLoggingObserver extends AbstractSynapseObserver {

        public SimpleLoggingObserver() {
            super();
            log.info("Simple logging observer initialized...Capturing Synapse events...");
        }
    }</pre>
         <p>
           Refer Synapse <a href="Synapse_Extending.html#synObservers">Synapse Extending Guide</a> for more details on developing Synapse observers.
         </p>
       </div>

   <div class="section"><h2>
         <a name="Sample650" id="Sample650">Sample 650: Priority Based Message Mediation</a>
   </h2></div>
   <pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;priorityExecutor name="exec">
        &lt;queues>
            &lt;queue size="100" priority="1"/>
            &lt;queue size="100" priority="10"/>
        &lt;/queues>
    &lt;/priorityExecutor>

    &lt;proxy name="StockQuoteProxy">
        &lt;target>
            &lt;inSequence>
                &lt;filter source="$trp:priority" regex="1">
                    &lt;then>
                        &lt;enqueue priority="1" sequence="priority_sequence" executor="exec"/>
                    &lt;/then>
                    &lt;else>
                        &lt;enqueue priority="10" sequence="priority_sequence" executor="exec"/>
                    &lt;/else>
                &lt;/filter>
            &lt;/inSequence>
            &lt;outSequence>
                &lt;send/>
            &lt;/outSequence>
        &lt;/target>
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
    &lt;/proxy>

    &lt;sequence name="priority_sequence">
        &lt;log level="full"/>
        &lt;send>
            &lt;endpoint>
                &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
            &lt;/endpoint>
        &lt;/send>
    &lt;/sequence>

&lt;/definitions></pre>
       <div>
         <p>
           <strong>Objective:</strong> Demonstrate the priority based mediation capability of synapse.
         </p>
         <p>
           <strong>Prerequisites:</strong>
           <br/>Deploy the SimpleStockQuoteService in sample Axis2 server and start it on port
           9000. Priority is applied only when synapse is loaded with enough messages to consume its core number of threads.
             So to observe the priority based mediation, it is required to use a load testing tool like JMeter, SOAP UI or Apache bench.
           <br/>Start Synapse with the sample configuration 650 (i.e. synapse -sample 650)
         </p>
         <p>
           In this sample, client should send a HTTP header that specifies the priority of the message.This header name is priority.
             This header is retrieved in the synapse configuration using the $trp:priority XPath expression. Then it is matched against
             the value 1. If it has the value 1, message is executed with priority 1. Otherwise the message is executed with priority 10.
         </p>
           <p>
               Here are two sample XML files that can be used to invoke the service using a tool like JMeter, or Ab. For SOAP UI,
               user can use the WSDL repository/conf/sample/resources/proxy/sample_proxy_1.wsdl to create the request. The only
               difference between the two demonstrated requests here is the symbol. One has the symbol as IBM and other has MSFT. For one type of
               request set the priority header to 1 and for the next set the priority header to 10. Then load synapse with high
               volume of traffic from both types of requests using the load testing tool. In the back end server it prints the
               symbol of the incoming requests. User should be able to see more of high priority symbol.
           </p>
           <pre xml:space="preserve">
&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&gt;
     &lt;soapenv:Header xmlns:wsa=&quot;http://www.w3.org/2005/08/addressing&quot;&gt;
        &lt;wsa:To&gt;http://localhost:8281/services/SimpleStockQuoteService&lt;/wsa:To&gt;
        &lt;wsa:MessageID&gt;urn:uuid:1B57D0B0BF770678DE1261165228620&lt;/wsa:MessageID&gt;
        &lt;wsa:Action&gt;urn:getQuote&lt;/wsa:Action&gt;
     &lt;/soapenv:Header&gt;
     &lt;soapenv:Body&gt;
        &lt;m0:getQuote xmlns:m0=&quot;http://services.samples&quot;&gt;
           &lt;m0:request&gt;
              &lt;m0:symbol&gt;IBM&lt;/m0:symbol&gt;
           &lt;/m0:request&gt;
        &lt;/m0:getQuote&gt;
     &lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;
           </pre>
           <pre xml:space="preserve">
&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&gt;
     &lt;soapenv:Header xmlns:wsa=&quot;http://www.w3.org/2005/08/addressing&quot;&gt;
        &lt;wsa:To&gt;http://localhost:8281/services/SimpleStockQuoteService&lt;/wsa:To&gt;
        &lt;wsa:MessageID&gt;urn:uuid:1B57D0B0BF770678DE1261165228620&lt;/wsa:MessageID&gt;
        &lt;wsa:Action&gt;urn:getQuote&lt;/wsa:Action&gt;
     &lt;/soapenv:Header&gt;
     &lt;soapenv:Body&gt;
        &lt;m0:getQuote xmlns:m0=&quot;http://services.samples&quot;&gt;
           &lt;m0:request&gt;
              &lt;m0:symbol&gt;MSFT&lt;/m0:symbol&gt;
           &lt;/m0:request&gt;
        &lt;/m0:getQuote&gt;
     &lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;
           </pre>
       </div>

    <div class="section"><h2>
         <a name="Sample651" id="Sample651">Sample 651: NHTTP Transport Priority Based Dispatching</a>
    </h2></div>
    <p>
        Here is the priority configuration file used by the NHTTP transport to determine the priority based on HTTP level properties.
    </p>
   <pre xml:space="preserve">&lt;priorityConfiguration&gt;
    &lt;priorityExecutor&gt;
        &lt;!-- two priorities specified with priority 10 and 1. Both priority messages has a queue depth of 100 --&gt;
        &lt;queues isFixedCapacity=&quot;true&quot; nextQueue=&quot;org.apache.synapse.commons.executors.PRRNextQueueAlgorithm&quot;&gt;
            &lt;queue size=&quot;100&quot; priority=&quot;10&quot;/&gt;
            &lt;queue size=&quot;100&quot; priority=&quot;1&quot;/&gt;
        &lt;/queues&gt;
        &lt;!-- these are the default values, values are put here to show their availability --&gt;
        &lt;threads core=&quot;20&quot; max=&quot;100&quot; keep-alive=&quot;5&quot;/&gt;
    &lt;/priorityExecutor&gt;

    &lt;!-- if a message comes that we cannot determine priority, we set a default priority of 1 --&gt;
    &lt;conditions defaultPriority=&quot;1&quot;&gt;
        &lt;condition priority=&quot;10&quot;&gt;
            &lt;!-- check for the header named priority --&gt;
            &lt;equal type=&quot;header&quot; source=&quot;priority&quot; value=&quot;5&quot;/&gt;
        &lt;/condition&gt;
        &lt;condition priority=&quot;1&quot;&gt;
            &lt;equal type=&quot;header&quot; source=&quot;priority&quot; value=&quot;1&quot;/&gt;
        &lt;/condition&gt;
    &lt;/conditions&gt;
&lt;/priorityConfiguration&gt;</pre>
       <div>
         <p>
           <strong>Objective:</strong> Demonstrate the priority based dispatching of NHTTP transport.
         </p>
         <p>
           <strong>Prerequisites:</strong>
           <br/>Deploy the SimpleStockQuoteService in sample Axis2 server and start it on port
           9000. Priority is applied only when synapse is loaded with enough messages to consume its core number of threads.
           So to observe the priority based dispatching, it is required to use a load testing tool like JMeter, SOAP UI or Apache bench.
           <br/>Open axis2.xml in repository/conf directory and uncomment the following parameter to the configuration.
             <strong>priorityConfigFile</strong>. Set the value to repository/conf/sample/resources/priority/priority-configuration.xml
           <br/>Start Synapse with the sample configuration 150 (i.e. synapse -sample 150).
         </p>
         <p>
           In this sample, client should send a HTTP header that specifies the priority of the message.This header name is priority.
             This header is retrieved in the prioirty configuration. Then it is matched against
             the value 1 and 10. Depending on this value message is executed with priority 1 or 10.
         </p>
           <p>
               Here are two sample XML files that can be used to invoke the service using a tool like JMeter, or Apache Ab. For SOAP UI,
               user can use the WSDL repository/conf/sample/resources/proxy/sample_proxy_1.wsdl to create the request. The only
               difference between the two demonstrated requests here is the symbol. One has the symbol as IBM and other has MSFT. For one type of
               request set the priority header to 1 and for the next set the priority header to 10. Then load synapse with high
               volume of traffic from both types of requests using the load testing tool. In the back end server it prints the
               symbol of the incoming requests. User should be able to see more of high priority symbol.
           </p>
           <pre xml:space="preserve">
&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&gt;
     &lt;soapenv:Header xmlns:wsa=&quot;http://www.w3.org/2005/08/addressing&quot;&gt;
        &lt;wsa:To&gt;http://localhost:8281/services/SimpleStockQuoteService&lt;/wsa:To&gt;
        &lt;wsa:MessageID&gt;urn:uuid:1B57D0B0BF770678DE1261165228620&lt;/wsa:MessageID&gt;
        &lt;wsa:Action&gt;urn:getQuote&lt;/wsa:Action&gt;
     &lt;/soapenv:Header&gt;
     &lt;soapenv:Body&gt;
        &lt;m0:getQuote xmlns:m0=&quot;http://services.samples&quot;&gt;
           &lt;m0:request&gt;
              &lt;m0:symbol&gt;IBM&lt;/m0:symbol&gt;
           &lt;/m0:request&gt;
        &lt;/m0:getQuote&gt;
     &lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;
           </pre>
           <pre xml:space="preserve">
&lt;soapenv:Envelope xmlns:soapenv=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&gt;
     &lt;soapenv:Header xmlns:wsa=&quot;http://www.w3.org/2005/08/addressing&quot;&gt;
        &lt;wsa:To&gt;http://localhost:8281/services/SimpleStockQuoteService&lt;/wsa:To&gt;
        &lt;wsa:MessageID&gt;urn:uuid:1B57D0B0BF770678DE1261165228620&lt;/wsa:MessageID&gt;
        &lt;wsa:Action&gt;urn:getQuote&lt;/wsa:Action&gt;
     &lt;/soapenv:Header&gt;
     &lt;soapenv:Body&gt;
        &lt;m0:getQuote xmlns:m0=&quot;http://services.samples&quot;&gt;
           &lt;m0:request&gt;
              &lt;m0:symbol&gt;MSFT&lt;/m0:symbol&gt;
           &lt;/m0:request&gt;
        &lt;/m0:getQuote&gt;
     &lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;
           </pre>
       </div>
    <div class="section"><h2>
        <a name="Sample652" id="Sample652">Distributed transaction with Transaction
            mediator
        </a>
    </h2></div>
    <p>This sample describes how to use transaction mediator to participate in a distributed
        transaction
    </p>
    <div class="section"><h2>
        <a name="Sample652" id="Sample652">Sample 652: Distributed transaction management</a>
    </h2></div>
    <pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;sequence name="myFaultHandler">
        &lt;log level="custom">
            &lt;property name="text" value="** Rollback Transaction**"/>
        &lt;/log>
        &lt;transaction action="rollback"/>
        &lt;send/>
    &lt;/sequence>

    &lt;sequence name="main" onError="myFaultHandler">
        &lt;in>
            &lt;send>
                &lt;endpoint>
                    &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
                &lt;/endpoint>
            &lt;/send>
        &lt;/in>

        &lt;out>
            &lt;transaction action="new"/>

            &lt;log level="custom">
                &lt;property name="text" value="** Reporting to the Database esbdb**"/>
            &lt;/log>
            &lt;dbreport useTransaction="true" xmlns="http://ws.apache.org/ns/synapse">
                &lt;connection>
                    &lt;pool>
                        &lt;dsName>java:jdbc/XADerbyDS&lt;/dsName>
                        &lt;icClass>org.jnp.interfaces.NamingContextFactory&lt;/icClass>
                        &lt;url>localhost:1099&lt;/url>
                        &lt;user>synapse&lt;/user>
                        &lt;password>synapse&lt;/password>
                    &lt;/pool>
                &lt;/connection>
                &lt;statement>
                    &lt;sql>delete from company where name =?&lt;/sql>
                    &lt;parameter expression="//m0:return/m1:symbol/child::text()"
                               xmlns:m0="http://services.samples"
                               xmlns:m1="http://services.samples/xsd"
                               type="VARCHAR"/>
                &lt;/statement>
            &lt;/dbreport>

            &lt;log level="custom">
                &lt;property name="text" value="** Reporting to the Database esbdb1**"/>
            &lt;/log>
            &lt;dbreport useTransaction="true" xmlns="http://ws.apache.org/ns/synapse">
                &lt;connection>
                    &lt;pool>
                        &lt;dsName>java:jdbc/XADerbyDS1&lt;/dsName>
                        &lt;icClass>org.jnp.interfaces.NamingContextFactory&lt;/icClass>
                        &lt;url>localhost:1099&lt;/url>
                        &lt;user>synapse&lt;/user>
                        &lt;password>synapse&lt;/password>
                    &lt;/pool>
                &lt;/connection>
                &lt;statement>
                    &lt;sql>INSERT into company values ('IBM','c4',12.0)&lt;/sql>
                &lt;/statement>
            &lt;/dbreport>
            &lt;transaction action="commit"/>
            &lt;send/>
        &lt;/out>
    &lt;/sequence>

&lt;/definitions></pre>


    <div>
        <p>
            <strong>Objective:</strong>
            Demonstrate the use of the transaction mediator in a distributed transaction
        </p>
        <p>
            <strong>Prerequisites:</strong>
            Deploy the SimpleStockQuoteService in sample Axis2 server and start it on port 9000.
        </p>
        <p>Start Synapse with the sample configuration 652 (i.e. synapse -sample 652).</p>
        <p>To run this sample it is required to deploy synpase on JBoss application server(This is
            only tested with JBoss application sever), you can use the
            war distribution to deploy synapse on JBoss application server. Use the
            synpase_sample_652.xml as the synapse confiuration file and start JBoss with
            that synpase configuration file. Also you need to define two XA datasources for above
            two datasources. You'll need to refer JBoss documentation to see how
            to do this.
        </p>
        <p>It also required to have two database instances, this will be used by the two XA
            datasources. Refer the
            <a href="Synapse_Samples_Setup.html#derby">Sample Setup Guide</a>
            to see how you can set up the derby database server.
        </p>
        <p>In this sample a record is delete from one database and it is added into the second
            database. If either of the operations(deleting from the 1st database and adding into the
            second database) fails everything will be roll backed. The records will be untoched.
        </p>
        <p>Invoke the client as follows.</p>
        <pre xml:space="preserve">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dsymbol=SUN/</pre>
    <div class="section"><h2>
    <a name="Message Store" id="MessageStore">Introducing Synapse Message store</a></h2></div>
    <p>
        A Synapse message store is a special channel that can be associated with an endpoint.
        Whenever the endpoint fails to deliever a message to the given address, the message will
        be stored in the message store. A redeliver processor can be engaged on the message store
        to retry such failed messages.
    </p>
    <p>
        Message stores can be monitored using JMX and if needed a user can browse the messages
        stored in a message store and retry them manually. This construct can be used to implement
        the EIP pattern "dead letter channel".
    </p>
    <div class="section"><h2>
    <a name="Sample700" id="Sample700">Sample 700: Introduction to Synapse Message Store</a></h2></div>
    <pre xml:space="preserve">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://ws.apache.org/ns/synapse http://synapse.apache.org/ns/2010/04/configuration/synapse_config.xsd">

    &lt;!--Simple in Memory Message Store with name foo -->
    &lt;messageStore name="foo" sequence="bar">
        &lt;redelivery>
            &lt;!--retry interval 1 sec -->
            &lt;interval>1&lt;/interval>
            &lt;!--Message will be stored after 2 redeliveries -->
            &lt;maximumRedeliveries>2&lt;/maximumRedeliveries>
            &lt;exponentialBackoff>true&lt;/exponentialBackoff>
            &lt;backoffMutiplier>2&lt;/backoffMutiplier>
        &lt;/redelivery>
    &lt;/messageStore>

    &lt;!-- Endpoint named SampleEndpoint-->
    &lt;endpoint name="SampleEndpoint" onFault="foo">
        &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService">
            &lt;suspendDurationOnFailure>2&lt;/suspendDurationOnFailure>
        &lt;/address>
    &lt;/endpoint>

    &lt;sequence name="main">
        &lt;!-- filtering of messages with XPath and regex matches -->
        &lt;filter source="get-property('To')" regex=".*/StockQuote.*">
            &lt;send>
                &lt;endpoint key="SampleEndpoint"/>
            &lt;/send>
            &lt;drop/>
        &lt;/filter>
        &lt;send/>
    &lt;/sequence>

    &lt;sequence name="bar">
        &lt;log level="full"/>
    &lt;/sequence>

&lt;/definitions></pre>
    <p>
    <strong>Objective: </strong>Introduction to Synapse Message Stores</p>
    <p>
    <strong>Prerequisites</strong>:
    <br/>Start the Synapse configuration numbered 700: i.e. synapse -sample 700
    <br/>Start the Axis2 server and deploy the SimpleStockQuoteService if not already done</p>
    <p>To Execute the Client : </p>
    <pre xml:space="preserve">ant stockquote -Dtrpurl=http://localhost:8280/soap/StockQuote</pre>
    <p>Since now you have the Axis2 Server Running when you run the client you will get the Stock
        generation output in Server console and the out put in the client side. Then try shutting down
        the Axis2 Server and running again. You will see synapse will try 2 times to deliver the message
        and store in on the MessageStore.It will execute the log sequence before storing the Message
        in the Message store.</p>

    <p>You can then use the JMX view of Synapse Message Store by using the jconsole and view the stored
        Message.You can even re start the Axis2Server and manually redeliver the request using the
        Same JMX view.
    </p>
    </div>
    </div>
</body></document>
