<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
~ distributed with this work for additional information
~ regarding copyright ownership. The ASF licenses this file
~ to you under the Apache License, Version 2.0 (the
~ "License"); you may not use this file except in compliance
~ with the License. You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<html>
<head>
  <meta http-equiv="content-type" content="">
  <title>Synapse Samples</title>
  <style type="text/css">
    .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;
    }
    li {
        font-family: Verdana, arial, sans-serif;
        font-size: 11px;
        line-height: 16px;
        color: #000000;
        font-weight: normal;
    }
    p {
        font-family: Verdana, arial, sans-serif;
        font-size: 11px;
        line-height: 16px;
        color: #000000;
        font-weight: normal;
    }
    pre {
        padding: 0px;
        margin-top: 5px;
        margin-left: 15px;
        margin-bottom: 5px;
        margin-right: 5px;
        text-align: left;
        background-color: #f0f0f0;
        padding: 3px;
        border: 1px dashed #3c78b5;
        font-size: 11px;
        font-family: Courier;
        margin: 10px;
        line-height: 13px;
    }
    h1 {
        font-size: 24px;
        line-height: normal;
        font-weight: bold;
        background-color: #f0f0f0;
        color: #003366;
        border-bottom: 1px solid #3c78b5;
        padding: 2px;
        margin: 36px 0px 4px 0px;
    }
    h2 {
        font-size: 18px;
        line-height: normal;
        font-weight: bold;
        background-color: #f0f0f0;
        border-bottom: 1px solid #3c78b5;
        padding: 2px;
        margin: 27px 0px 4px 0px;
    }
    h3 {
        font-size: 14px;
        line-height: normal;
        font-weight: bold;
        background-color: #f0f0f0;
        padding: 2px;
        margin: 21px 0px 4px 0px;
    }
    h4 {
        font-size: 12px;
        line-height: normal;
        font-weight: bold;
        background-color: #f0f0f0;
        padding: 2px;
        margin: 18px 0px 4px 0px;
    }</style>
</head>

<body>
<h1>Running the Synapse Samples</h1>

<h2><a name="TOC">Contents</a></h2>

<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>
    </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>
    </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</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>
    </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>
    </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 dblookp
            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>
        </ul>
      </li>
      <li><a href="#Throttle">Throtteling 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>
        </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="#Aggregator">Aggregating messages and process in batch</a> -->
      <!--<ul>-->
      <!--<li><a href="#Sample410">Sample 410: 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">Synchronize web service invocation with Callout
        mediator </a> 
        <ul>
          <li><a href="#Sample430">Sample 430: Simple Callout Mediator for
            Synchronize web service invocation</a></li>
        </ul>
      </li>
    </ul>
  </li>
</ul>
</div>

<h1><a name="MediationSamples">Message Mediation Samples</a></h1>

<h2><a name="Sample0">Sample 0: Introduction to Synapse</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;!-- log all attributes of messages passing through --&gt;
    &lt;log level="full"/&gt;

    &lt;!-- Send the messageto implicit destination --&gt;
    &lt;send/&gt;
&lt;/definitions&gt;</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>ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService -Dtrpurl=http://localhost:8080/ </pre>
  <li>Using Synapse as a HTTP Proxy</li>
  <pre>ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService -Dprxurl=http://localhost:8080/</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/soap/SimpleStockQuoteService. The Synapse engine logs
the message at the "full" 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/soap/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>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>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/soap/SimpleStockQuoteService, but the transport
specifies Synapse as the http proxy. </p>

<h2><a name="Sample1">Sample 1: Simple content based routing (CBR) of
messages</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;!-- filtering of messages with XPath and regex matches --&gt;
    &lt;filter source="get-property('To')" regex=".*/StockQuote.*"&gt;
        &lt;send&gt;
            &lt;endpoint&gt;
                &lt;address uri="http://localhost:9000/soap/SimpleStockQuoteService"/&gt;
            &lt;/endpoint&gt;
        &lt;/send&gt;
        &lt;drop/&gt;
    &lt;/filter&gt;
    &lt;send/&gt;
&lt;/definitions&gt; </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<br>
</p>

<p>Execute the Dumb Client as: </p>
<pre>ant stockquote -Dtrpurl=http://localhost:8080/soap/StockQuote<br></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:8080/soap/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 implicit 'send' mediator forwards the response back to the
client.</p>

<h2><a name="Sample2">Sample 2: CBR with the Switch-case mediator, using
message properties</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;switch source="//m0:getQuote/m0:request/m0:symbol" xmlns:m0="http://services.samples/xsd"&gt;
        &lt;case regex="IBM"&gt;
            &lt;!-- the property mediator sets a local property on the *current* message --&gt;
            &lt;property name="symbol" value="Great stock - IBM"/&gt;
        &lt;/case&gt;
        &lt;case regex="MSFT"&gt;
            &lt;property name="symbol" value="Are you sure? - MSFT"/&gt;
        &lt;/case&gt;
        &lt;default&gt;
            &lt;!-- it is possible to assign the result of an XPath expression as well --&gt;
            &lt;property name="symbol"
                  expression="fn:concat('Normal Stock - ', //m0:getQuote/m0:request/m0:symbol)"
                  xmlns:m0="http://services.samples/xsd"/&gt;
        &lt;/default&gt;
    &lt;/switch&gt;

    &lt;log level="custom"&gt;
        &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) --&gt;
        &lt;property name="symbol" expression="get-property('symbol')"/&gt;
        &lt;!-- the get-property() function supports the implicit message headers To/From/Action/FaultTo/ReplyTo --&gt;
        &lt;property name="epr" expression="get-property('To')"/&gt;
    &lt;/log&gt;

    &lt;!-- Send the messages where they are destined to (i.e. the 'To' EPR of the message) --&gt;
    &lt;send/&gt;
&lt;/definitions&gt;</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>

<p>ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService
-Dtrpurl=http://localhost:8080/ -Dsymbol=IBM</p>
<pre>INFO LogMediator - symbol = Great stock - IBM, epr = http://localhost:9000/axis2/services/SimpleStockQuoteService </pre>

<p>ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService
-Dtrpurl=http://localhost:8080/ -Dsymbol=MSFT</p>
<pre>INFO LogMediator - symbol = Are you sure? - MSFT, epr = http://localhost:9000/axis2/services/SimpleStockQuoteService</pre>

<h2><a name="Sample3">Sample 3: Local Registry entry definitions, reusable
endpoints and sequences</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;!-- define a string resource entry to the local registry --&gt;
    &lt;localEntry key="version"&gt;0.1&lt;/localEntry&gt;
    &lt;!-- define a reuseable endpoint definition --&gt;
    &lt;endpoint name="simple"&gt;
        &lt;address uri="http://localhost:9000/soap/SimpleStockQuoteService"/&gt;
    &lt;/endpoint&gt;

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

    &lt;sequence name="main"&gt;
        &lt;in&gt;
            &lt;property name="direction" value="incoming"/&gt;
            &lt;sequence key="stockquote"/&gt;
        &lt;/in&gt;
        &lt;out&gt;
            &lt;send/&gt;
        &lt;/out&gt;
    &lt;/sequence&gt;
&lt;/definitions&gt;</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 "main" 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 "main" is
executed. Then for the incoming message flow the &lt;in&gt; mediator
executes, and it calls into the sequence named "stockquote".</p>
<pre>ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService -Dtrpurl=http://localhost:8080/</pre>
<pre>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 "stockquote" sequence executes, the log mediator dumps a simple
text/string property, result of an XPath evaluation, that picks up the key
named "version", 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 "version" defines a simple text/string registry entry for that which is
visible to all messages that pass through Synapse.</p>
<pre>[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/soap/SimpleStockQuoteService </pre>

<h2><a name="Sample4">Sample 4: Introduction to error handling</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

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

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

    &lt;!-- default message handling sequence used by Synapse - named 'main' --&gt;
    &lt;sequence name="main"&gt;
        &lt;in&gt;
            &lt;switch source="//m0:getQuote/m0:request/m0:symbol" xmlns:m0="http://services.samples/xsd"&gt;
                &lt;case regex="IBM"&gt;
                    &lt;send&gt;
                        &lt;endpoint&gt;&lt;address uri="http://localhost:9000/soap/SimpleStockQuoteService"/&gt;&lt;/endpoint&gt;
                    &lt;/send&gt;
                &lt;/case&gt;
                &lt;case regex="MSFT"&gt;
                    &lt;send&gt;
                        &lt;endpoint key="bogus"/&gt;
                    &lt;/send&gt;
                &lt;/case&gt;
                &lt;case regex="SUN"&gt;
                    &lt;sequence key="sunSequence"/&gt;
                &lt;/case&gt;
            &lt;/switch&gt;
            &lt;drop/&gt;
        &lt;/in&gt;

        &lt;out&gt;
            &lt;send/&gt;
        &lt;/out&gt;
    &lt;/sequence&gt;

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

&lt;/definitions&gt; </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 inline 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>ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService -Dtrpurl=http://localhost:8080/ -Dsymbol=MSFT</pre>
<pre>[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 = Reference to non-existent endpoint for 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>ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService -Dtrpurl=http://localhost:8080/ -Dsymbol=SUN</pre>
<pre>[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 = Reference to non-existent endpoint for key : sunPort</pre>

<h2><a name="Sample5">Sample 5: Creating SOAP fault messages and changing the
direction of a message</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

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

        &lt;property name="RESPONSE" value="true"/&gt;
        &lt;header name="To" expression="get-property('ReplyTo')"/&gt;
        &lt;send/&gt;
    &lt;/sequence&gt;

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

        &lt;out&gt;
            &lt;send/&gt;
        &lt;/out&gt;
    &lt;/sequence&gt;

&lt;/definitions&gt;</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>ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService -Dtrpurl=http://localhost:8080/ -Dsymbol=MSFT</pre>

<p>returns,</p>
<pre>&lt;soapenv:Fault xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&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>ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService -Dtrpurl=http://localhost:8080/ -Dsymbol=SUN</pre>

<p>returns,</p>
<pre>&lt;soapenv:Fault xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&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>

<h2><a name="Sample6">Sample 6: Manipulating SOAP headers, and filtering
incoming and outgoing messages</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;in&gt;
        &lt;header name="To" value="http://localhost:9000/soap/SimpleStockQuoteService"/&gt;
    &lt;/in&gt;
    &lt;send/&gt;
&lt;/definitions&gt;</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>ant stockquote -Dtrpurl=http://localhost:8080/</pre>

<h2><a name="Sample7">Sample 7: Introduction to local Registry entries and
using Schema validation</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

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

    &lt;in&gt;
        &lt;validate&gt;
            &lt;schema key="validate_schema"/&gt;
            &lt;on-fail&gt;
                &lt;!-- if the request does not validate againt schema throw a fault --&gt;
                &lt;makefault&gt;
                    &lt;code value="tns:Receiver"
                            xmlns:tns="http://www.w3.org/2003/05/soap-envelope"/&gt;
                    &lt;reason value="Invalid custom quote request"/&gt;
                &lt;/makefault&gt;
                &lt;property name="RESPONSE" value="true"/&gt;
                &lt;header name="To" expression="get-property('ReplyTo')"/&gt;
            &lt;/on-fail&gt;
        &lt;/validate&gt;
    &lt;/in&gt;
    &lt;send/&gt;
&lt;/definitions&gt; </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, inline text or inline 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 validatation 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 thestock
symbol)</p>
<pre>ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService -Dtrpurl=http://localhost:8080/</pre>

<h2><a name="Sample8">Sample 8: Introduction to static and dynamic registry
resources, and using XSLT transformations</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

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

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

    &lt;in&gt;
        &lt;!-- transform the custom quote request into a standard quote requst expected by the service --&gt;
        &lt;xslt key="xslt-key-req"/&gt;
    &lt;/in&gt;
    &lt;out&gt;
        &lt;!-- transform the standard response back into the custom format the client expects --&gt;
        &lt;!-- the key is looked up in the remote registry and loaded as a 'dynamic' registry resource --&gt;
        &lt;xslt key="transform/transform_back.xslt"/&gt;
    &lt;/out&gt;
    &lt;send/&gt;
&lt;/definitions&gt;</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 tranformations 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 have 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>ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService -Dtrpurl=http://localhost:8080/ -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>[HttpClientWorker-1] INFO  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>[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>[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>

<h2><a name="Sample9">Sample 9: Introduction to dynamic sequences with the
Registry</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;registry provider="org.apache.synapse.registry.url.SimpleURLRegistry"&gt;
        &lt;parameter name="root"&gt;file:./repository/conf/sample/resources/&lt;/parameter&gt;
        &lt;parameter name="cachableDuration"&gt;15000&lt;/parameter&gt;
    &lt;/registry&gt;

    &lt;sequence key="sequence/dynamic_seq_1.xml"/&gt;
&lt;/definitions&gt; </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 recheck 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>ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService -Dtrpurl=http://localhost:8080/</pre>
<pre>[HttpServerWorker-1] INFO  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 "*** Test Message 2 ***") 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>[HttpServerWorker-1] INFO  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 suite the environment and the needs.</p>

<h2><a name="Sample10">Sample 10: Introduction to dynamic endpoints with the
Registry</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

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

    &lt;in&gt;
        &lt;send&gt;
            &lt;endpoint key="endpoint/dynamic_endpt_1.xml"/&gt;
        &lt;/send&gt;
    &lt;/in&gt;
    &lt;out&gt;
        &lt;send/&gt;
    &lt;/out&gt;
&lt;/definitions&gt; </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>./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>ant stockquote -Dtrpurl=http://localhost:8080/</pre>

<p>Now edit the repository/conf/sample/resources/endpoint/dynamic_endpt_1.xml
definition and update the address to
"http://localhost:9001/soap/SimpleStockQuoteService". After the cached
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>

<h2><a name="Sample11">Sample 11: A full registry based configuration, and
sharing a configuration between multiple instances</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;registry provider="org.apache.synapse.registry.url.SimpleURLRegistry"&gt;
        &lt;parameter name="root"&gt;file:./repository/conf/sample/resources/&lt;/parameter&gt;
        &lt;parameter name="cachableDuration"&gt;15000&lt;/parameter&gt;
    &lt;/registry&gt;
&lt;/definitions&gt; </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>ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService -Dtrpurl=http://localhost:8080/</pre>
<pre>[HttpServerWorker-1] INFO LogMediator - message = This is a dynamic Synapse configuration</pre>

<p>The actual synapse.xml loaded is:</p>
<pre>&lt;!-- a registry based Synapse configuration --&gt;
&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;log level="custom"&gt;
        &lt;property name="message" value="This is a dynamic Synapse configuration $$$"/&gt;
    &lt;/log&gt;
    &lt;send/&gt;
&lt;/definitions&gt;</pre>

<h2><a name="Sample12">Sample 12: One way messaging / fireAndForget through
synapse</a></h2>

<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>ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService -Dtrpurl=http://localhost:8080/ -Dmode=placeorder</pre>
<pre>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-turn replies to the client with a HTTP 202 acknowledgement</p>

<h1><a name="Endpoints">Advanced mediations with endpoints</a></h1>

<h2><a name="Sample50">Sample 50: POX to SOAP conversion</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;!-- filtering of messages with XPath and regex matches --&gt;
    &lt;filter source="get-property('To')" regex=".*/StockQuote.*"&gt;
        &lt;send&gt;
            &lt;endpoint&gt;
                &lt;address uri="http://localhost:9000/soap/SimpleStockQuoteService" format="soap11"/&gt;
            &lt;/endpoint&gt;
        &lt;/send&gt;
        &lt;drop/&gt;
    &lt;/filter&gt;
    &lt;send/&gt;
&lt;/definitions&gt; </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>ant stockquote -Dtrpurl=http://localhost:8080/soap/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>POST /soap/StockQuote HTTP/1.1
Content-Type: application/xml; charset=UTF-8;action="urn:getQuote";
SOAPAction: urn:getQuote
User-Agent: Axis2
Host: 127.0.0.1
Transfer-Encoding: chunked

75
&lt;m0:getQuote xmlns:m0="http://services.samples/xsd"&gt;
   &lt;m0:request&gt;
      &lt;m0:symbol&gt;IBM&lt;/m0:symbol&gt;
   &lt;/m0:request&gt;
&lt;/m0:getQuote&gt;0</pre>

<h2><a name="Sample51">Sample 51: MTOM and SwA optimizations and
request/response correlation</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;in&gt;
        &lt;filter source="get-property('Action')" regex="urn:uploadFileUsingMTOM"&gt;
            &lt;property name="example" value="mtom"/&gt;
            &lt;send&gt;
                &lt;endpoint&gt;
                    &lt;address uri="http://localhost:9000/soap/MTOMSwASampleService" optimize="mtom"/&gt;
                &lt;/endpoint&gt;
            &lt;/send&gt;
        &lt;/filter&gt;
        &lt;filter source="get-property('Action')" regex="urn:uploadFileUsingSwA"&gt;
            &lt;property name="example" value="swa"/&gt;
            &lt;send&gt;
                &lt;endpoint&gt;
                    &lt;address uri="http://localhost:9000/soap/MTOMSwASampleService" optimize="swa"/&gt;
                &lt;/endpoint&gt;
            &lt;/send&gt;
        &lt;/filter&gt;
    &lt;/in&gt;
    &lt;out&gt;
        &lt;filter source="get-property('example')" regex="mtom"&gt;
            &lt;property name="enableMTOM" value="true" scope="axis2"/&gt;
        &lt;/filter&gt;
        &lt;filter source="get-property('example')" regex="swa"&gt;
            &lt;property name="enableSwA" value="true" scope="axis2"/&gt;
        &lt;/filter&gt;
        &lt;send/&gt;
    &lt;/out&gt;
&lt;/definitions&gt;</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>ant optimizeclient -Dopt_mode=mtom</pre>

<p>The configuration now sets a local message context property, and forwards
the message to 'http://localhost:9000/soap/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 save it into a temporary
file.</p>
<pre>[java] Sending file : ./../../repository/conf/sample/resources/mtom/asf-logo.gif as MTOM</pre>
<pre>[java] Saved response to file : /tmp/mtom-36877.gif</pre>

<p>Next try SwA as:</p>
<pre>ant optimizeclient -Dopt_mode=swa</pre>
<pre>[java] Sending file : ./../../repository/conf/sample/resources/mtom/asf-logo.gif as SwA
[java] Saved response to file : /tmp/swa-47549.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>POST http://localhost:9000/soap/MTOMSwASampleService HTTP/1.1
Host: 127.0.0.1
SOAPAction: urn:uploadFileUsingMTOM
Content-Type: multipart/related; boundary=MIMEBoundaryurn_uuid_B94996494E1DD5F9B51177413845353; type="application/xop+xml";
start="&lt;0.urn:uuid:B94996494E1DD5F9B51177413845354@apache.org&gt;"; start-info="text/xml"; 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="text/xml"
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="http://schemas.xmlsoap.org/soap/envelope/"&gt;
            &lt;soapenv:Body&gt;
               &lt;m0:uploadFileUsingMTOM xmlns:m0="http://www.apache-synapse.org/test"&gt;
                  &lt;m0:request&gt;
                     &lt;m0:image&gt;
                        &lt;xop:Include href="cid:1.urn:uuid:78F94BC50B68D76FB41177413845003@apache.org" xmlns:xop="http://www.w3.org/2004/08/xop/include" /&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>POST http://localhost:9000/soap/MTOMSwASampleService HTTP/1.1
Host: 127.0.0.1
SOAPAction: urn:uploadFileUsingSwA
Content-Type: multipart/related; boundary=MIMEBoundaryurn_uuid_B94996494E1DD5F9B51177414170491; type="text/xml";
start="&lt;0.urn:uuid:B94996494E1DD5F9B51177414170492@apache.org&gt;"; 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="http://schemas.xmlsoap.org/soap/envelope/"&gt;
            &lt;soapenv:Body&gt;
               &lt;m0:uploadFileUsingSwA xmlns:m0="http://www.apache-synapse.org/test"&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>

<h2><a name="Sample52">Sample 52: Session less load balancing between 3
endpoints</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

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

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

    &lt;sequence name="errorHandler"&gt;

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

        &lt;header name="To" action="remove"/&gt;
        &lt;property name="RESPONSE" value="true"/&gt;

        &lt;send/&gt;
    &lt;/sequence&gt;

&lt;/definitions&gt;</pre>

<p><strong>Objective: Demonstrate the simple load balancing among set of
endpoints</strong></p>

<p><strong>Prerequisites:</strong></p>

<p>Start Synapse with sample configuration 52. (i.e. synapse -sample 52)</p>

<p>Deploy the LoadbalanceFailoverService by switching to &lt;synapse
installation directory&gt;/samples/axis2Server/src/LoadbalanceFailoverService
directory and running ant.</p>

<p>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>./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>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>[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>...
[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 requets 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>

<h2><a name="Sample53">Sample 53: Failover sending among 3 endpoints</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

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

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

    &lt;sequence name="errorHandler"&gt;

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

        &lt;header name="To" action="remove"/&gt;
        &lt;property name="RESPONSE" value="true"/&gt;

        &lt;send/&gt;
    &lt;/sequence&gt;

&lt;/definitions&gt;</pre>

<p><strong>Objective: Demonstrate the failover sending</strong></p>

<p><strong>Prerequisites:</strong></p>

<p>Start Synapse with sample configuration 53 (i.e. synapse -sample 53)</p>

<p>Deploy the LoadbalanceFailoverService and start three instances of sample
Axis2 server as mentioned in sample 52.</p>

<p></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
back ups. 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>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>...
[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>[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>

<h2><a name="Sample54">Sample 54: Session affinity load balancing between 3
endpoints</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

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

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

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

    &lt;sequence name="errorHandler"&gt;

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

        &lt;header name="To" action="remove"/&gt;
        &lt;property name="RESPONSE" value="true"/&gt;

        &lt;send/&gt;
    &lt;/sequence&gt;

&lt;/definitions&gt;</pre>

<p><strong>Objective: Demonstrate the load balancing with session affinity
using client initiated sessions</strong></p>

<p><strong>Prerequisites:</strong></p>

<p>Start Synapse with sample configuration 54 (i.e. synapse -sample 54).</p>

<p>Deploy the LoadbalanceFailoverService and start three instances of the
sample Axis2 server as in sample 52. </p>

<p></p>

<p>Above configuration is same as the load balancing configuration in sample
52, except that the session type is specified as "simpleClientSession". This
is a client initiated session, which means that the client generates the
session identifier and send it to 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 seccessive 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>ant loadbalancefailover -Dmode=session</pre>

<p>In the session mode, client continuesly sends requests with three diferent
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>[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>

<h2><a name="Sample55">Sample 55: Session affinity load balancing between
fail over endpoints</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

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

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

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

    &lt;sequence name="errorHandler"&gt;

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

        &lt;header name="To" action="remove"/&gt;
        &lt;property name="RESPONSE" value="true"/&gt;

        &lt;send/&gt;
    &lt;/sequence&gt;

&lt;/definitions&gt;</pre>

<p><strong>Objective: Demonstrate the session affinity based load balancing
with failover capability</strong></p>

<p><strong>Prerequisites:</strong></p>

<p>Start Synapse with sample configuration 55 (i.e. synapse -sample 55).</p>

<p>Deploy the LoadbalanceFailoverService and start four sample Axis2 servers
on http ports 9001, 9002, 9003 and 9004 respectively (make sure to specify
unconflicting https ports).</p>

<p></p>

<p>This configuration also uses "simpleClientSession" 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 behavoir.</p>
<pre>ant loadbalancefailover -Dmode=session</pre>

<p>You can see a client output as shown below.</p>
<pre>...
[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 observer 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>...
[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>

<h2><a name="Sample56">Sample 56: WSDL endpoint</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

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

        &lt;out&gt;
            &lt;send/&gt;
        &lt;/out&gt;
    &lt;/sequence&gt;

&lt;/definitions&gt;</pre>

<p><strong>Objective: Demonstrate the use of WSDL endpoints</strong></p>

<p><strong>Prerequisites:</strong></p>

<p>Start the Synapse configuration numbered 56 (i.e. synapse -sample 56).</p>

<p>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 inline in the configuration. An
excerpt taken from the sample_proxy_1.wsdl containing the specified service
and port is listed below.</p>
<pre>&lt;wsdl:service name="SimpleStockQuoteService"&gt;
    &lt;wsdl:port name="SimpleStockQuoteServiceSOAP11port_http"
               binding="axis2:SimpleStockQuoteServiceSOAP11Binding"&gt;
        &lt;soap:address location="http://localhost:9000/soap/SimpleStockQuoteService"/&gt;
    &lt;/wsdl:port&gt;
    &lt;wsdl:port name="SimpleStockQuoteServiceSOAP12port_http"
               binding="axis2:SimpleStockQuoteServiceSOAP12Binding"&gt;
        &lt;soap12:address location="http://localhost:9000/soap/SimpleStockQuoteService"/&gt;
    &lt;/wsdl:port&gt;
&lt;/wsdl:service&gt;</pre>

<p>Specified service and port refers to the endpoint address
"http://localhost:9000/soap/SimpleStockQuoteService" according to the above
WSDL. Now run the client using the following command.</p>
<pre>ant stockquote -Dsymbol=IBM -Dmode=quote -Daddurl=http://localhost:8080</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>

<h1><a name="MessageMediationQoS">Quality of Service addition or deduction
samples in message mediation</a></h1>

<h2><a name="Sample100">Sample 100: Using WS-Security for outgoing
messages</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;localEntry key="sec_policy" src="file:repository/conf/sample/resources/policy/policy_3.xml"/&gt;

    &lt;in&gt;
        &lt;send&gt;
            &lt;endpoint name="secure"&gt;
                &lt;address uri="http://localhost:9000/soap/SecureStockQuoteService"&gt;
                    &lt;enableSec policy="sec_policy"/&gt;
                    &lt;enableAddressing/&gt;
                &lt;/address&gt;
            &lt;/endpoint&gt;
        &lt;/send&gt;
    &lt;/in&gt;
    &lt;out&gt;
        &lt;header name="wsse:Security" action="remove"
                xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"/&gt;
        &lt;send/&gt;
    &lt;/out&gt;
&lt;/definitions&gt;</pre>

<p><strong>Objective: Connecting to endpoints with WS-Security for outgoing
messages</strong></p>

<p><strong>Prerequisites:</strong><br>
</p>

<p>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 100: i.e. synapse -sample 100<br>
Start the Axis2 server and deploy the SecureStockQuoteService if not already
done</p>

<p></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>ant stockquote -Dtrpurl=http://localhost:8080/</pre>

<p>The message sent by Synapse to the secure service can be seen as follows,
when TCPMon is used.</p>
<pre>POST http://localhost:9001/soap/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="http://www.w3.org/2001/04/xmlenc#" xmlns:wsa="http://www.w3.org/2005/08/addressing" ..&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="KeyId-29551621"&gt;
                  ...
               &lt;/ds:KeyInfo&gt;
            &lt;/ds:Signature&gt;
         &lt;/wsse:Security&gt;
         &lt;wsa:To&gt;http://localhost:9001/soap/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="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Id-3789605"&gt;
         &lt;xenc:EncryptedData Id="EncDataId-3789605" Type="http://www.w3.org/2001/04/xmlenc#Content"&gt;
            &lt;xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" /&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>

<h2><a name="Sample101">Sample 101: Reliable message exchange between Synapse
and the back-end server using WS-ReliableMessaging</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

    &lt;in&gt;
        &lt;RMSequence single="true" version="1.0"/&gt;
        &lt;send&gt;
           &lt;endpoint name="reliable"&gt;
              &lt;address uri="http://localhost:9000/soap/ReliableStockQuoteService"&gt;
                 &lt;enableRM/&gt;
                 &lt;enableAddressing/&gt;
              &lt;/address&gt;
           &lt;/endpoint&gt;
        &lt;/send&gt;
    &lt;/in&gt;
    &lt;out&gt;
        &lt;header name="wsrm:SequenceAcknowledgement" action="remove"
                xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"/&gt;
        &lt;header name="wsrm:Sequence" action="remove"
                xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"/&gt;
        &lt;send/&gt;
    &lt;/out&gt;

&lt;/definitions&gt;</pre>
<strong>Objective: Demonstrate the message exchange between Synapse and the
server using WS-ReliableMessaging (WS-RM)</strong> 

<p><strong>Prerequisites:</strong></p>

<p>Deploy the ReliableStockQuoteService in the sample Axis2 server by
switching to the samples/axis2Server/src/ReliableStockQuoteService directory
and running ant.</p>

<p>Start the sample Axis2 server on port 9000.</p>

<p>Start Synapse with the sample configuration 101 (i.e. synapse -sample
101).</p>

<p></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 happens only between the Synapse and the server. Now
run the sample client using the following command.</p>
<pre>ant stockquote -Dsymbol=IBM -Dmode=quote -Daddurl=http://localhost:8080</pre>

<p>You can observer the client output displaying the quote price for IBM as
follows:</p>
<pre>[java] Standard :: Stock price = $189.2521262517493</pre>

<p>There is no difference to be observed between the normal message exchange
and WS-RM enabled message exchange as far as client and server outputs are
considered. But if you look at the wire level messages, you would observe
additional WS-RM messages and WS-RM elements. Synapse, the initiator of the
RM sequence, first try to create a sequence by sending a message with
CreateSequence element.</p>
<pre>...
&lt;soapenv:Body&gt;
   &lt;wsrm:CreateSequence xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"&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>...
&lt;soapenv:Body&gt;
   &lt;wsrm:CreateSequenceResponse xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"&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/soap/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>&lt;soapenv:Envelope xmlns:wsa="http://www.w3.org/2005/08/addressing"
                  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&gt;
    &lt;soapenv:Header&gt;
        &lt;wsa:To&gt;http://localhost:9000/soap/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="http://schemas.xmlsoap.org/ws/2005/02/rm"
                       soapenv:mustUnderstand="1"&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="http://services.samples/xsd"&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>&lt;soapenv:Envelope xmlns:wsa="http://www.w3.org/2005/08/addressing"
                  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&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="http://schemas.xmlsoap.org/ws/2005/02/rm"
                       soapenv:mustUnderstand="1"&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="http://schemas.xmlsoap.org/ws/2005/02/rm"
                                      soapenv:mustUnderstand="1"&gt;
            &lt;wsrm:Identifier&gt;urn:uuid:879853A6871A66641C1179807373270&lt;/wsrm:Identifier&gt;
            &lt;wsrm:AcknowledgementRange Lower="1" Upper="1"/&gt;
        &lt;/wsrm:SequenceAcknowledgement&gt;
    &lt;/soapenv:Header&gt;
    &lt;soapenv:Body&gt;
        &lt;ns:getQuoteResponse xmlns:ns="http://services.samples/xsd"&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>&lt;soapenv:Envelope xmlns:wsa="http://www.w3.org/2005/08/addressing"
                  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&gt;
    &lt;soapenv:Header&gt;
        &lt;wsa:To&gt;http://localhost:9000/soap/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="http://schemas.xmlsoap.org/ws/2005/02/rm"
                                      soapenv:mustUnderstand="1"&gt;
            &lt;wsrm:Identifier&gt;urn:uuid:546F6F33FB7D8BBE351179807372769&lt;/wsrm:Identifier&gt;
            &lt;wsrm:AcknowledgementRange Lower="1" Upper="1"/&gt;
        &lt;/wsrm:SequenceAcknowledgement&gt;
    &lt;/soapenv:Header&gt;
    &lt;soapenv:Body&gt;
        &lt;wsrm:TerminateSequence xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"&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>&lt;soapenv:Envelope xmlns:wsa="http://www.w3.org/2005/08/addressing"
                  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&gt;
    &lt;soapenv:Header&gt;
        &lt;wsa:ReplyTo&gt;
            &lt;wsa:Address&gt;http://localhost:9000/soap/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="http://schemas.xmlsoap.org/ws/2005/02/rm"&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>

<h1><a name="ProxyServices">Synapse Proxy service samples</a></h1>

<h2><a name="Sample150">Sample 150: Introduction to proxy services</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;proxy name="StockQuoteProxy"&gt;
        &lt;target&gt;
            &lt;endpoint&gt;
                &lt;address uri="http://localhost:9000/soap/SimpleStockQuoteService"/&gt;
            &lt;/endpoint&gt;
            &lt;outSequence&gt;
                &lt;send/&gt;
            &lt;/outSequence&gt;
        &lt;/target&gt;
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/&gt;
    &lt;/proxy&gt;
&lt;/definitions&gt;</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></p>

<p>Once Synapse starts, you could go to
http://localhost:8080/soap/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>ant stockquote -Daddurl=http://localhost:8080/soap/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>

<h2><a name="Sample151">Sample 151: Custom sequences and endpoints with proxy
services</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

    &lt;sequence name="proxy_1"&gt;
        &lt;send&gt;
            &lt;endpoint&gt;&lt;address uri="http://localhost:9000/soap/SimpleStockQuoteService"/&gt;&lt;/endpoint&gt;
        &lt;/send&gt;
    &lt;/sequence&gt;
    &lt;sequence name="out"&gt;
        &lt;send/&gt;
    &lt;/sequence&gt;
    &lt;endpoint name="proxy_2_endpoint"&gt;
        &lt;address uri="http://localhost:9000/soap/SimpleStockQuoteService"/&gt;
    &lt;/endpoint&gt;
    &lt;localEntry key="proxy_wsdl" src="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/&gt;

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

    &lt;proxy name="StockQuoteProxy2"&gt;
        &lt;publishWSDL key="proxy_wsdl"/&gt;
        &lt;target endpoint="proxy_2_endpoint" outSequence="out"/&gt;
    &lt;/proxy&gt;
&lt;/definitions&gt;</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></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 "out" 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
instance. </p>
<pre>ant stockquote -Daddurl=http://localhost:8080/soap/StockQuoteProxy1<br>ant stockquote -Daddurl=http://localhost:8080/soap/StockQuoteProxy2</pre>

<h2><a name="Sample152">Sample 152: Switching transports and message format
from SOAP to REST/POX</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;proxy name="StockQuoteProxy" transports="https"&gt;
        &lt;target&gt;
            &lt;endpoint&gt;
                &lt;address uri="http://localhost:9000/soap/SimpleStockQuoteService" format="pox"/&gt;
            &lt;/endpoint&gt;
            &lt;outSequence&gt;
                &lt;send/&gt;
            &lt;/outSequence&gt;
        &lt;/target&gt;
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/&gt;
    &lt;/proxy&gt;
&lt;/definitions&gt;</pre>

<p><strong>Objective: Switching transports and from SOAP to
REST/POX</strong></p>

<p><strong>Prerequisites:</strong><br>
Start the Synapse configuration numbered 152: i.e. synapse -sample 152</p>

<p>Start the Axis2 server and deploy the SimpleStockQuoteService if not
already done</p>

<p></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>ant stockquote -Dtrpurl=http://localhost:8080/soap/StockQuoteProxy
...
     [java] org.apache.axis2.AxisFault: The service cannot be found for the endpoint reference (EPR) /soap/StockQuoteProxy</pre>

<p></p>

<p>Accessing this over https (ant stockquote
-Dtrpurl=https://localhost:8443/soap/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>POST http://localhost:9000/soap/SimpleStockQuoteService HTTP/1.1
Host: 127.0.0.1
SOAPAction: urn:getQuote
Content-Type: application/xml; charset=UTF-8;action="urn:getQuote";
Transfer-Encoding: chunked
Connection: Keep-Alive
User-Agent: Synapse-HttpComponents-NIO

75
&lt;m0:getQuote xmlns:m0="http://services.samples/xsd"&gt;
   &lt;m0:request&gt;
      &lt;m0:symbol&gt;IBM&lt;/m0:symbol&gt;
   &lt;/m0:request&gt;
&lt;/m0:getQuote&gt;</pre>
<pre>HTTP/1.1 200 OK
Content-Type: application/xml; charset=UTF-8;action="http://services.samples/SimpleStockQuoteServicePortType/getQuoteResponse";
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="http://services.samples/xsd"&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>

<p></p>

<h2><a name="Sample153">Sample 153: Routing the messages arrived to a proxy
service without processing the security headers</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;proxy name="StockQuoteProxy"&gt;
        &lt;target&gt;
            &lt;inSequence&gt;
                &lt;send&gt;
                    &lt;endpoint&gt;
                        &lt;address uri="http://localhost:9000/soap/SecureStockQuoteService"/&gt;
                    &lt;/endpoint&gt;
                &lt;/send&gt;
            &lt;/inSequence&gt;
            &lt;outSequence&gt;
                &lt;send/&gt;
            &lt;/outSequence&gt;
        &lt;/target&gt;
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/&gt;
    &lt;/proxy&gt;
&lt;/definitions&gt;</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)</p>

<p>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></p>

<p>The proxy service will recieve 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>ant stockquote -Dtrpurl=http://localhost:8080/soap/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:8080/soap/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>

<h2><a name="Sample154">Sample 154: Load Balancing with Proxy Service
</a></h2>

<div>
<pre>   &lt;!-- A proxy service with a loadbalace endpoint --&gt;
&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;proxy name="LBProxy" transports="https http" startOnLoad="true"&gt;
        &lt;target faultSequence="errorHandler"&gt;
            &lt;inSequence&gt;
                &lt;send&gt;
                    &lt;endpoint&gt;
                        &lt;session type="simpleClientSession"/&gt;
                        &lt;loadbalance algorithm="roundRobin"&gt;
                            &lt;endpoint&gt;
                                &lt;address uri="http://localhost:9001/soap/LBService1"&gt;
                                    &lt;enableAddressing/&gt;
                                    &lt;suspendDurationOnFailure&gt;20&lt;/suspendDurationOnFailure&gt;
                                &lt;/address&gt;
                            &lt;/endpoint&gt;
                            &lt;endpoint&gt;
                                &lt;address uri="http://localhost:9002/soap/LBService1"&gt;
                                    &lt;enableAddressing/&gt;
                                    &lt;suspendDurationOnFailure&gt;20&lt;/suspendDurationOnFailure&gt;
                                &lt;/address&gt;
                            &lt;/endpoint&gt;
                            &lt;endpoint&gt;
                                &lt;address uri="http://localhost:9003/soap/LBService1"&gt;
                                    &lt;enableAddressing/&gt;
                                    &lt;suspendDurationOnFailure&gt;20&lt;/suspendDurationOnFailure&gt;
                                &lt;/address&gt;
                            &lt;/endpoint&gt;
                        &lt;/loadbalance&gt;
                    &lt;/endpoint&gt;
                &lt;/send&gt;
                &lt;drop/&gt;
            &lt;/inSequence&gt;
            &lt;outSequence&gt;
                &lt;send/&gt;
            &lt;/outSequence&gt;
        &lt;/target&gt;
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_2.wsdl"/&gt;
    &lt;/proxy&gt;
    &lt;sequence name="errorHandler"&gt;

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

        &lt;header name="To" action="remove"/&gt;
        &lt;property name="RESPONSE" value="true"/&gt;

        &lt;send/&gt;
    &lt;/sequence&gt;
&lt;/definitions&gt; </pre>

<p><strong>Objective: Load Balancing with Proxy Service </strong></p>

<p><strong>Prerequisites:</strong> Sample setup is same as LoadBalance
endpoints (#53 to #54).</p>

<p>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>Runs the client with </p>
<pre>  ant loadbalancefailover -Dmode=session -Dtrpurl=http://localhost:8080/soap/LBProxy </pre>

<p>Functionality is similar to the sample #54. </p>
</div>

<h1><a name="ProxyServiceQoS">QoS addition and deduction for service
mediation (proxy) samples</a></h1>

<h2><a name="Sample200">Sample 200: Using WS-Security with policy attachments
for proxy services</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;localEntry key="sec_policy" src="file:repository/conf/sample/resources/policy/policy_3.xml"/&gt;
    &lt;proxy name="StockQuoteProxy"&gt;
        &lt;target&gt;
            &lt;inSequence&gt;
                &lt;header name="wsse:Security" action="remove"
                        xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"/&gt;
                &lt;send&gt;
                    &lt;endpoint&gt;
                        &lt;address uri="http://localhost:9000/soap/SimpleStockQuoteService"/&gt;
                    &lt;/endpoint&gt;
                &lt;/send&gt;
            &lt;/inSequence&gt;
            &lt;outSequence&gt;
                &lt;send/&gt;
            &lt;/outSequence&gt;
        &lt;/target&gt;
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/&gt;
        &lt;policy key="sec_policy"/&gt;
        &lt;enableSec/&gt;
    &lt;/proxy&gt;
&lt;/definitions&gt;</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></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>ant stockquote -Dtrpurl=http://localhost:8080/soap/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:8080/soap/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>

<h2><a name="Sample201">Sample 201: Reliable message exchange between the
client and proxy services using WS-ReliableMessaging</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;proxy name="StockQuoteProxy"&gt;
        &lt;target&gt;
            &lt;inSequence&gt;
                &lt;header name="wsrm:SequenceAcknowledgement" action="remove"
                        xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"/&gt;
                &lt;header name="wsrm:Sequence" action="remove"
                        xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"/&gt;
                &lt;send&gt;
                    &lt;endpoint&gt;
                        &lt;address uri="http://localhost:9000/soap/SimpleStockQuoteService"/&gt;
                    &lt;/endpoint&gt;
                &lt;/send&gt;
            &lt;/inSequence&gt;
            &lt;outSequence&gt;
                &lt;send/&gt;
            &lt;/outSequence&gt;
        &lt;/target&gt;
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/&gt;
        &lt;enableRM/&gt;
    &lt;/proxy&gt;
&lt;/definitions&gt;</pre>
<strong>Objective: Demonstrate the reliable message exchange between the
client and Synapse using WS-ReliableMessaging (WS-RM)</strong> 

<p><strong>Prerequisites:</strong></p>

<p>Deploy the SimpleStockQuoteService in the sample Axis2 server and start it
on port 9000.</p>

<p>Start Synapse with the sample configuration number 201 (i.e. synapse
-sample 201).</p>

<p></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 back end server. This is
required as the reliable messaging is applicable only between the client and
Synapse. Now start the client with WS-RM as follows:</p>
<pre>ant stockquote -Dsymbol=IBM -Dmode=quote -Daddurl=http://localhost:8080/soap/StockQuoteProxy -Dwsrm=true</pre>

<p>In this case, client sends 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 53. Each message would
perform a similar function to the messages discussed in sample 53.</p>

<p></p>

<h1><a name="Transport">Transport samples and switching transports</a></h1>

<h2><a name="Sample250">Sample 250: Introduction to switching transports -
JMS to http/s</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

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

&lt;/definitions&gt;</pre>

<p><strong>Objective: Introduction to switching transports with proxy
services</strong></p>

<p><strong>Prerequisites:</strong><br>
Start the Axis2 server and deploy the SimpleStockQuoteService (Refer steps
above)<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<br>
For this example we would use ActiveMQ as the JMS provider. Once ActiveMQ is
installed and started you should get a message as follows:</p>
<pre>INFO BrokerService - ActiveMQ JMS Message Broker (localhost) 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 to
the Axis2 documentation on setting up JMS for more details
(http://ws.apache.org/axis2/1_1/jms-transport.html). You will also need to
copy the ActiveMQ client jar files activeio-core-3.0-beta1.jar,
activemq-core-4.0-RC2.jar and geronimo-j2ee-management_1.0_spec-1.0.jar into
the lib directory to allow Synapse to connect to the JMS provider.</p>

<p>For a default ActiveMQ v4.0 installation, you may uncomment the Axis2
transport listener configuration found at repository/conf/axis2.xml as</p>
<pre>&lt;transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener"&gt; ...</pre>

<p>Once you start the Synapse configuration and request for the WSDL of the
proxy service (http://localhost:8080/soap/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>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>[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>Accepted order for : 16517 stocks of MSFT at $ 169.14622538721846</pre>

<p>In this sample, client sends the request message to the proxy service
exposed in JMS in Synsape. Synapse forwards this message to the HTTP EPR of
the simple stock quote service hosted on the sample Axis2 server, and returns
the reply back to the client through a JMS temporary queue.</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
property elements on the proxy service definition to specify the destination
and connection factory etc.</p>

<p>e.g.</p>
<pre>&lt;property name="transport.jms.Destination" value="dynamicTopics/something.TestTopic"/&gt;</pre>

<h2><a name="Sample251">Sample 251: Switching from http/s to JMS</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

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

&lt;/definitions&gt;</pre>

<p><strong>Objective: Demonstrate switching from HTTP to JMS</strong></p>

<p><strong>Prerequisites:</strong><br>
Download, install and start a JMS server</p>

<p>Configure sample Axis2 server for JMS (refer notes above)<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/soap/SimpleStockQuoteService?wsdl. JMS URL
for the service is mentioned as below:</p>
<pre>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</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:8080/soap/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>ant stockquote -Daddurl=http://localhost:8080/soap/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>Accepted order for : 18406 stocks of MSFT at $ 83.58806051152119</pre>

<h2><a name="Sample252">Sample 252: Pure text/binary and POX message support
with JMS</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

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

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

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

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

    &lt;proxy name="JMSFileUploadProxy" transports="jms"&gt;
        &lt;target inSequence="mtom_proxy" outSequence="out"/&gt;
        &lt;parameter name="transport.jms.Wrapper"&gt;{http://services.samples/xsd}element&lt;/parameter&gt;
    &lt;/proxy&gt;
    &lt;proxy name="JMSTextProxy" transports="jms"&gt;
        &lt;target inSequence="text_proxy" outSequence="out"/&gt;
        &lt;parameter name="transport.jms.Wrapper"&gt;{http://services.samples/xsd}text&lt;/parameter&gt;
    &lt;/proxy&gt;
    &lt;proxy name="JMSPoxProxy" transports="jms"&gt;
        &lt;target inSequence="pox_proxy" outSequence="out"/&gt;
    &lt;/proxy&gt;
&lt;/definitions&gt;</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></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 "&lt;price&gt; &lt;qty&gt; &lt;symbol&gt;".
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 "transport.jms.Wrapper" defines a custom wrapper element
QName, to be used when wrapping text/binary content into a SOAP envelope.</p>

<p></p>

<p>Execute JMS client as follows. This will post a pure text JMS message with
the content defined (e.g. "12.33 1000 ACP") to the specified JMS destination
- dynamicQueues/JMSTextProxy</p>
<pre>ant jmsclient -Djms_type=text -Djms_payload="12.33 1000 ACP" -Djms_dest=dynamicQueues/JMSTextProxy</pre>

<p>Following the debug 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 "{http://services.samples/xsd}text" has been used to hold
the text message content.</p>
<pre>[JMSWorker-1] DEBUG ProxyServiceMessageReceiver - Body :
&lt;?xml version='1.0' encoding='utf-8'?&gt;&lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&gt;
  &lt;soapenv:Body&gt;&lt;axis2ns1:text xmlns:axis2ns1="http://services.samples/xsd"&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>[JMSWorker-1] DEBUG AddressEndpoint - Sending message to endpoint :: name = AnonymousEndpoints resolved address = http://localhost:9000/soap/SimpleStockQuoteService
[JMSWorker-1] DEBUG AddressEndpoint - SOAPAction: urn:placeOrder
[JMSWorker-1] DEBUG AddressEndpoint - WSA-Action: urn:placeOrder
[JMSWorker-1] DEBUG AddressEndpoint - Body :
&lt;?xml version='1.0' encoding='utf-8'?&gt;&lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&gt;&lt;soapenv:Body&gt;
  &lt;m:placeOrder xmlns:m="http://services.samples/xsd"&gt;&lt;m:order&gt;&lt;m:price&gt;12.33&lt;/m:price&gt;&lt;m:quantity&gt;1000&lt;/m:quantity&gt;&lt;m:symbol&gt;ACP&lt;/m:symbol&gt;&lt;/m:order&gt;
&lt;/m: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>Wed Apr 25 19:50:56 LKT 2007 samples.services.SimpleStockQuoteService :: Accepted order for : 1000 stocks of ACP at $ 12.33</pre>

<p></p>

<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 conent 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>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>[JMSWorker-1] DEBUG ProxyServiceMessageReceiver - Proxy Service JMSFileUploadProxy received a new message...
...
[JMSWorker-1] DEBUG ProxyServiceMessageReceiver - Body :
&lt;?xml version='1.0' encoding='utf-8'?&gt;&lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&gt;
&lt;soapenv:Body&gt;&lt;axis2ns1:element xmlns:axis2ns1="http://services.samples/xsd"&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>Wrote to file : /tmp/mtom-60319.gif</pre>

<p></p>

<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>ant jmsclient -Djms_type=pox -Djms_dest=dynamicQueues/JMSPoxProxy -Djms_payload=MSFT</pre>

<p>You can see that Synapse received the POX message and displays it as
follows in the debug logs, and then converts it into a SOAP payload and sends
to the SimpleStockQuoteService after setting the SOAP action as
'urn:placeOrder'.</p>

<p></p>
<pre>[JMSWorker-1] DEBUG ProxyServiceMessageReceiver - Proxy Service JMSPoxProxy received a new message...
...
[JMSWorker-1] DEBUG ProxyServiceMessageReceiver - Body :
&lt;?xml version='1.0' encoding='utf-8'?&gt;&lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&gt;&lt;soapenv:Body&gt;&lt;m:placeOrder xmlns:m="http://services.samples/xsd"&gt;
    &lt;m:order&gt;
        &lt;m:price&gt;172.39703010684752&lt;/m:price&gt;
        &lt;m:quantity&gt;19211&lt;/m:quantity&gt;
        &lt;m:symbol&gt;MSFT&lt;/m:symbol&gt;
    &lt;/m:order&gt;
&lt;/m:placeOrder&gt;&lt;/soapenv:Body&gt;&lt;/soapenv:Envelope&gt;
[JMSWorker-1] DEBUG ProxyServiceMessageReceiver - Using the sequence named pox_proxy for message mediation
...
[JMSWorker-1] DEBUG HeaderMediator - Setting header : Action to : urn:placeOrder
...
[JMSWorker-1] DEBUG AddressEndpoint - Sending message to endpoint :: name = AnonymousEndpoints resolved address = http://localhost:9000/soap/SimpleStockQuoteService
[JMSWorker-1] DEBUG AddressEndpoint - SOAPAction: urn:placeOrder
[JMSWorker-1] DEBUG AddressEndpoint - Body :
&lt;?xml version='1.0' encoding='utf-8'?&gt;&lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&gt;&lt;soapenv:Body&gt;&lt;m:placeOrder xmlns:m="http://services.samples/xsd"&gt;
    &lt;m:order&gt;
        &lt;m:price&gt;172.39703010684752&lt;/m:price&gt;
        &lt;m:quantity&gt;19211&lt;/m:quantity&gt;
        &lt;m:symbol&gt;MSFT&lt;/m:symbol&gt;
    &lt;/m:order&gt;
&lt;/m:placeOrder&gt;&lt;/soapenv:Body&gt;&lt;/soapenv:Envelope&gt;
[JMSWorker-1] DEBUG Axis2FlexibleMEPClient - sending [add = false] [sec = false] [rm = false] [ mtom = false] [ swa = false] [ force soap=true; pox=false] [ to null] </pre>

<p>The sample Axis2 server displays a successful message on the receipt of
the message as:</p>
<pre>Wed Apr 25 20:24:50 LKT 2007 samples.services.SimpleStockQuoteService :: Accepted order for : 19211 stocks of MSFT at $ 172.39703010684752</pre>

<h2><a name="Sample253">Sample 253: One way bridging from JMS to http and
replying with a 202 Accepted response</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

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

    &lt;proxy name="OneWayProxy" transports="http"&gt;
        &lt;target&gt;
            &lt;inSequence&gt;
                &lt;log level="full"/&gt;
                &lt;property name="RESPONSE" value="true"/&gt;
                &lt;header name="To" value="http://www.w3.org/2005/08/addressing/anonymous"/&gt;
                &lt;property name="SC_ACCEPTED" value="true" scope="axis2"/&gt;
                &lt;property action="set" name="OUT_ONLY" value="true"/&gt;
                &lt;send/&gt;
            &lt;/inSequence&gt;
            &lt;outSequence&gt;
                &lt;send/&gt;
            &lt;/outSequence&gt;
        &lt;/target&gt;
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/&gt;
    &lt;/proxy&gt;

&lt;/definitions&gt;</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</p>

<p>Start the Synapse configuration numbered 253: i.e. synapse -sample 253</p>

<p></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>ant stockquote -Dmode=placeorder -Dtrpurl="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.DestinationType=queue"</pre>
<pre>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>ant stockquote -Dmode=placeorder -Dtrpurl=http://localhost:8080/soap/OneWayProxy</pre>
<pre>HTTP/1.1 202 Accepted
Content-Type: text/xml; charset=UTF-8
Host: 127.0.0.1
SOAPAction: "urn:placeOrder"
Date: Sun, 06 May 2007 17:20:19 GMT
Server: Synapse-HttpComponents-NIO
Transfer-Encoding: chunked

0</pre>

<h2><a name="Sample254">Sample 254: Using the file system as transport medium
using VFS transport listener and sender</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
        &lt;proxy name="StockQuoteProxy" transports="vfs"&gt;
                &lt;parameter name="transport.vfs.FileURI"&gt;file:///home/user/test/in&lt;/parameter&gt; &lt;!--CHANGE--&gt;
                &lt;parameter name="transport.vfs.ContentType"&gt;text/xml&lt;/parameter&gt;
                &lt;parameter name="transport.vfs.FileNamePattern"&gt;.*\.xml&lt;/parameter&gt;
                &lt;parameter name="transport.PollInterval"&gt;15&lt;/parameter&gt;
                &lt;parameter name="transport.vfs.MoveAfterProcess"&gt;file:///home/user/test/original&lt;/parameter&gt; &lt;!--CHANGE--&gt;
                &lt;parameter name="transport.vfs.MoveAfterFailure"&gt;file:///home/user/test/original&lt;/parameter&gt; &lt;!--CHANGE--&gt;
                &lt;parameter name="transport.vfs.ActionAfterProcess"&gt;MOVE&lt;/parameter&gt;
                &lt;parameter name="transport.vfs.ActionAfterFailure"&gt;MOVE&lt;/parameter&gt;

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

<p><strong>Objective: Using the file system as transport medium using VFS
transport listener and sender</strong></p>

<p>Start the Axis2 server and deploy the SimpleStockQuoteService if not
already done</p>

<p>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_115.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 prefeix
<em>vfs:</em>. Values you have to change are marked with &lt;!--CHANGE--&gt;.
</p>

<p>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>&lt;?xml version='1.0' encoding='UTF-8'?&gt;
        &lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing"&gt;
        &lt;soapenv:Body&gt;
                &lt;m0:getQuote xmlns:m0="http://services.samples/xsd"&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>

<h2><a name="Sample255">Sample 255: Switching from ftp transport listener to
mail transport sender</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
        &lt;proxy name="StockQuoteProxy" transports="vfs"&gt;
                &lt;parameter name="transport.vfs.FileURI"&gt;vfs:ftp://guest:guest@localhost/test?vfs.passive=true&lt;/parameter&gt; &lt;!--CHANGE--&gt;
                &lt;parameter name="transport.vfs.ContentType"&gt;text/xml&lt;/parameter&gt;
                &lt;parameter name="transport.vfs.FileNamePattern"&gt;.*\.xml&lt;/parameter&gt;
                &lt;parameter name="transport.PollInterval"&gt;15&lt;/parameter&gt;

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

<h2><a name="Sample256">Sample 256: Proxy services with the mail transport
</a></h2>
<pre>&lt;!-- Using the mail transport --&gt;
&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;proxy name="StockQuoteProxy" transports="mailto"&gt;

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

        &lt;target&gt;
            &lt;inSequence&gt;
                &lt;property name="senderAddress" expression="get-property('transport', 'From')"/&gt;
                &lt;log level="full"&gt;
                    &lt;property name="Sender Address" expression="get-property('senderAddress')"/&gt;
                &lt;/log&gt;
                &lt;send&gt;
                    &lt;endpoint&gt;
                        &lt;address uri="http://localhost:9000/soap/SimpleStockQuoteService"/&gt;
                    &lt;/endpoint&gt;
                &lt;/send&gt;
            &lt;/inSequence&gt;
            &lt;outSequence&gt;
                &lt;property name="Subject" value="Custom Subject for Response" scope="transport"/&gt;
                &lt;header name="To" expression="fn:concat('mailto:', get-property('senderAddress'))"/&gt;
                &lt;log level="full"&gt;
                    &lt;property name="message" value="Response message"/&gt;
                    &lt;property name="Sender Address" expression="get-property('senderAddress')"/&gt;
                &lt;/log&gt;
                &lt;send/&gt;
            &lt;/outSequence&gt;
        &lt;/target&gt;
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/&gt;
    &lt;/proxy&gt;
&lt;/definitions&gt; </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</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>Start the Synapse configuration numbered 256: i.e. synapse -sample 256</p>

<p>Send a plain/text email with the following body and any custom Subject
from your mail account.</p>
<pre>&lt;m0:getQuote xmlns:m0="http://services.samples/xsd"&gt;&lt;m0:request&gt;&lt;m0:symbol&gt;IBM&lt;/m0:symbol&gt;&lt;/m0:request&gt;&lt;/m0: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>

<h1><a name="Task">Introduction to synapse tasks</a></h1>

<h2><a name="Sample300">Sample 300: Introduction to tasks with simple
trigger</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

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

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

&lt;/definitions&gt;</pre>

<p><strong>Objective: Introduce the concept of tasks and how simple trigger
works</strong></p>

<p><strong>Prerequisites:</strong><br>
You will need access to build the SimpleStockQuoteService as mentioned in the
above and start the sample axis2 server before staring synapse.</p>

<p>When ever synapse gets started and initialized, this 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
forever.</p>

<p>One can write his own task class implementing the
org.apache.synapse.startup.Task interface and implementing the execute method
to do the task. For this particular sample we have used the MessageInjector
which just injects a message specified in to the synapse environment.</p>

<h1><a name="AdvancedMediation">Advanced mediations with advanced
mediators</a></h1>

<h2><a name="ScriptMediator">Using scripts in mediation (Script
Mediator)</a></h2>

<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>

<h2><a name="Sample350">Sample 350: Introduction to the script mediator using
js scripts</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;localEntry key="stockquoteScript" src="file:repository/conf/sample/resources/script/stockquoteTransform.js"/&gt;

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

<p></p>
<pre>&lt;x&gt;&lt;![CDATA[
  function transformRequest(mc) {
     var symbol = mc.getPayloadXML()..*::Code.toString();
     mc.setPayloadXML(
        &lt;m:getQuote xmlns:m="http://services.samples/xsd"&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="http://www.apache-synapse.org/test"&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 script mediators</strong></p>

<p><strong>Prerequisites:</strong></p>

<p>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></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>ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService -Dtrpurl=http://localhost:8080/ -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>

<h2><a name="Sample351">Sample 351: In-line script mediation with
JavaScript</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;in&gt;
        &lt;!-- transform the custom quote request into a standard quote requst expected by the service --&gt;
        &lt;script language="js"&gt;&lt;![CDATA[
               var symbol = mc.getPayloadXML()..*::Code.toString();
               mc.setPayloadXML(
                  &lt;m:getQuote xmlns:m="http://services.samples/xsd"&gt;
                     &lt;m:request&gt;
                        &lt;m:symbol&gt;{symbol}&lt;/m:symbol&gt;
                     &lt;/m:request&gt;
                  &lt;/m:getQuote&gt;);
        ]]&gt;&lt;/script&gt;
        &lt;send&gt;
            &lt;endpoint&gt;
                &lt;address uri="http://localhost:9000/soap/SimpleStockQuoteService"/&gt;
            &lt;/endpoint&gt;
        &lt;/send&gt;
    &lt;/in&gt;
    &lt;out&gt;
        &lt;!-- transform the standard response back into the custom format the client expects --&gt;
        &lt;script language="js"&gt;&lt;![CDATA[
               var symbol = mc.getPayloadXML()..*::symbol.toString();
               var price = mc.getPayloadXML()..*::last.toString();
               mc.setPayloadXML(
                  &lt;m:CheckPriceResponse xmlns:m="http://www.apache-synapse.org/test"&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;/script&gt;
        &lt;send/&gt;
    &lt;/out&gt;
&lt;/definitions&gt; </pre>

<p><strong>Objective: Introduction to in-line script mediation</strong></p>

<p><strong>Prerequisites:</strong></p>

<p>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></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 # 500 to test this example.</p>

<p></p>

<h2><a name="Sample352">Sample 352: Accessing Synapse message context API
methods using scripting language</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;in&gt;
       &lt;!-- change the MessageContext into a response and set a response payload --&gt;
       &lt;script language="js"&gt;&lt;![CDATA[
          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;);
       ]]&gt;&lt;/script&gt;
    &lt;/in&gt;
    &lt;send/&gt;
&lt;/definitions&gt; </pre>

<p><strong>Objective: Accessing the Synapse APIs from scripting
languages</strong></p>

<p><strong>Prerequisites:</strong></p>

<p>Start the Synapse configuration numbered 352: i.e. bin/synapse -sample
352<br>
</p>

<p></p>

<p>This example shows how an inline 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 "99.9" as the last sale price as per the above
script.</p>
<pre>ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService -Dtrpurl=http://localhost:8080/
...
stockquote:
     [java] Standard :: Stock price = $99.9</pre>

<h2><a name="Sample353">Sample 353: Using Ruby scripts for mediation</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

    &lt;localEntry key="stockquoteScript" src="file:repository/conf/sample/resources/script/stockquoteTransform.rb"/&gt;
    &lt;in&gt;
        &lt;!-- transform the custom quote request into a standard quote request expected by the service --&gt;
        &lt;script language="rb" key="stockquoteScript" function="transformRequest"/&gt;

        &lt;!-- send message to real endpoint referenced by name "stockquote" and stop --&gt;
        &lt;send&gt;
            &lt;endpoint name="stockquote"&gt;
                &lt;address uri="http://localhost:9000/soap/SimpleStockQuoteService"/&gt;
            &lt;/endpoint&gt;
        &lt;/send&gt;
    &lt;/in&gt;
    &lt;out&gt;
        &lt;!-- transform the standard response back into the custom format the client expects --&gt;
        &lt;script language="rb" key="stockquoteScript" function="transformResponse"/&gt;
        &lt;send/&gt;
    &lt;/out&gt;
&lt;/definitions&gt; </pre>
<pre>&lt;x&gt;&lt;![CDATA[
require 'rexml/document'
include REXML

def transformRequest(mc)
   newRequest= Document.new '&lt;m:getQuote xmlns:m="http://services.samples/xsd"&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="http://www.apache-synapse.org/test"&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></p>

<p>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>. </p>

<p>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></p>

<p>This sample is functionally equivalent to sample # 500 (#501 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 is to be invoked when used. Execute
the stock quote client to send a custom stock quote as per example #500 and
check the received stock quote response.</p>

<h2><a name="Sample354">Sample 354: Using In-lined Ruby scripts for
mediation</a></h2>

<div>
<pre>      &lt;!-- Using In-lined Ruby scripts for mediation --&gt;
&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;in&gt;
        &lt;script language="rb"&gt;
            &lt;![CDATA[
                require 'rexml/document'
                include REXML
                newRequest= Document.new '&lt;m:getQuote xmlns:m="http://services.samples/xsd"&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)
            ]]&gt;
        &lt;/script&gt;
        &lt;send&gt;
            &lt;endpoint&gt;
                &lt;address uri="http://localhost:9000/soap/SimpleStockQuoteService"/&gt;
            &lt;/endpoint&gt;
        &lt;/send&gt;
    &lt;/in&gt;
    &lt;out&gt;
        &lt;script language="rb"&gt;
            &lt;![CDATA[
                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)
            ]]&gt;
        &lt;/script&gt;
        &lt;send/&gt;
    &lt;/out&gt;
&lt;/definitions&gt; </pre>

<p><strong>Objective: Script mediators using Ruby(In-line Ruby
Script)</strong></p>

<p><strong>Prerequisites:</strong></p>

<p>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>. </p>

<p>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></p>

<p>This sample is functionally equivalent to the sample 353. </p>

<p>Run the client with </p>
<pre> ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService -Dtrpurl=http://localhost:8080/ -Dmode=customquote</pre>
</div>

<h2><a name="DBMediators">Database interactions in mediation (DBLookup /
DBReport)</a></h2>

<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>

<p></p>

<h2><a name="Sample360">Sample 360: Introduction to dblookp mediator</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    
    &lt;sequence name="myFaultHandler"&gt;
        &lt;makefault&gt;
            &lt;code value="tns:Receiver" xmlns:tns="http://www.w3.org/2003/05/soap-envelope"/&gt;
            &lt;reason expression="get-property('ERROR_MESSAGE')"/&gt;
        &lt;/makefault&gt;

        &lt;property name="RESPONSE" value="true"/&gt;
        &lt;header name="To" expression="get-property('ReplyTo')"/&gt;
        &lt;send/&gt;
        &lt;drop/&gt;
    &lt;/sequence&gt;

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

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

        &lt;out&gt;
            &lt;send/&gt;
        &lt;/out&gt;

    &lt;/sequence&gt;

&lt;/definitions&gt;</pre>

<p></p>

<p></p>

<p><strong>Objective:</strong> I<strong>ntroduction to the dblookup
mediator</strong></p>

<p><strong>Prerequisites:</strong> Setting up Derby database as explained
above.</p>

<p>Start the Synapse configuration numbered 360: i.e. synapse -sample 360</p>

<p>Start the Axis2 server and deploy the SimpleStockQuoteService if not
already done</p>

<p></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></p>

<p>When the IBM stock quote is requested,</p>
<pre>ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService -Dtrpurl=http://localhost:8080/ -Dsymbol=IBM</pre>

<p>Synapse console shows</p>
<pre>INFO LogMediator text = ** Looking up from the Database **INFO LogMediator text = Company ID &#x2013; c1<br></pre>

<p></p>

<p>For the SUN stock quote,</p>
<pre>ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService -Dtrpurl=http://localhost:8080/ -Dsymbol=SUN</pre>

<p></p>

<p>Synapse console shows</p>
<pre>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>ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService -Dtrpurl=http://localhost:8080/ -Dsymbol=MSFT</pre>
<pre>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>INFO LogMediator text = ** Unrecognized Company ID **</pre>

<p></p>

<p>and the client gets a response which has following message.</p>
<pre>** Unrecognized Company ID **</pre>

<div>
</div>

<h2><a name="Sample361">Sample 361: Introduction to dbreport mediator</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

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

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

&lt;/definitions&gt;</pre>

<div>
<p><strong>Objective: I<strong>ntroduction to the dbreport
mediator</strong></strong></p>

<p><strong>Prerequisites:</strong> Setting up Derby database as above.</p>

<p>Start the Synapse configuration numbered 361: i.e. synapse -sample 361</p>

<p>Start the Axis2 server and deploy the SimpleStockQuoteService if not
already done</p>
</div>

<p>This sample demonstrate 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></p>

<p>Run the client using,</p>
<pre>ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService -Dtrpurl=http://localhost:8080/ -Dsymbol=IBM</pre>

<p>and then execute the following query using database client tool against
synapsedb.</p>
<pre>select price from company where name='IBM';</pre>

<p>It will show some value as follows.</p>
<pre>96.39535981018865</pre>

<div>
</div>

<h2><a name="Sample362">Sample 362: Action of dbreport and dblookup mediators
together</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

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

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

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

&lt;/definitions&gt;</pre>

<p><strong>Objective: Demonstrate the use of dbreport and dblookup
mediators</strong></p>

<p><strong>Prerequisites:</strong> Setting up Derby database as above.</p>

<p>Start the Synapse configuration numbered 362: i.e. synapse -sample 362</p>

<p>Start the Axis2 server and deploy the SimpleStockQuoteService if not
already done</p>

<p></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>ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService -Dtrpurl=http://localhost:8080/ -Dsymbol=IBM</pre>

<p>Synapse console shows,</p>
<pre>INFO LogMediator text = ** Reporting to the Database **<br><br>...<br><br>INFO LogMediator text = ** Looking up from the Database **<br><br>...<br><br>INFO LogMediator text = Stock price - 153.47886496064808</pre>

<p></p>

<h2><a name="Throttle">Throttling messages (Throttle Mediator)</a></h2>

<h2><a name="Sample370">Sample 370: Introduction to throttle mediator and
concurrency throttling</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;sequence name="main"&gt;
        &lt;in&gt;
            &lt;throttle id="A"&gt;
                &lt;policy&gt;
                    &lt;!-- define throttle policy --&gt;
                    &lt;wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
                                xmlns:throttle="http://www.wso2.org/products/wso2commons/throttle"&gt;
                        &lt;throttle:ThrottleAssertion&gt;
                            &lt;throttle:MaximumConcurrentAccess&gt;10&lt;/throttle:MaximumConcurrentAccess&gt;
                        &lt;/throttle:ThrottleAssertion&gt;
                    &lt;/wsp:Policy&gt;
                &lt;/policy&gt;
                &lt;onAccept&gt;
                    &lt;log level="custom"&gt;
                        &lt;property name="text" value="**Access Accept**"/&gt;
                    &lt;/log&gt;
                    &lt;send&gt;
                        &lt;endpoint&gt;
                            &lt;address uri="http://localhost:9000/soap/SimpleStockQuoteService"/&gt;
                        &lt;/endpoint&gt;
                    &lt;/send&gt;
                &lt;/onAccept&gt;
                &lt;onReject&gt;
                    &lt;log level="custom"&gt;
                        &lt;property name="text" value="**Access Denied**"/&gt;
                    &lt;/log&gt;
                    &lt;makefault&gt;
                        &lt;code value="tns:Receiver"
                              xmlns:tns="http://www.w3.org/2003/05/soap-envelope"/&gt;
                        &lt;reason value="**Access Denied**"/&gt;
                    &lt;/makefault&gt;
                    &lt;property name="RESPONSE" value="true"/&gt;
                    &lt;header name="To" action="remove"/&gt;
                    &lt;send/&gt;
                    &lt;drop/&gt;
                &lt;/onReject&gt;
            &lt;/throttle&gt;
        &lt;/in&gt;
        &lt;out&gt;
            &lt;throttle id="A"/&gt;
            &lt;send/&gt;
        &lt;/out&gt;
    &lt;/sequence&gt;
&lt;/definitions&gt;</pre>

<p><b>Objective: Demonstrate the use of throttle mediator for concurrency
throttling </b></p>

<p><strong>Prerequisites:</strong></p>

<p>Deploy the SimpleStockQuoteService in sample Axis2 server and start it on
port 9000.</p>

<p>Start Synapse with the sample configuration 370 (i.e. synapse -sample
370).</p>

<p></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. Policy tag specifies the throttling policy to be applied
for messages. In this sample policy contains only component called
"MaximumConcurrentAccess" .This indicates the maximum number of concurrent
request that may have passed through the synapse on a single unit of time. To
test concurrency throttling ,it is required to send concurrent request to
synapse. For synapse with above configuration ,if client send 20 request
concurrently ,then approximately half of those will success. The client
command is as follows.</p>
<pre>ant stockquote -Dsymbol=IBM -Dmode=quote -Daddurl=http://localhost:8080/</pre>

<p></p>

<h2><a name="Sample371">Sample 371: Restricting requests based on policies
</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;sequence name="main"&gt;
        &lt;in&gt;
            &lt;throttle id="A"&gt;
                &lt;policy&gt;
                    &lt;!-- define throttle policy --&gt;
                    &lt;wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
                                xmlns:throttle="http://www.wso2.org/products/wso2commons/throttle"&gt;
                        &lt;throttle:ThrottleAssertion&gt;   <br>                                   &lt;wsp:All&gt;
                                &lt;throttle:ID throttle:type="IP"&gt;Other&lt;/throttle:ID&gt;
                                &lt;wsp:ExactlyOne&gt;
                                    &lt;wsp:All&gt;
                                        &lt;throttle:MaximumCount&gt;4&lt;/throttle:MaximumCount&gt;
                                        &lt;throttle:UnitTime&gt;800000&lt;/throttle:UnitTime&gt;
                                        &lt;throttle:ProhibitTimePeriod wsp:Optional="true"&gt;10000&lt;/throttle:ProhibitTimePeriod&gt;
                                    &lt;/wsp:All&gt;
                                    &lt;throttle:IsAllow&gt;true&lt;/throttle:IsAllow&gt;
                                &lt;/wsp:ExactlyOne&gt;
                            &lt;/wsp:All&gt;
                            &lt;wsp:All&gt;
                                &lt;throttle:ID throttle:type="IP"&gt;192.168.8.200-192.168.8.222&lt;/throttle:ID&gt;
                                &lt;wsp:ExactlyOne&gt;
                                    &lt;wsp:All&gt;
                                        &lt;throttle:MaximumCount&gt;8&lt;/throttle:MaximumCount&gt;
                                        &lt;throttle:UnitTime&gt;800000&lt;/throttle:UnitTime&gt;
                                        &lt;throttle:ProhibitTimePeriod wsp:Optional="true"&gt;10&lt;/throttle:ProhibitTimePeriod&gt;
                                    &lt;/wsp:All&gt;
                                    &lt;throttle:IsAllow&gt;true&lt;/throttle:IsAllow&gt;
                                &lt;/wsp:ExactlyOne&gt;
                            &lt;/wsp:All&gt;
                            &lt;wsp:All&gt;
                                &lt;throttle:ID throttle:type="IP"&gt;192.168.8.201&lt;/throttle:ID&gt;
                                &lt;wsp:ExactlyOne&gt;
                                    &lt;wsp:All&gt;
                                        &lt;throttle:MaximumCount&gt;200&lt;/throttle:MaximumCount&gt;
                                        &lt;throttle:UnitTime&gt;600000&lt;/throttle:UnitTime&gt;
                                        &lt;throttle:ProhibitTimePeriod wsp:Optional="true"&gt;&lt;/throttle:ProhibitTimePeriod&gt;
                                    &lt;/wsp:All&gt;
                                    &lt;throttle:IsAllow&gt;true&lt;/throttle:IsAllow&gt;
                                &lt;/wsp:ExactlyOne&gt;
                            &lt;/wsp:All&gt;
                            &lt;wsp:All&gt;
                                &lt;throttle:ID throttle:type="IP"&gt;192.168.8.198&lt;/throttle:ID&gt;
                                &lt;wsp:ExactlyOne&gt;
                                    &lt;wsp:All&gt;
                                        &lt;throttle:MaximumCount&gt;50&lt;/throttle:MaximumCount&gt;
                                        &lt;throttle:UnitTime&gt;500000&lt;/throttle:UnitTime&gt;
                                        &lt;throttle:ProhibitTimePeriod wsp:Optional="true"&gt;&lt;/throttle:ProhibitTimePeriod&gt;
                                    &lt;/wsp:All&gt;
                                    &lt;throttle:IsAllow&gt;true&lt;/throttle:IsAllow&gt;
                                &lt;/wsp:ExactlyOne&gt;
                            &lt;/wsp:All&gt;
                        &lt;/throttle:ThrottleAssertion&gt;
                    &lt;/wsp:Policy&gt;
                &lt;/policy&gt;
                &lt;onAccept&gt;
                    &lt;log level="custom"&gt;
                        &lt;property name="text" value="**Access Accept**"/&gt;
                    &lt;/log&gt;
                    &lt;send&gt;
                        &lt;endpoint&gt;
                            &lt;address uri="http://localhost:9000/soap/SimpleStockQuoteService"/&gt;
                        &lt;/endpoint&gt;
                    &lt;/send&gt;
                &lt;/onAccept&gt;
                &lt;onReject&gt;
                    &lt;log level="custom"&gt;
                        &lt;property name="text" value="**Access Denied**"/&gt;
                    &lt;/log&gt;
                    &lt;makefault&gt;
                        &lt;code value="tns:Receiver"
                              xmlns:tns="http://www.w3.org/2003/05/soap-envelope"/&gt;
                        &lt;reason value="**Access Denied**"/&gt;
                    &lt;/makefault&gt;
                    &lt;property name="RESPONSE" value="true"/&gt;
                    &lt;header name="To" action="remove"/&gt;
                    &lt;send/&gt;
                    &lt;drop/&gt;
                &lt;/onReject&gt;
            &lt;/throttle&gt;
        &lt;/in&gt;
        &lt;out&gt;
            &lt;throttle id="A"/&gt;
            &lt;send/&gt;
        &lt;/out&gt;
    &lt;/sequence&gt;
&lt;/definitions&gt;</pre>

<p><strong>Objective: Demonstrate the use of throttle mediator for
restricting request counts</strong> </p>

<p><strong>Prerequisites:</strong></p>

<p>Deploy the SimpleStockQuoteService in sample Axis2 server and start it on
port 9000.</p>

<p>Start Synapse with the sample configuration 371 (i.e. synapse -sample
371).</p>

<p></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 "UnitTime" tag. "ProhibitTimePeriod" 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>ant stockquote -Dsymbol=IBM -Dmode=quote -Daddurl=http://localhost:8080/</pre>

<p>For the first four requests you will get the quote prices for IBM as
follows.</p>
<pre>[java] Standard :: Stock price = $177.20143371883802</pre>

<p>You will receive the following response for the fifth request.</p>
<pre>[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>[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>

<h2><a name="Sample372">Sample 372: Use of both concurrency throttling and
request rate based throttling </a></h2>
<pre>&lt;!-- Use of both concurrency throttling and request rate based throttling --&gt;
&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

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

    &lt;sequence name="onAcceptSequence"&gt;
        &lt;log level="custom"&gt;
            &lt;property name="text" value="**Access Accept**"/&gt;
        &lt;/log&gt;
        &lt;send&gt;
            &lt;endpoint&gt;
                &lt;address uri="http://localhost:9000/soap/SimpleStockQuoteService"/&gt;
            &lt;/endpoint&gt;
        &lt;/send&gt;
    &lt;/sequence&gt;
    &lt;sequence name="onRejectSequence" trace="enable"&gt;
        &lt;log level="custom"&gt;
            &lt;property name="text" value="**Access Denied**"/&gt;
        &lt;/log&gt;
        &lt;makefault&gt;
            &lt;code value="tns:Receiver"
                  xmlns:tns="http://www.w3.org/2003/05/soap-envelope"/&gt;
            &lt;reason value="**Access Denied**"/&gt;
        &lt;/makefault&gt;
        &lt;property name="RESPONSE" value="true"/&gt;
        &lt;header name="To" action="remove"/&gt;
        &lt;send/&gt;
        &lt;drop/&gt;
    &lt;/sequence&gt;
    &lt;proxy name="StockQuoteProxy"&gt;
        &lt;target&gt;
             &lt;inSequence&gt;
                &lt;throttle onReject="onRejectSequence" onAccept="onAcceptSequence" id="A"&gt;
                    &lt;policy key="conf/sample/resources/policy/throttle_policy.xml"/&gt;
                &lt;/throttle&gt;
            &lt;/inSequence&gt;
            &lt;outSequence&gt;
                &lt;throttle id="A"/&gt;
                &lt;send/&gt;
            &lt;/outSequence&gt;
        &lt;/target&gt;
        &lt;publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/&gt;
    &lt;/proxy&gt;
&lt;/definitions&gt;</pre>

<div>
</div>

<p><strong>Objective: Use of both concurrency throttling and request rate
based throttling </strong></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 372 (i.e. synapse -sample
372).</p>

<p></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 is need to run 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>ant stockquote -Daddurl=http://localhost:8080/soap/StockQuoteProxy</pre>

<div>
<p>You will get results same as sample 371.if you run the load test, results
will be different due to affect of concurrency throttling.</p>
</div>

<h2><a name="Class">Extending the mediation in java (Class Mediator)</a></h2>

<p>Class mediator can be used to write your own custom mediation in Java and
you have access to the SynapseMessageContext and all the 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>

<h2><a name="Sample380">Sample 380: Writing your own custom mediation in
Java</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

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

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

&lt;/definitions&gt;</pre>

<p></p>

<p><strong>Objective: Demonstrate the use of Class mediator to extend the
mediation functionality</strong></p>

<p><strong>Prerequisites:</strong></p>

<p>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).</p>

<p>Start Synapse with the sample configuration 380 (i.e. synapse -sample
380)</p>

<p>Start the sample Axis2 server and deploy the SimpleStockQuoteService.</p>

<p></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 "discountFactor"</p>

<p>and "bonusFor" 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>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="10";

    private String bonusFor="10";

    private int bonusCount=0;

    public DiscountQuoteMediator(){}

    public boolean mediate(MessageContext mc) {

        String price= mc.getEnvelope().getBody().getFirstElement().getFirstElement().
                getFirstChildWithName(new QName("http://services.samples/xsd","last")).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("http://services.samples/xsd","last")).setText(discountedPrice);

        System.out.println("Quote value discounted.");
        System.out.println("Original price: " + price);
        System.out.println("Discounted price: " + 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 the 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 "bonusFor" property in the
configuration, a special discount is given.</p>

<p></p>

<p>Now run the client using the following command.</p>
<pre>ant stockquote -Dsymbol=IBM -Dmode=quote -Daddurl=http://localhost:8080</pre>

<p>You will see the below output in the client console with the discounted
quote value.</p>
<pre>[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>Quote value discounted.
Original price: 162.30945327447262
Discounted price: 138.77458254967408</pre>

<p></p>

<h2><a name="XQuery">Evaluating XQuery for mediation (XQuery
Mediator)</a></h2>

<h2><a name="Sample390">Sample 390: Introduction to the XQuery
mediator</a></h2>
<pre>    &lt;!-- Introduction to the XQuery mediator --&gt;
&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

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

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

&lt;/definitions&gt; </pre>

<p><b>Objective: Introduction transformation using XQuery mediator</b></p>

<p><b>Prerequisites</b>:Start the Synapse configuration numbered 390: i.e.
synapse -sample 390 </p>

<p>Start the Axis2 server and deploy the SimpleStockQuoteService if not
already done.</p>

<p></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></p>

<p>Execute the custom quote client as 'ant stockquote -Dmode=customquote ...'
</p>
<pre>ant stockquote -Daddurl=http://localhost:8080/soap/StockQuoteProxy -Dmode=customquote </pre>

<p></p>

<h2><a name="Sample391">Sample 391: How to use data from an external XML
document with in XQuery </a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

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

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

<p><b></b></p>

<p><b><strong>Objective: Demonstrate the use of XQuery mediator to import
external XML documents to the XQuery engine</strong></b></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 391 (i.e. synapse -sample
391).</p>

<p>In this sample, data from commission.xml document is used inside XQUERY
document. 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>ant stockquote -Daddurl=http://localhost:8080/soap/StockQuoteProxy</pre>

<h2><a name="Splitter">Splitting messages in to parts and process in parallel
(Iterate / Clone)</a></h2>

<h2><a name="Sample400">Sample 400: Message splitting and aggregating the
responses</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

    &lt;proxy name="SplitAggregateProxy"&gt;
        &lt;target&gt;
            &lt;inSequence&gt;
                &lt;iterate expression="//m0:getQuote/m0:request" preservePayload="true"
                         attachPath="//m0:getQuote"
                         xmlns:m0="http://services.samples/xsd"&gt;
                    &lt;target&gt;
                        &lt;sequence&gt;
                            &lt;send&gt;
                                &lt;endpoint&gt;
                                    &lt;address
                                        uri="http://localhost:9000/soap/SimpleStockQuoteService"/&gt;
                                &lt;/endpoint&gt;
                            &lt;/send&gt;
                        &lt;/sequence&gt;
                    &lt;/target&gt;
                &lt;/iterate&gt;
            &lt;/inSequence&gt;
            &lt;outSequence&gt;
                &lt;aggregate&gt;
                    &lt;onComplete expression="//m0:getQuoteResponse"
                                xmlns:m0="http://services.samples/xsd"&gt;
                        &lt;send/&gt;
                    &lt;/onComplete&gt;
                    &lt;invalidate&gt;
                        &lt;log level="full"/&gt;
                        &lt;drop/&gt;
                    &lt;/invalidate&gt;
                &lt;/aggregate&gt;
            &lt;/outSequence&gt;
        &lt;/target&gt;
    &lt;/proxy&gt;
&lt;/definitions&gt;</pre>

<p><b><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></b></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 400 (i.e. synapse -sample
400).</p>

<p>In this sample, the message sent to synapse has embedded with a number of
elements of the same type in one message. When synapse received this message
it will iterate through those elements and then sent to the specified
endpoint. When all the responses appear in to synapse then those messages
will be aggregated to form the resultant response and sent back to the
client.</p>

<p>Invoke the client as follows. </p>
<pre>ant stockquote -Daddurl=http://localhost:8080/soap/SplitAggregateProxy -Ditr=4</pre>
<!--<h2><a name="Aggregator">Aggregating messages and process in batch (Aggregate-->
<!--Mediator)</a></h2>-->
<!---->
<!--<h2><a name="Sample410">Sample 410: Message aggregation for batch-->
<!--processing</a></h2>-->
<!---->

<h2><a name="Cache">Caching the responses over the requests (Cache
Mediator)</a></h2>

<p>Cached 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 sence, because it is not
applicable for each and every service (for example services with dynamic
responses for a particular release)</p>

<h2><a name="Sample420">Sample 420: Simple cache implemented on synapse for
the actual service</a></h2>
<pre>&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;in&gt;
        &lt;cache timeout="20000" scope="per-host" collector="false"
               hashGenerator="org.wso2.caching.digest.DOMHASHGenerator"&gt;
            &lt;implementation type="memory" maxSize="100"/&gt;
        &lt;/cache&gt;
        &lt;send&gt;
            &lt;endpoint&gt;
                &lt;address uri="http://localhost:9000/soap/SimpleStockQuoteService"/&gt;
            &lt;/endpoint&gt;
        &lt;/send&gt;
    &lt;/in&gt;
    &lt;out&gt;
        &lt;cache collector="true"/&gt;
        &lt;send/&gt;
    &lt;/out&gt;
&lt;/definitions&gt;</pre>

<p><b><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></b></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 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 respond to the client with the cached response. In
case of a cache miss that particular message will be forwarded to the actual
service and cached 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>ant stockquote -Dtrpurl=http://localhost:8080/</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>

<h2><a name="Callout">Synchronize web service invocation with Callout
mediator </a></h2>

<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>

<h2><a name="Sample430">Sample 430: Simple Callout Mediator
for synchronizing web service invocation</a></h2>

<p>&#xa0;</p>
<pre>  
    &lt;!-- Simple callout  mediator --&gt;
&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;callout serviceURL="http://localhost:9000/soap/SimpleStockQuoteService"
             action="urn:getQuote"&gt;
        &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]"/&gt;
        &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]"/&gt;
    &lt;/callout&gt;
    &lt;property name="RESPONSE" value="true"/&gt;
    &lt;header name="To" action="remove"/&gt;
    &lt;send/&gt;
    &lt;drop/&gt;
&lt;/definitions&gt; </pre>

<div>
<p><strong>Objective:</strong> Demonstrate the use of the Callout mediator
for the synchronized web service invocation</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 430 (i.e. synapse -sample
430).</p>

<p>In this sample, Callout mediator does the direct service invocation to the
StockQuoteService using the client request, get the response and set 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>ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService -Dtrpurl=http://localhost:8080/</pre>
</div>
</body>
</html>
