1. Deploy the SimpleStockQuoteService in sample Axis2 server and start it on port 9000.
goto wso2esb-4.7.0/samples/axis2Client/SimpleStockQuoteService/
Then run ant command to build sample(type ant)
Start axis2 server by using command sh axis2server.sh
(wso2esb-4.7.0/samples/axis2Server)
2. Start WSO2 ESB and add following proxy service configuration from source view.
<proxy name="JSONProxy" transports="http https">
<target>
<endpoint>
<address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
</endpoint>
<inSequence>
<log level="full"/>
<xslt key="in_transform"/>
<property name="messageType" scope="axis2" value="text/xml"/>
</inSequence>
<outSequence>
<log level="full"/>
<xslt key="out_transform"/>
<property name="messageType" scope="axis2" value="application/json"/>
<send/>
</outSequence>
</target>
</proxy>
<localEntry key="in_transform">
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fn="http://www.w3.org/2005/02/xpath-functions"
xmlns:m0="http://services.samples" version="2.0" exclude-result-prefixes="m0 fn">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="*">
<xsl:element name="{local-name()}" namespace="http://services.samples">
<xsl:copy-of select="attribute::*"/>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
</localEntry>
<localEntry key="out_transform">
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" version="1.0" encoding="UTF-8"/>
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
</localEntry>
3. Invoke created JSON proxy by using following request
end point ur>l http://localhost:8280/services/JSONProxy
payload> {"getQuote":{"request":{"symbol":"IBM"}}}
Header> Content-Type: application/json
Sample curl request
curl -v -H "Content-Type: application/json" POST -d '{"getQuote":{"request":{"symbol":"IBM"}}}' http://localhost:8280/services/JSONProxy
Then you will recieve JSON response similar to
{"getQuoteResponse":{"return":{"change":"4.037527807194175","earnings":"-8.090117195350409","high":"70.45626821525283","last":
"67.1998913871881","lastTradeTimestamp":"Wed Oct 16 14:39:16 IST 2013","low":"68.94581289774287","marketCap":"-5387372.221669148","name":"IBM Company","open":"-66.52524061422466","peRatio":"23.47679801684674","percentageChange":
"5.438572840664724","prevClose":"74.23873735780825","symbol":"IBM","volume":"18254"}}}
"67.1998913871881","lastTradeTimestamp":"Wed Oct 16 14:39:16 IST 2013","low":"68.94581289774287","marketCap":"-5387372.221669148","name":"IBM Company","open":"-66.52524061422466","peRatio":"23.47679801684674","percentageChange":
"5.438572840664724","prevClose":"74.23873735780825","symbol":"IBM","volume":"18254"}}}
Here what happen is
Client > sending json request > JSON proxy in sequence -convert message to xml > send to actual back end server > JSON proxy in sequence -convert xml response to JSON > Client will receive JSON response
JSON client will send a stockquote request to ESB using the JSON content interchange format. Synapse will transform it into a SOAP request and forward to the Axis2 server. The SOAP response from the Axis2 server will be converted into a JSON message and sent back to the JSON client.
No comments:
Post a Comment