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:
- On the Main tab in the Management Console, click Proxy Service.
There are several templates available for creating a proxy service. - Click Custom Proxy.
The proxy service creation wizard appears. - For the proxy service name, enter
StockQuoteProxy
. - 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. - 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.
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. - Click Next.
You will now add a target endpoint to handle request messages. - Under Define Endpoint, click Define Inline, and then click the Create button that appears.
- Click Address Endpoint.
This will allow us to configure the endpoint by typing the URL of the service. - 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. - 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. - Under Define Out Sequence, click Define Inline, and then click the Create button that appears.
- In the sequence editor, add the send mediator by clicking Add Child -> Core -> Send.
- Click Save, and then click Finish to save and quit the wizard.
The newly created proxy service now appears on the Deployed Services screen. You can click the service's name to view its 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.