This documentation is for WSO2 Enterprise Service Bus version 4.7.0 . View documentation for the latest release.

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Table of Contents

Introduction

This Sample demonstrates the use of dynamic keys with mediators. XSLT mediator is used as an example to demonstrate the differences between static and dynamic usage of keys.

Prerequisites

For a list of prerequisites, see the Prerequisites section in ESB Samples Setup.

Building the Sample

1. Start the ESB with sample 16 configuration using the instructions given in Starting Sample ESB Configurations.

2. A message should appear in the command or text Linux console stating the server started successfully.

3. The synapse configuration in the ESB used for message mediation in this sample is provided in <ESB_HOME>/repository/samples/synapse_sample_16.xml as shown below:

Code Block
languagehtml/xml
<definitions xmlns="http://ws.apache.org/ns/synapse">
    <!-- the SimpleURLRegistry allows access to a URL based registry (e.g. file:/// or http://) -->
    <registry provider="org.wso2.carbon.mediation.registry.ESBRegistry">
        <!-- the root property of the simple URL registry helps resolve a resource URL as root + key -->
        <parameter name="root">file:repository/samples/resources/</parameter>
        <!-- all resources loaded from the URL registry would be cached for this number of milli seconds -->
        <parameter name="cachableDuration">15000</parameter>
    </registry>
    <sequence name="main">
        <in>
            <!-- define the request processing XSLT resource as a property value -->
            <property name="symbol" value="transform/transform.xslt"/>
            <!-- {} denotes that this key is a dynamic one and it is not a static key -->
            <!-- use Xpath expression "get-property()" to evaluate real key from property -->
            <xslt key="{get-property('symbol')}"/>
        </in>
        <out>
            <!-- transform the standard response back into the custom format the client expects -->
            <!-- the key is looked up in the remote registry using a static key -->
            <xslt key="transform/transform_back.xslt"/>
        </out>
        <send/>
    </sequence>
</definitions>

4. Deploy the back-end service 'SimpleStockQuoteService' and start the Axis2 server using the instructions given in section Starting Sample Back-End Services.

5. Now you have a running ESB instance and a back-end service deployed. In the next section, we will send a message to the back-end service through the ESB using a sample client.

Executing the Sample

The first registry resource "transform/transform.xslt" is set as a property value. Inside the XSLT mediator, the local property value is looked up using the Xpath expression "get-property()". Likewise, any XPath expression can be enclosed inside "{ }" to denote that it is a dynamic key. Then the mediator evaluates the real value for that expression.

The second XSLT resource "transform/transform_back.xslt" is used simply as a static key as usual. It is not included inside "{ }" since the mediator directly uses the static value as the key.

The sample client used here is 'Stock Quote Client' which can operate in multiple modes. For instructions on this sample client and its operation modes, refer to Stock Quote Client

1. Run the custom quote client as 'ant stockquote -Dmode=customquote' from <ESB_HOME>/samples/axis2Client directory.

Code Block
languagebash
ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dmode=customquote

3. Try this sample with different local entries as the source with the correct target XPath values.

Excerpt
hiddentrue

Sample on dynamic and static registry keys