Exposing Non-HTTP Services as RESTful APIs¶
This example demonstrates how the ESB Micro Integrator forwards messages to non-HTTP endpoints.
Synapse configuration¶
Following is a sample REST API configuration that we can used to implement this scenario. See the instructions on how to build and run this example.
<api xmlns="http://ws.apache.org/ns/synapse" name="EventDelayOrderAPI" context="/orderdelayAPI">
<resource methods="POST" url-mapping="/">
<inSequence>
<property name="REST_URL_POSTFIX" action="remove" scope="axis2"></property>
<send>
<endpoint>
<address uri=
"jms:/DelayOrderTopic?transport.jms.ConnectionFactoryJNDIName=TopicConnectionFactory&
java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&
java.naming.provider.url=tcp://localhost:61616&transport.jms.DestinationType=topic">
</address>
</endpoint>
</send>
</inSequence>
</resource>
</api>
When using a non-HTTP endpoint, such as a JMS endpoint, in the API definition, you must remove the REST_URL_POSTFIX
property to avoid any characters specified after the context (such as a trailing slash) in the request from being appended to the JMS endpoint.
Notice that we have specified the REST_URL_POSTFIX
property with the value set to "remove". When invoking this API, even if the request contains a trailing slash after the context (e.g., POST http://127.0.0.1:8290/orderdelayAPI/
instead of POST http://127.0.0.1:8290/orderdelayAPI
, the endpoint will be called correctly.
Build and run¶
Create the artifacts:
- Set up ESB Integration Studio.
- Create an integration project with an ESB Configs module and an Composite Exporter.
- Create the rest API with the configurations given above.
- Deploy the artifacts in your Micro Integrator.
Configure the ActiveMQ broker with your Micro Integrator.
Set up the back-end service:
- Download the back-end service
- Extract the downloaded zip file.
- Open a terminal, navigate to the
axis2Server/bin/
directory inside the extracted folder. -
Execute the following command to start the axis2server with the SimpleStockQuote back-end service:
sh axis2server.sh
axis2server.bat
Invoke the REST API with a POST message.
Top