This site contains the documentation that is relevant to older WSO2 product versions and offerings.
For the latest WSO2 documentation, visit https://wso2.com/documentation/.

Lesson Three: Mediating Services

The ESB sends messages to services at designated endpoints. A proxy service acts as a virtual front end to a service, allowing you to intercept and mediate messages destined for that service. This service mediation can include adding WS-Security, exposing the message on a different transport, transforming the message, and more. It can mediate the messages before they are delivered to the actual endpoint, and it can mediate the response messages before they are sent back to the client.

When a client sends a request to a service at a specific endpoint, the ESB uses the proxy service for that service to perform the service mediation. The most common service mediation is to process the message and send it to the actual service, which is usually running on a different computer. However, it is not necessary to always send the message to the actual service. You can list any combination of tasks to be performed on the messages received by the proxy service and could terminate the flow or send a message back to the client without sending it to the actual service.

Let's explore a simple proxy service scenario that illustrates service mediation. This lesson walks you through the following tasks:

Configure the sample

In this task, you create the proxy service and endpoint that will be used to connect to the service.

To configure the sample:

  1. On the Main tab in the Management Console, click Proxy Service.
    There are several templates available for creating a proxy service.
  2. Click Custom Proxy.
    The proxy service creation wizard appears.
    custom proxy service setup
  3. For the proxy service name, enter "StockQuoteProxy".
  4. In the Publishing WSDL drop-down list, select Specify Source URL, enter the URL of the WSDL as file:repository/samples/resources/proxy/sample_proxy_1.wsdl, and then click Test URI to validate the path.
    In the future, you can determine the WSDL of a running service using the ?wsdl operation.
    Publish WSDL
  5. Select the transports needed to expose the proxy service in the Transport Settings panel at the bottom of the page. For this example, leave the defaults set to make this proxy service available on both HTTP and HTTPS.
    Transport settings
    Note that you can also add service parameters to the proxy service. When the ESB starts, it initiates all proxy services that may need to fetch WSDLs associated with proxy services. If the ESB cannot locate those WSDLs during startup, it ignores them and continues.
  6. Click Next.
    You will now add a target endpoint to handle request messages.
  7. Under Define Endpoint, click Define Inline, and then click the Create button that appears.In sequence and endpoint options
  8. Click Address Endpoint.
    This will allow us to configure the endpoint by typing the URL of the service.
    Address endpoint
  9. Type the EPR of the target endpoint in the Address field as http://localhost:9000/services/SimpleStockQuoteService, leave the other fields unchanged, and click Save to add the endpoint to the proxy service.
    Configure address endpoint
  10. Back in the Step 2 screen, leave the In sequence empty and click Next.
    You will now add an Out sequence that will send the response messages back to the client.
  11. Under Define Out Sequence, click Define Inline, and then click the Create button that appears.
    define out sequence
  12. In the sequence editor, add the send mediator by clicking Add Child -> Core -> Send.
    Sequence editor
  13. Click Save, and then click Finish to save and quit the wizard.

The newly created proxy service now appears in the "deployed services" list. You can click its name to view its dashboard.

Proxy service dashboard

Click Enable Statistics so that you can collect statistics for this proxy service and view them in the next lesson.

You have finished configuring the sample and are ready to test the mediation.

Start the server

You already built and deployed the SimpleStockQuote service, so simply start the server by switching to the <PRODUCT_HOME>/samples/axis2Server directory and running one of the following commands:

  • Linux / Unix: ./axis2server.sh
  • Windows: axis2server.bat

Run the client

Now that the server is running, let's run the client and send a request to the service. Go to the <PRODUCT_HOME>/samples/axis2Clients directory and type the following command:

ant stockquote -Dtrpurl=http://localhost:8280/services/StockQuoteProxy -Dmode=quote -Dsymbol=IBM

This command sends a stock quote request to the provided transport endpoint (http://localhost:8280/services/StockQuoteProxy). The proxy service receives the message and uses the send mediator to forward it to the server. The response from the server is displayed in the console as follows:

Standard :: Stock price = $165.32687331383468

You have now learned how to create a proxy service that intercepts messages and uses mediators to manipulate the messages before sending them to the server. In the next lesson, you will learn how to monitor the mediation and the ESB.