<?xml version="1.0" encoding="ISO-8859-1" ?>
<!--
  ~  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.
  -->

<document>
    <properties>
        <title>Apache Synapse - Quick Start Guide</title>
    </properties>
    <body>
        <section name="Quick Start Guide">
            <p>
                Welcome to Apache Synapse quick start guide. This tutorial demonstrates two
                sample applications covering the fundamental usage scenarios of Synapse, namely
                message mediation and service mediation. It starts from the absolute beginning and
                walks you through a series of steps while giving a firm grasp on the Synapse
                messaging model.
            </p>
        </section>

        <section name="Pre-requisites">
            <p>
                You should have following pre-requisites installed on your system to
                follow this tutorial.
            </p>
            <ul>
                <li>
                    A Java runtime - JDK or JRE of version 1.6.x or higher
                    (1.6.x or 1.7.x is recommended. 1.8.x is not tested enough)
                </li>
                <li>
                    Apache Ant <a href="http://ant.apache.org">http://ant.apache.org</a>
                </li>
            </ul>
        </section>

        <section name="Installing Synapse">
            <p>
                Let's start by downloading Apache Synapse. Launch a web browser and navigate to
                the <a href="../download.html">Synapse Downloads</a> page. Download the binary distribution
                of the latest release. Binary distributions are available in standard zip
                format and Unix tar ball format.
            </p>
            <p>
                Once downloaded you can install Synapse by simply extracting the archive to
                a suitable location on your local disk. When extracted, a directory named
                synapse with the corresponding version number will be created. This directory
                houses all the libraries, configuration files, scripts and other artifacts
                used by the Synapse runtime. From now on we will refer to this directory as
                {SYNAPSE_HOME}. So for an example {SYNAPSE_HOME}/bin refers to the subdirectory
                named 'bin' which is generally available in the Synapse installation.
            </p>
        </section>

        <section name="Running the Axis2 Server">
            <p>
                Samples described in this tutorial involve routing messages to a Web Service
                through the Synapse ESB. In real world applications, these Web Services could be
                hosted in a web server in your organization, or practically anywhere in the
                Internet. In this tutorial we will be using a sample Web Service that ships with
                Synapse and we will deploy it in the sample Axis2 server that comes bundled with
                Synapse.
            </p>
            <p>
                To deploy the sample service in the Axis2 server, go to
                {SYNAPSE_HOME}/samples/axis2Server/src/SimpleStockQuoteService directory and run
                'ant'. You will see an output similar to the following as the service is built
                and deployed to the sample Axis2 server.
            </p>
            <div class="consoleOutput">user@domain:/opt/synapse-3.0.0/samples/axis2Server/src/SimpleStockQuoteService$ ant
Buildfile: build.xml

clean:

init:
[mkdir] Created dir: /opt/synapse-3.0.0/samples/axis2Server/src/SimpleStockQuoteService/temp
[mkdir] Created dir: /opt/synapse-3.0.0/samples/axis2Server/src/SimpleStockQuoteService/temp/classes
[mkdir] Created dir: /opt/synapse-3.0.0/samples/axis2Server/repository/services

compile-all:
[javac] Compiling 9 source files to /opt/synapse-3.0.0/samples/axis2Server/src/SimpleStockQuoteService/temp/classes

build-service:
[mkdir] Created dir: /opt/synapse-3.0.0/samples/axis2Server/src/SimpleStockQuoteService/temp/SimpleStockQuote
[mkdir] Created dir: /opt/synapse-3.0.0/samples/axis2Server/src/SimpleStockQuoteService/temp/SimpleStockQuote/META-INF
[copy] Copying 1 file to /opt/synapse-3.0.0/samples/axis2Server/src/SimpleStockQuoteService/temp/SimpleStockQuote/META-INF
[copy] Copying 9 files to /opt/synapse-3.0.0/samples/axis2Server/src/SimpleStockQuoteService/temp/SimpleStockQuote
[jar] Building jar: /opt/synapse-3.0.0/samples/axis2Server/repository/services/SimpleStockQuoteService.aar

BUILD SUCCESSFUL
Total time: 1 second</div>
            <p>
                Now go to {SYNAPSE_HOME}/samples/axis2Server directory and start the sample server
                by executing the following command.
            </p>
            <div class="command">
                Linux / Unix: . axis2server.sh<br/>
                Windows: axis2server.bat                
            </div>
            <p>
                This will start the Axis2 server on HTTP port 9000. You can see the WSDL of the
                sample service by launching your web browser and navigating to the URL
                http://localhost:9000/services/SimpleStockQuoteService?wsdl.
            </p>            
        </section>

        <section name="Message Mediation">
            <p>
                Now we are all set to try our first scenario with Synapse. We will be starting
                Synapse using the sample configuration found in synapse_sample_0.xml file which
                resides in {SYNAPSE_HOME}/repository/conf/sample directory. This configuration
                enables Synapse to log all the messages passing through the service bus:
            </p>
            <div class="xmlConf">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
    &lt;sequence name="main"&gt;
        &lt;log level="full"/&gt;
        &lt;send/&gt;
    &lt;/sequence&gt;
&lt;/definitions&gt;</div>
            <p>
                To start the ESB with the above configuration go the {SYNAPSE_HOME}/bin directory
                and execute the following command.
            </p>
            <div class="command">
                Linux / Unix: . synapse.sh -sample 0<br/>
                Windows: synapse.bat -sample 0                
            </div>
            <p>
                Following messages will be displayed on the console as Synapse boots up with the
                above configuration.
            </p>
            <div class="consoleOutput">Starting Synapse/Java ...
Using SYNAPSE_HOME:    /opt/synapse-3.0.0
Using JAVA_HOME:       /opt/jdk1.7.0_79
Using SYNAPSE_XML:     /opt/synapse-3.0.0/repository/conf/sample/synapse_sample_0.xml
2016-12-28 10:38:00,456 [-] [main]  INFO SynapseServer Starting Apache Synapse...
2016-12-28 10:38:00,476 [-] [main]  INFO SynapseControllerFactory Using Synapse home : /opt/synapse-3.0.0
2016-12-28 10:38:00,476 [-] [main]  INFO SynapseControllerFactory Using Axis2 repository : /opt/synapse-3.0.0/repository
2016-12-28 10:38:00,476 [-] [main]  INFO SynapseControllerFactory Using axis2.xml location : /opt/synapse-3.0.0/repository/conf/axis2.xml
2016-12-28 10:38:00,476 [-] [main]  INFO SynapseControllerFactory Using synapse.xml location : /opt/synapse-3.0.0/repository/conf/sample/synapse_sample_0.xml
2016-12-28 10:38:00,476 [-] [main]  INFO SynapseControllerFactory Using server name : localhost
2016-12-28 10:38:00,493 [-] [main]  INFO SynapseControllerFactory The timeout handler will run every : 15s
2016-12-28 10:38:00,566 [-] [main]  INFO Axis2SynapseController Initializing Synapse at : Wed Dec 28 10:38:00 IST 2016
2016-12-28 10:38:01,140 [-] [main]  INFO PassThroughHttpSSLSender Loading Identity Keystore from : lib/identity.jks
2016-12-28 10:38:01,174 [-] [main]  INFO PassThroughHttpSSLSender Loading Trust Keystore from : lib/trust.jks
2016-12-28 10:38:01,242 [-] [main]  INFO PassThroughHttpSSLSender Pass-through HTTPS sender started...
2016-12-28 10:38:01,243 [-] [main]  INFO PassThroughHttpSender Pass-through HTTP sender started...
2016-12-28 10:38:01,249 [-] [main]  INFO JMSSender JMS Sender started
2016-12-28 10:38:01,250 [-] [main]  INFO JMSSender JMS Transport Sender initialized...
2016-12-28 10:38:01,251 [-] [main]  INFO VFSTransportSender VFS Sender started
2016-12-28 10:38:01,428 [-] [main]  INFO PassThroughHttpSSLListener Loading Identity Keystore from : lib/identity.jks
2016-12-28 10:38:01,429 [-] [main]  INFO PassThroughHttpSSLListener Loading Trust Keystore from : lib/trust.jks
2016-12-28 10:38:01,443 [-] [main]  INFO Axis2SynapseController Loading mediator extensions...
2016-12-28 10:38:01,451 [-] [main]  INFO XMLConfigurationBuilder Generating the Synapse configuration model by parsing the XML configuration
2016-12-28 10:38:01,506 [-] [main]  INFO SynapseConfigurationBuilder Loaded Synapse configuration from : /opt/synapse-3.0.0/repository/conf/sample/synapse_sample_0.xml
2016-12-28 10:38:01,542 [-] [main]  INFO Axis2SynapseController Deploying the Synapse service...
2016-12-28 10:38:01,563 [-] [main]  INFO Axis2SynapseController Deploying Proxy services...
2016-12-28 10:38:01,563 [-] [main]  INFO Axis2SynapseController Deploying EventSources...
2016-12-28 10:38:01,584 [-] [main]  INFO PassThroughHttpSSLListener Starting pass-through HTTPS listener...
2016-12-28 10:38:01,601 [-] [main]  INFO PassThroughHttpSSLListener Pass-through HTTPS listener started on port: 8243
2016-12-28 10:38:01,601 [-] [main]  INFO PassThroughHttpListener Starting pass-through HTTP listener...
2016-12-28 10:38:01,603 [-] [main]  INFO PassThroughHttpListener Pass-through HTTP listener started on port: 8280
2016-12-28 10:38:01,603 [-] [main]  INFO Axis2SynapseController Management using JMX available via: service:jmx:rmi:///jndi/rmi://localhost:1099/synapse
2016-12-28 10:38:01,606 [-] [main]  INFO TimeoutHandler This engine will expire all callbacks after : 180 seconds, irrespective of the timeout action, after the specified or optional timeout
2016-12-28 10:38:01,607 [-] [main]  INFO ServerManager Server ready for processing...
2016-12-28 10:38:01,608 [-] [main]  INFO SynapseServer Apache Synapse started successfully</div>
            <p>
                Note that by default Synapse listens for HTTP requests on port 8280.
            </p>
            <subsection name="Executing the Sample Client">
                <p>
                    Now we have a Web Service hosted in Axis2 and a Synapse ESB instance which
                    is configured to log and route messages. All that is left is to send some requests
                    to Synapse and see the magic happen. Synapse comes bundled with a sample
                    Web Service client that can be used to send different kinds of requests. Go to
                    {SYNAPSE_HOME}/samples/axis2Client directory and execute the following command
                    to send a request to Synapse.
                </p>
                <div class="command">ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280 -Dmode=quote -Dsymbol=IBM</div>
                <p>
                    You should get the following output on the conosle.
                </p>
                <div class="consoleOutput">Buildfile: build.xml

init:
    [mkdir] Created dir: /opt/synapse-3.0.0/samples/axis2Client/target/classes

compile:
    [javac] Compiling 22 source files to /opt/synapse-3.0.0/samples/axis2Client/target/classes
    [javac] Note: /opt/synapse-3.0.0/samples/axis2Client/src/samples/userguide/PWCallback.java uses or overrides a deprecated API.
    [javac] Note: Recompile with -Xlint:deprecation for details.
    [javac] Note: /opt/synapse-3.0.0/samples/axis2Client/src/samples/userguide/LoadbalanceFailoverClient.java uses unchecked or unsafe operations.
    [javac] Note: Recompile with -Xlint:unchecked for details.

stockquote:
     [java] 2010-11-26 01:35:16,485 [-] [main]  INFO MailTransportSender MAILTO Sender started
     [java] 2010-11-26 01:35:16,496 [-] [main]  INFO JMSSender JMS Sender started
     [java] 2010-11-26 01:35:16,497 [-] [main]  INFO JMSSender JMS Transport Sender initialized...
     [java] Standard :: Stock price = $99.14593325984416

BUILD SUCCESSFUL
Total time: 5 seconds</div>
                <p>
                    This sends a stock quote request for the symbol 'IBM' with the transport URL set
                    to http://localhost:8280 (Synapse) and the WS-Addressing EPR set to
                    http://localhost:9000/services/SimpleStockQuoteService (Axis2). Synapse first
                    logs the message and then forwards it to the URL given in the WS-Addressing
                    headers. The actual message sent by the client is as follows.
                </p>
                <div class="consoleOutput">POST / HTTP/1.1
Content-Type: text/xml; charset=UTF-8
SOAPAction: "urn:getQuote"
User-Agent: Axis2
Host: 127.0.0.1
Transfer-Encoding: chunked

218
&lt;?xml version='1.0' encoding='UTF-8'?&gt;
   &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/services/SimpleStockQuoteService&lt;/wsa:To&gt;
         &lt;wsa:MessageID&gt;urn:uuid:D538B21E30B32BB8291177589283717&lt;/wsa:MessageID&gt;
         &lt;wsa:Action&gt;urn:getQuote&lt;/wsa:Action&gt;
      &lt;/soapenv:Header&gt;
      &lt;soapenv:Body&gt;
         &lt;m0:getQuote xmlns:m0="http://services.samples"&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;0</div>
                <p>
                    Now take a look at the console running Synapse. You will see that all the
                    details of the mediation are logged along with all the SOAP messages
                    passed through Synapse. If you execute Synapse in debug mode by editing
                    the lib/log4j.properties file and setting "log4j.category.org.apache.synapse"
                    as "DEBUG" instead of INFO, you will see even more information as follows after
                    a restart and on replay of the above scenario.
                </p>
                <div class="consoleOutput"><![CDATA[2012-09-18 09:46:57,909 [-] [HttpServerWorker-2] DEBUG SynapseMessageReceiver Synapse received a new message for message mediation...
2012-09-18 09:46:57,909 [-] [HttpServerWorker-2] DEBUG SynapseMessageReceiver Received To: http://localhost:9000/services/SimpleStockQuoteService
2012-09-18 09:46:57,909 [-] [HttpServerWorker-2] DEBUG SynapseMessageReceiver SOAPAction: urn:getQuote
2012-09-18 09:46:57,909 [-] [HttpServerWorker-2] DEBUG SynapseMessageReceiver WSA-Action: urn:getQuote
2012-09-18 09:46:57,909 [-] [HttpServerWorker-2] DEBUG Axis2SynapseEnvironment Injecting MessageContext
2012-09-18 09:46:57,909 [-] [HttpServerWorker-2] DEBUG Axis2SynapseEnvironment Using Main Sequence for injected message
2012-09-18 09:46:57,909 [-] [HttpServerWorker-2] DEBUG SequenceMediator Start : Sequence <main>
2012-09-18 09:46:57,909 [-] [HttpServerWorker-2] DEBUG SequenceMediator Sequence <SequenceMediator> :: mediate()
2012-09-18 09:46:57,909 [-] [HttpServerWorker-2] DEBUG LogMediator Start : Log mediator
2012-09-18 09:46:57,910 [-] [HttpServerWorker-2]  INFO LogMediator To: http://localhost:9000/services/SimpleStockQuoteService, WSAction: urn:getQuote, SOAPAction: urn:getQuote, ReplyTo: http://www.w3.org/2005/08/addressing/anonymous, MessageID: urn:uuid:754cc296-ff58-4875-a999-3a33ec94c8a1, Direction: request, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"><wsa:To>http://localhost:9000/services/SimpleStockQuoteService</wsa:To><wsa:MessageID>urn:uuid:754cc296-ff58-4875-a999-3a33ec94c8a1</wsa:MessageID><wsa:Action>urn:getQuote</wsa:Action></soapenv:Header><soapenv:Body><m0:getQuote xmlns:m0="http://services.samples"><m0:request><m0:symbol>IBM</m0:symbol></m0:request></m0:getQuote></soapenv:Body></soapenv:Envelope>
2012-09-18 09:46:57,910 [-] [HttpServerWorker-2] DEBUG LogMediator End : Log mediator
2012-09-18 09:46:57,910 [-] [HttpServerWorker-2] DEBUG SendMediator Start : Send mediator
2012-09-18 09:46:57,910 [-] [HttpServerWorker-2] DEBUG SendMediator Sending request message using implicit message properties..
Sending To: http://localhost:9000/services/SimpleStockQuoteService
SOAPAction: urn:getQuote
2012-09-18 09:46:57,910 [-] [HttpServerWorker-2] DEBUG Axis2FlexibleMEPClient Sending [add = false] [sec = false] [rm = false] [to=Address: http://localhost:9000/services/SimpleStockQuoteService]
2012-09-18 09:46:57,910 [-] [HttpServerWorker-2] DEBUG Axis2FlexibleMEPClient Message [Original Request Message ID : urn:uuid:754cc296-ff58-4875-a999-3a33ec94c8a1] [New Cloned Request Message ID : urn:uuid:835c68a7-0645-496d-9acc-1d84a03ccb09]
2012-09-18 09:46:57,911 [-] [HttpServerWorker-2] DEBUG SynapseCallbackReceiver Callback added. Total callbacks waiting for : 1
2012-09-18 09:46:57,912 [-] [HttpServerWorker-2] DEBUG SendMediator End : Send mediator
2012-09-18 09:46:57,912 [-] [HttpServerWorker-2] DEBUG SequenceMediator End : Sequence <main>
2012-09-18 09:46:58,035 [-] [HttpClientWorker-2] DEBUG SynapseCallbackReceiver Callback removed for request message id : urn:uuid:835c68a7-0645-496d-9acc-1d84a03ccb09. Pending callbacks count : 0
2012-09-18 09:46:58,035 [-] [HttpClientWorker-2] DEBUG SynapseCallbackReceiver Synapse received an asynchronous response message
2012-09-18 09:46:58,035 [-] [HttpClientWorker-2] DEBUG SynapseCallbackReceiver Received To: null
2012-09-18 09:46:58,035 [-] [HttpClientWorker-2] DEBUG SynapseCallbackReceiver SOAPAction: 
2012-09-18 09:46:58,035 [-] [HttpClientWorker-2] DEBUG SynapseCallbackReceiver WSA-Action: 
2012-09-18 09:46:58,036 [-] [HttpClientWorker-2] DEBUG SynapseCallbackReceiver Body : 
<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ns:getQuoteResponse xmlns:ns="http://services.samples"><ns:return xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns:GetQuoteResponse"><ns:change>4.158253518011668</ns:change><ns:earnings>13.000214652478554</ns:earnings><ns:high>176.07121446241788</ns:high><ns:last>171.44223855674258</ns:last><ns:lastTradeTimestamp>Tue Sep 18 09:46:57 CEST 2012</ns:lastTradeTimestamp><ns:low>-169.3791832231285</ns:low><ns:marketCap>3.844340450887613E7</ns:marketCap><ns:name>IBM Company</ns:name><ns:open>-167.9098655007073</ns:open><ns:peRatio>-17.815829214870217</ns:peRatio><ns:percentageChange>-2.4400099237243</ns:percentageChange><ns:prevClose>-170.41953303471544</ns:prevClose><ns:symbol>IBM</ns:symbol><ns:volume>16090</ns:volume></ns:return></ns:getQuoteResponse></soapenv:Body></soapenv:Envelope>
2012-09-18 09:46:58,036 [-] [HttpClientWorker-2] DEBUG Axis2SynapseEnvironment Injecting MessageContext
2012-09-18 09:46:58,036 [-] [HttpClientWorker-2] DEBUG Axis2SynapseEnvironment Using Main Sequence for injected message
2012-09-18 09:46:58,036 [-] [HttpClientWorker-2] DEBUG SequenceMediator Start : Sequence <main>
2012-09-18 09:46:58,036 [-] [HttpClientWorker-2] DEBUG SequenceMediator Sequence <SequenceMediator> :: mediate()
2012-09-18 09:46:58,036 [-] [HttpClientWorker-2] DEBUG LogMediator Start : Log mediator
2012-09-18 09:46:58,037 [-] [HttpClientWorker-2]  INFO LogMediator To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , ReplyTo: http://www.w3.org/2005/08/addressing/anonymous, MessageID: urn:uuid:835c68a7-0645-496d-9acc-1d84a03ccb09, Direction: response, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ns:getQuoteResponse xmlns:ns="http://services.samples"><ns:return xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns:GetQuoteResponse"><ns:change>4.158253518011668</ns:change><ns:earnings>13.000214652478554</ns:earnings><ns:high>176.07121446241788</ns:high><ns:last>171.44223855674258</ns:last><ns:lastTradeTimestamp>Tue Sep 18 09:46:57 CEST 2012</ns:lastTradeTimestamp><ns:low>-169.3791832231285</ns:low><ns:marketCap>3.844340450887613E7</ns:marketCap><ns:name>IBM Company</ns:name><ns:open>-167.9098655007073</ns:open><ns:peRatio>-17.815829214870217</ns:peRatio><ns:percentageChange>-2.4400099237243</ns:percentageChange><ns:prevClose>-170.41953303471544</ns:prevClose><ns:symbol>IBM</ns:symbol><ns:volume>16090</ns:volume></ns:return></ns:getQuoteResponse></soapenv:Body></soapenv:Envelope>
2012-09-18 09:46:58,037 [-] [HttpClientWorker-2] DEBUG LogMediator End : Log mediator
2012-09-18 09:46:58,037 [-] [HttpClientWorker-2] DEBUG SendMediator Start : Send mediator
2012-09-18 09:46:58,037 [-] [HttpClientWorker-2] DEBUG SendMediator Sending response message using implicit message properties..
Sending To: http://www.w3.org/2005/08/addressing/anonymous
SOAPAction: 
2012-09-18 09:46:58,038 [-] [HttpClientWorker-2] DEBUG SendMediator End : Send mediator
2012-09-18 09:46:58,038 [-] [HttpClientWorker-2] DEBUG SequenceMediator End : Sequence <main>]]></div>
                <p>
                    And with that you have successfully completed the first part of this guide. Now let's
                    look at the next scenario, service mediation with proxy services.
                </p>
            </subsection>
        </section>
        <section name="Service Mediation (Proxy Services)">
            <p>
                As the name implies, a proxy service acts as an intermediary service hosted in
                Synapse, and typically fronts an existing service endpoint. A proxy service can be
                created and exposed on a different transport, schema, WSDL, or QoS setup (such
                as WS-Security, WS-Reliable Messaging) than the real service. Proxy services
                are capable of mediating requests before they are delivered to the actual
                endpoint. Similarly responses from the actual service can be mediated before
                they are sent back to the client.
            </p>
            <p>
                Clients can send proxy service requests directly to Synapse. From the client's
                perspective, proxy services are simply Web Services hosted on Synapse. They can
                append the '?wsdl' suffix to the proxy service endpoints to get the WSDLs of these
                virtual services. But in the Synapse configuration, service requests can be handled
                in anyway you like. Most obvious thing would be to do some processing on the
                message and send it to the actual service, which could be running on a different host.
                But it is not necessary to always send the messages to an actual service. You may
                list any combination of tasks to be performed on the messages received by
                the proxy service and terminate the flow or send some response back to the
                client even without sending it to any service.
            </p>
            <p>
                Let's explore a simple proxy services scenario step-by-step to get a better feeling.
                As you have downloaded and installed Synapse in the previous section, now you
                just run the scenario straightaway. This scenario also requires the same stock
                quote service we used in the previous example. So have it deployed in Axis2 and make
                sure Axis2 server is up and running.
            </p>
            <p>
                We are going to start Synapse with a configuration which contains a proxy service.
                The configuration in synapse_sample_150.xml file in repository/conf/sample directory
                matches well with the scope of this tutorial.
            </p>
            <div class="xmlConf">&lt;definitions xmlns="http://synapse.apache.org/ns/2010/04/configuraiton"&gt;
    &lt;proxy name="StockQuoteProxy"&gt;
        &lt;target&gt;
            &lt;endpoint&gt;
                &lt;address uri="http://localhost:9000/services/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;</div>
            <p>
                The above configuration exposes a proxy service named StockQuoteProxy
                and specifies an endpoint
                (http://localhost:9000/services/SimpleStockQuoteService) as the target for the
                proxy service. Therefore, messages coming to the proxy service will be
                directed to the address http://localhost:9000/services/SimpleStockQuoteService
                specified in the endpoint. There is also an out sequence for the proxy
                service, which will be executed for response messages. In the out sequence,
                we just send the messages back to the client. The publishWSDL tag
                specifies an WSDL to be published for this proxy service. Let's start
                Synapse with this sample configuration by running the below command from
                the {SYNAPSE_HOME}/bin directory.
            </p>
            <div class="command">
                Linux / Unix: . synapse.sh -sample 150<br/>
                Windows: synapse.bat -sample 150                
            </div>
            <p>
                Synapse will display a set of messages as it boots up just like in the previous
                section describing the start-up procedure. Before running the client, it
                is time to observe another feature of proxy services. That is displaying
                the published WSDL. Just open a web browser and point it to the URL
                http://localhost:8280/services/StockQuoteProxy?wsdl. You will see the
                sample_proxy_1.wsdl specified in the configuration but containing the
                correct EPRs for the service over HTTP/S.
            </p>
            <subsection name="Executing the Sample Client">
                <p>
                    Now we can invoke the proxy service by sending a request from our sample Axis2
                    client. Go to the {SYNAPSE_HOME}/samples/axis2Client directory and run the
                    following command.
                </p>
                <div class="command">ant stockquote -Dtrpurl=http://localhost:8280/services/StockQuoteProxy -Dmode=quote -Dsymbol=IBM</div>
                <p>
                    The above command sends a stock quote request directly to the provided
                    transport endpoint at http://localhost:8280/services/StockQuoteProxy. The
                    proxy service will forward the message to the Axis2 server and route the
                    response from Axis2 back to the client. You will see the response from the
                    server displayed on the console as follows:
                </p>
                <div class="consoleOutput">Standard :: Stock price = $165.32687331383468</div>
            </subsection>
            <subsection name="More on Proxy Services">
                <p>
                    Proxy services are among the most powerful functional components of Apache
                    Synapse. They can be used to perform transport switching, message format
                    switching and lot more. This quick start tutorial only covers the simple
                    usecases of proxy services. Please refer samples #150 and above in the
                    Synapse samples catalog, for in depth coverage on more advanced use cases.
                </p>                
            </subsection>
        </section>
        <section name="Conclusion">
            <p>
                This brings the Synapse quick start guide to an end. Now it is time to go
                deeper and discover the advanced features of Synapse. You can browse through
                the array of samples for your interested areas. If you have any issue regarding
                Synapse as a user, feel free write to the Synapse user mailing list
                (<a href="http://synapse.apache.org/mail-lists.html">http://synapse.apache.org/mail-lists.html</a>).
            </p>
        </section>
    </body>
</document>