Sample 265: Switching from TCP to HTTP/S

<definitions xmlns="http://ws.apache.org/ns/synapse"> <proxy name="StockQuoteProxy" transports="tcp"> <target> <endpoint> <address uri="http://localhost:9000/services/SimpleStockQuoteService"/> </endpoint> <inSequence> <log level="full"/> <property name="OUT_ONLY" value="true"/> </inSequence> </target> </proxy> </definitions>

Objective

Demonstrate the ability of Synapse to receive raw TCP messages and send them to HTTP endpoints

Pre-requisites

  • Deploy the SimpleStockQuoteService in the sample Axis2 server and start Axis2
  • Enable the TCP transport receiver for Synapse (refer TCP transport setup guide).
  • Start Synapse using the configuration numbered 265 (repository/conf/sample/synapse_sample_265.xml)
    Unix/Linux: sh synapse.sh -sample 265
    Windows: synapse.bat -sample 265
  • Enable the TCP transport sender for the sample Axis2 client (refer TCP transport setup guide for details).

Executing the Client

This sample is similar to Sample 250. Only difference is instead of the JMS transport we will be using the TCP transport to receive messages. TCP is not an application layer protocol. Hence there are no application level headers available in the requests. Synapse has to simply read the XML content coming through the socket and dispatch it to the right proxy service based on the information available in the message payload itself. The TCP transport is capable of dispatching requests based on addressing headers or the first element in the SOAP body. In this sample, we will get the sample client to send WS-Addressing headers in the request. Therefore the dispatching will take place based on the addressing header values.

Invoke the stockquote client using the following command. Note the TCP URL in the command.

ant stockquote -Daddurl=tcp://localhost:6060/services/StockQuoteProxy -Dmode=placeorder

The TCP transport will receive the message and hand it over to the mediation engine. Synapse will dispatch the request to the StockQuoteProxy service based on the addressing header values.

When the proxy service forwards the message to the sample Axis2 server over HTTP, sample server will print the following entry to confirm that the request has been received.

Thu May 20 12:25:01 IST 2010 samples.services.SimpleStockQuoteService :: Accepted order #1 for : 17621 stocks of IBM at $ 73.48068475255796

Back to Catalog