<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6087794019829505601</id><updated>2011-12-15T14:43:47.875-08:00</updated><category term='articles'/><category term='Stratos'/><category term='NLP'/><category term='OSGi'/><category term='publications'/><category term='java'/><category term='JY'/><category term='Cloud Computing'/><category term='ESB'/><category term='C'/><category term='Synapse'/><category term='MBean'/><category term='FOSS'/><category term='WSF/Jython'/><category term='Windows'/><category term='open source'/><category term='Registry'/><category term='SOA'/><category term='RMI'/><category term='WSO2'/><category term='log4j'/><category term='People'/><category term='Videos'/><category term='Life'/><category term='Basketball'/><category term='pthread'/><category term='Carbon'/><category term='SUN'/><category term='GSoC'/><category term='JMX'/><category term='python'/><category term='Sri Lanka'/><category term='Linux'/><category term='Conference'/><category term='Networking'/><category term='Rampart'/><category term='Ubuntu'/><category term='LaTex'/><category term='Apache'/><category term='jython'/><category term='UCSC'/><category term='Axis2'/><category term='MPI'/><category term='Books'/><title type='text'>Heshan's Blog</title><subtitle type='html'>log.info("Heshan Suriyaarachchi's Thread Dump");</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default?start-index=101&amp;max-results=100'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>119</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-1809054693912099296</id><published>2011-07-28T01:36:00.000-07:00</published><updated>2011-07-28T02:28:59.185-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='Axis2'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Sample client for Axis2 XMPP transport</title><content type='html'>Following is a sample service client that demonstrates the use of Apache Axis2's XMPP transport.&lt;br /&gt;&lt;br /&gt;1) Add the following to your axis2.xml&lt;br /&gt;&lt;br /&gt;i) Register the tranport listener.&lt;br /&gt;&lt;pre class="brush:js"&gt;&amp;lt;transportReceiver name="xmpp" class="org.apache.axis2.transport.xmpp.XMPPListener"&amp;gt;&lt;br /&gt;  &amp;lt;!-- Account details for google talk --&amp;gt;&lt;br /&gt;  &amp;lt;parameter name="GoogleServer"&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="transport.xmpp.ServerUrl"&amp;gt;talk.google.com&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="transport.xmpp.ServerAccountUserName"&amp;gt;axis2.xmpp.account1&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="transport.xmpp.ServerAccountPassword"&amp;gt;apacheaxis2&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="transport.xmpp.ServerType"&amp;gt;transport.xmpp.ServerType.GoogleTalk&amp;lt;/parameter&amp;gt;&lt;br /&gt;  &amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/transportReceiver&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;ii) Register the transport sender.&lt;br /&gt;&lt;pre class="brush:js"&gt;&amp;lt;transportSender name="xmpp" class="org.apache.axis2.transport.xmpp.XMPPSender"&amp;gt;&lt;br /&gt;&amp;lt;/transportSender&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2) Sample service client.&lt;br /&gt;&lt;pre class="brush:js"&gt;import org.apache.axiom.om.OMAbstractFactory;&lt;br /&gt;import org.apache.axiom.om.OMElement;&lt;br /&gt;import org.apache.axiom.om.OMFactory;&lt;br /&gt;import org.apache.axiom.om.OMNamespace;&lt;br /&gt;import org.apache.axis2.addressing.EndpointReference;&lt;br /&gt;import org.apache.axis2.client.Options;&lt;br /&gt;import org.apache.axis2.client.ServiceClient;&lt;br /&gt;import org.apache.axis2.context.ConfigurationContext;&lt;br /&gt;import org.apache.axis2.context.ConfigurationContextFactory;&lt;br /&gt;import org.apache.axis2.transport.xmpp.util.XMPPConstants;&lt;br /&gt;import org.apache.axis2.util.XMLPrettyPrinter;&lt;br /&gt;&lt;br /&gt;public class XMPPSampleClient {&lt;br /&gt;   public static void main(String[] args) {&lt;br /&gt; invokeTimeService();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private static void invokeTimeService() {&lt;br /&gt; String endPointUrl = "xmpp://synapse.demo.0@gmail.com/" + "TimeService";&lt;br /&gt;&lt;br /&gt; EndpointReference targetEPR = new EndpointReference(endPointUrl);&lt;br /&gt; try {&lt;br /&gt;                       ConfigurationContext ctx =&lt;br /&gt;                            ConfigurationContextFactory.createConfigurationContextFromURIs(&lt;br /&gt;                                XMPPSampleClient.class.getResource("axis2.xml"), null);&lt;br /&gt;&lt;br /&gt;  OMElement payload = getPayload();&lt;br /&gt;  Options options = new Options();&lt;br /&gt;  options.setProperty(XMPPConstants.XMPP_SERVER_TYPE, XMPPConstants.XMPP_SERVER_TYPE_GOOGLETALK);&lt;br /&gt;  options.setProperty(XMPPConstants.XMPP_SERVER_URL, XMPPConstants.GOOGLETALK_URL);&lt;br /&gt;  options.setProperty(XMPPConstants.XMPP_SERVER_USERNAME, "synapse.demo.0");&lt;br /&gt;  options.setProperty(XMPPConstants.XMPP_SERVER_PASSWORD, "mailpassword");&lt;br /&gt;&lt;br /&gt;  options.setTo(targetEPR);&lt;br /&gt;  options.setAction("urn:getServerTime");&lt;br /&gt;  ServiceClient sender = new ServiceClient(ctx,null);&lt;br /&gt;&lt;br /&gt;  sender.setOptions(options);&lt;br /&gt;  OMElement result = sender.sendReceive(payload);&lt;br /&gt;  XMLPrettyPrinter.prettify(result, System.out);&lt;br /&gt; } catch (Exception e) {&lt;br /&gt;  e.printStackTrace();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private static OMElement getPayload() {&lt;br /&gt; OMFactory fac = OMAbstractFactory.getOMFactory();&lt;br /&gt; OMNamespace omNs = fac.createOMNamespace(&lt;br /&gt;   "http://example.xmpp.transports.axis2.org/example1", "example1");&lt;br /&gt;       return fac.createOMElement("getServerTime", omNs);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-1809054693912099296?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/1809054693912099296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=1809054693912099296' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/1809054693912099296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/1809054693912099296'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2011/07/sample-client-for-axis2-xmpp-transport.html' title='Sample client for Axis2 XMPP transport'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-8114203381383109546</id><published>2011-07-14T23:58:00.000-07:00</published><updated>2011-07-21T05:53:43.055-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><title type='text'>XSLT transformations with WSO2 ESB</title><content type='html'>Recently I did some performance comparison on a new mediator that I have developed for WSO2 ESB for XSLT transformations. &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;Following 6 scenarios were taken into consideration for this benchmark;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;1) SCENARIO-1 : Direct Service call to backend service (which is hosted at axis2 server) from the client.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;2) SCENARIO-2 : Service Call to the backend service through a Pass through proxy (Using message realy)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;3) SCENARIO-3 : Service call to the backend service through the XSLT transformation proxy (with xalan XSLT processor)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;3) SCENARIO-3 : Service call to the backend service through the XSLT transformation proxy (with xalan XSLT processor)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;4) SCENARIO-4 : Service call to the backend service through the XSLT transformation proxy (with saxon XSLT processor)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;5) SCENARIO-5 : Service call to the backend service through the XSLT transformation proxy (with saxon XSLT processor) - with patched XSLT mediator which is doing XML stream transformation (using message relay)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;6) SCENARIO-6 : Service call to the backend service through the XSLT transformation proxy (with saxon enterprise edition XSLT processor) - with patched XSLT mediator which is doing XML stream transformation (using message relay)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;Following are the configurations of the machines which were used in the performance benchmark. For more information refer the attached document named hardware-configuration-of-machines.txt&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;  &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;&lt;u&gt;&lt;b&gt;Hardware/Software configuration of the machines used&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;1)&lt;/span&gt; Configuration of the machine(32 bit) which was running the client (load testing tool used was java-bench):&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;OS : Debian GNU/Linux 6.0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;CPU : Intel(R) Pentium(R) 4 CPU 2.80GHz&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;RAM : 1 GB&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;2)&lt;/span&gt; Configuration of the machine(64 bit) which was running the axis2 server which is hosting the service:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;OS : Ubuntu 11.04&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;CPU : Genuine Intel(R) CPU T2400  @ 1.83GHz&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;RAM : 3 GB&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;3)&lt;/span&gt; Configuration of the machine(64 bit) which was running the WSO2 ESB:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;OS : Debian GNU/Linux 6.0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;CPU : Pentium(R) Dual-Core  CPU E5400  @ 2.70GHz&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;RAM : 4 GB&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;&lt;u&gt;&lt;b&gt;Results/Observation&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;The time per request were measured for the XSLT transformations with the ESB and calculated the latency numbers. The message sizes used were 5k, 10k, 50k, 100k, 200k, 300k, 400k, 500k. The time per request were measured for the number of requests 10000, 11000, 12000, 13000, 14000, 15000. During the benchmarking session, I got the numbers for xalan as well as saxon XSLT processors. Since the primary concern of this benchmark was on latency, the concurrency level used was one. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;i) Time per request &lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;           &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;table style="page-break-before: auto; page-break-after: auto;" width="674" cellpadding="7" cellspacing="0"&gt;  &lt;col width="63"&gt;  &lt;col width="60"&gt;  &lt;col width="98"&gt;  &lt;col width="92"&gt;  &lt;col width="73"&gt;  &lt;col width="94"&gt;  &lt;col width="93"&gt;  &lt;tbody&gt;&lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="63"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;Request    Size&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="60"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;Direct    request (ms)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="98"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;ESB    -Pass through(Message relay) - Time per request(ms)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="92"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;ESB    (xalan) – Time per request (ms)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="73"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;ESB    (saxon) – Time per request (ms)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="94"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;ESB    patched (saxon) -– Time per request (ms)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="93"&gt;    &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;ESB    Patched (Saxon EE)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;Timer    per request (ms)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="63"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;5k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="60"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;2.932&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="98"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;span&gt;&lt;span style="font-size:85%;"&gt;5.087    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;    &lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="92"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;11.458&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="73"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;9.899&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="94"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;7.486&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="93"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;7.413&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="63"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;10k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="60"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;4.564&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="98"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;span&gt;&lt;span style="font-size:85%;"&gt;6.332&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="92"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;16.73&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="73"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;15.387&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="94"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;11.145&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="93"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;10.473&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="63"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;50k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="60"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;17.881&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="98"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;20.984&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="92"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;46.328&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="73"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;42.481&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="94"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;40.834&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="93"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;34.598&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="63"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;100k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="60"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;34.691&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="98"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;37.339&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="92"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;83.554&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="73"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;79.325&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="94"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;71.151&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="93"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;62.992&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="63"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;200k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="60"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;67.66&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="98"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;70.771&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="92"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;155.233&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="73"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;146.885&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="94"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;128.672&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="93"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;119.886&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="63"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;300k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="60"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;100.661&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="98"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;103.945&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="92"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;233.79&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="73"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;213.84&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="94"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;186.985&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="93"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;177.184&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="63"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;400k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="60"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;133.125&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="98"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;137.898    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;    &lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="92"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;295.675&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="73"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;283.95&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="94"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;245.029&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="93"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;238.081&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="63"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;500k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="60"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;166.008&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="98"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;169.460&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="92"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;364.027&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="73"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;356.182&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="94"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;302.779&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="93"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="RIGHT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;297.676&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;span&gt;&lt;span style="font-size:85%;"&gt;           &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; line-height: 115%; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;a href="http://3.bp.blogspot.com/-qGOpy0ufnJU/TiANDPFwEnI/AAAAAAAAAJQ/nUP9kyNwBE0/s1600/1.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 202px;" src="http://3.bp.blogspot.com/-qGOpy0ufnJU/TiANDPFwEnI/AAAAAAAAAJQ/nUP9kyNwBE0/s400/1.png" alt="" id="BLOGGER_PHOTO_ID_5629513883454542450" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;ii) Latency&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;The latency was calculated by the following equation.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: italic; font-weight: bold; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;Latency  = (Time per request through ESB - Direct request)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;           &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;table style="page-break-before: auto; page-break-after: auto;" width="673" cellpadding="7" cellspacing="0"&gt;  &lt;col width="67"&gt;  &lt;col width="122"&gt;  &lt;col width="110"&gt;  &lt;col width="103"&gt;  &lt;col width="98"&gt;  &lt;col width="87"&gt;  &lt;tbody&gt;&lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="67"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;Request    Size&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="122"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;ESB(Message    relay)  latency (ms)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="110"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;ESB    (xalan) latency (ms)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="103"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;ESB    (saxon) latency (ms)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="98"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;ESB    patched (saxon) latency (ms)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="87"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;ESB    patched (saxon-EE)  latency (ms)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="67"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;5k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="122"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;2.155&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="110"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;8.526  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="103"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;6.967&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="98"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;4.554 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="87"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;4.481&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="67"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;10k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="122"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;1.768  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="110"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;12.166 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="103"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;10.823&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="98"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;6.581 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="87"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;5.909&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="67"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;50k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="122"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;3.103 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="110"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;28.447 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="103"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;24.6 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="98"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;22.953 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="87"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;16.717&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="67"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;100k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="122"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;2.648&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="110"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;48.863 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="103"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;44.634 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="98"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;36.46 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="87"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;28.301&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="67"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;200k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="122"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;3.111 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="110"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;87.573 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="103"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;79.225 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="98"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;61.012 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="87"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;52.226&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="67"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;300k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="122"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;3.284&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="110"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;133.129&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="103"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;113.179&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="98"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;86.324 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="87"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;76.523&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="67"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;400k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="122"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;4.773  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="110"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;162.55 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="103"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;150.825&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="98"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;111.904&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="87"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;104.956&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="67"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;500k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="122"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;3.452 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="110"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;198.019&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="103"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;190.174&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="98"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;136.771&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="87"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;131.668&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;span&gt;&lt;span style="font-size:85%;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt;&lt;a href="http://2.bp.blogspot.com/-Jb8zta98p7c/TiANTHFrv5I/AAAAAAAAAJY/67QjYfKh-7w/s1600/2.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 186px;" src="http://2.bp.blogspot.com/-Jb8zta98p7c/TiANTHFrv5I/AAAAAAAAAJY/67QjYfKh-7w/s400/2.png" alt="" id="BLOGGER_PHOTO_ID_5629514156184682386" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; line-height: 115%; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;iii) Overhead&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;The overhead percentage introduced by the ESB is calculated by the following equation. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: italic; font-weight: bold; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;ESB Overhead = (Time per request through ESB - Direct request time)/(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;Direct request time) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;* 100 %&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;           &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;table style="page-break-before: auto; page-break-after: auto;" width="673" cellpadding="7" cellspacing="0"&gt;  &lt;col width="58"&gt;  &lt;col width="90"&gt;  &lt;col width="121"&gt;  &lt;col width="111"&gt;  &lt;col width="110"&gt;  &lt;col width="97"&gt;  &lt;tbody&gt;&lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="58"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;Request    Size&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="90"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;ESB(Message    relay) overhead(%)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="121"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;ESB    (xalan) overhead percentage (%)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="111"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;ESB    (saxon) overhead percentage (%)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="110"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;ESB    patched (saxon) overhead percentage (%)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="97"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;ESB    patched (saxon-EE)  overhead percentage (%)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="58"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;5k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="90"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;73.49931787176&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="121"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;290.7912687585&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="111"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;237.619372442&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="110"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;155.3206002729&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="97"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;152.830832196453&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="58"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;10k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="90"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;38.737949167397&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="121"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;266.5644171779&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="111"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;237.1384750219&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="110"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;144.1936897458&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="97"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;129.469763365469&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="58"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;50k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="90"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;17.353615569599&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="121"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;159.0906548851&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="111"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;137.5761981992&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="110"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;128.3653039539&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="97"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;93.490296963257&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="58"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;100k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="90"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;7.6331036868352&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="121"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;140.8520942031&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="111"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;128.661612522&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="110"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;105.0993052953&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="97"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;81.580236949065&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="58"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;200k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="90"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;4.5979899497488&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="121"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;129.4309784215&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="111"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;117.0928170263&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="110"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;90.1744014189&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="97"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;77.188885604493&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="58"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;300k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="90"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;3.2624353026495&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="121"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;132.2547957998&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="111"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;112.4357993662&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="110"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;85.7571452698&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="97"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;76.020504465483&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="58"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;400k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="90"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;3.585352112676&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="121"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;122.103286385&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="111"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;113.2957746479&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="110"&gt;    &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;84.059342723&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;&lt;br /&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="97"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;78.840187793427&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="TOP"&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="58"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;500k&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="90"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;2.0794178593803&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="121"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;119.2828056479&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="111"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;114.5571297769&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: rgb(0, 0, 0) -moz-use-text-color rgb(0, 0, 0) rgb(0, 0, 0); padding: 0.07in 0in 0.07in 0.07in;" width="110"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;82.3881981591&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid rgb(0, 0, 0); padding: 0.07in;" width="97"&gt;    &lt;p style="border: medium none; padding: 0in; font-style: normal; font-weight: normal; text-decoration: none;" align="LEFT"&gt;    &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;79.314249915667&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; &lt;span&gt;&lt;span style="font-size:85%;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt;&lt;a href="http://4.bp.blogspot.com/-pg7WF7SvMjY/TiANfpL7KJI/AAAAAAAAAJg/CkFKHtzzJgQ/s1600/3.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 168px;" src="http://4.bp.blogspot.com/-pg7WF7SvMjY/TiANfpL7KJI/AAAAAAAAAJg/CkFKHtzzJgQ/s400/3.png" alt="" id="BLOGGER_PHOTO_ID_5629514371496093842" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;&lt;u&gt;&lt;b&gt;Observation&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;In case of scenarios 3 &amp;amp; 4, the only difference is the underlying XSLT processor used by the ESB is changed from the xalan to saxon. When comparing the performance numbers of xalan and saxon; saxon is showing a little performance improvement. Therefore, there is no significant gain with the use of saxon as opposed to xalan (which is the default XSLT processor shipped with the ESB).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;In case of scenario 5, I developed a new mediator to do XSLT transformation by passing in the stream directly to the XSLT processor with the use of Message Relay.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;Compared to scenarios 3 &amp;amp; 4, scenario 5 is showing a significant performance improvement. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;The difference between scenario 5 and 6 is that the underlying saxon XSLT processor is changed from the community edition to enterprise edition. Compared to scenario 5, scenario 6 is showing a performance improvement.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;Throughout this post I have talked about a transformation mediator which is supporting streaming.  This will be available with the next release of the WSO2 ESB. This meadiator's name will be &lt;span style="font-weight: bold; font-style: italic;"&gt;relayTransformer&lt;/span&gt;&lt;span style="font-style: italic;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;I will write a new post on this new mediator on some other time.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;NOTE: This performance figures were calculated, inorder for me to get an idea about the performance gain of this new mediator. These figures were not calculated in an ideal environment. Therefore, if you try to compare these numbers with a performance benchmark that you might have done, it might not be comparable.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="font-weight: bold;"&gt;References&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;[1] - &lt;a href="http://wso2.org/products/download/esb/java/4.0.0/wso2esb-4.0.0.zip"&gt;http://wso2.org/products/download/esb/java/4.0.0/wso2esb-4.0.0.zip&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;[2] - &lt;a href="http://heshans.blogspot.com/search/label/ESB"&gt;http://heshans.blogspot.com/search/label/ESB&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;[3] - &lt;a href="http://wso2.org/project/esb/java/4.0.0/docs/samples/message_mediation_samples.html#Sample8"&gt;http://wso2.org/project/esb/java/4.0.0/docs/samples/message_mediation_samples.html#Sample8&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in; border: medium none; padding: 0in; font-style: normal; font-weight: normal; line-height: 115%; text-decoration: none; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-8114203381383109546?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/8114203381383109546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=8114203381383109546' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8114203381383109546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8114203381383109546'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2011/07/xslt-transformations-with-wso2-esb.html' title='XSLT transformations with WSO2 ESB'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-qGOpy0ufnJU/TiANDPFwEnI/AAAAAAAAAJQ/nUP9kyNwBE0/s72-c/1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-6229104960597008466</id><published>2011-07-12T22:25:00.000-07:00</published><updated>2011-07-12T22:32:55.796-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><title type='text'>Changing the underlying XSLT processor of WSO2 ESB</title><content type='html'>The default XSLT processor shipped in with WSO2 ESB is xalan. Let's assume that you need to change the xslt processor to saxon.&lt;br /&gt;&lt;br /&gt;Following are the steps to set saxon as the XSLT processor.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1)&lt;/span&gt; Remove the xalan-2.7.0.wso2v1.jar from the following locations.&lt;br /&gt;ESB_HOME/lib/xalan-2.7.0.wso2v1.jar&lt;br /&gt;ESB_HOME/lib/endorsed/xalan-2.7.0.wso2v1.jar&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2)&lt;/span&gt; Then add the Saxon home edition(saxon9he.jar) to the above mentioned locations.&lt;br /&gt;ie.&lt;br /&gt;ESB_HOME/lib/&lt;br /&gt;ESB_HOME/lib/endorsed/&lt;br /&gt;&lt;br /&gt;Saxon can be downloaded from [&lt;a href="http://saxon.sourceforge.net/"&gt;1&lt;/a&gt;].&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3)&lt;/span&gt; Start the ESB server.&lt;br /&gt;&lt;br /&gt;After changing the XSLT processor to Saxon, you can do your transformations with the use of Saxon parser.&lt;br /&gt;&lt;br /&gt;[1] - &lt;a href="http://saxon.sourceforge.net/"&gt;http://saxon.sourceforge.net/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-6229104960597008466?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/6229104960597008466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=6229104960597008466' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/6229104960597008466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/6229104960597008466'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2011/07/changing-underlying-xslt-processor-of.html' title='Changing the underlying XSLT processor of WSO2 ESB'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-8261117819053721706</id><published>2011-06-21T03:52:00.000-07:00</published><updated>2011-06-21T06:25:20.490-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><title type='text'>Local Transport implementation for WSO2 ESB</title><content type='html'>&lt;div style="text-align: justify;"&gt;Apache Axis2's non blocking local transport implementation is used to make internal service calls and transfer data within proxy services. The class org.apache.axis2.transport.local.NonBlockingLocalTransportSender  implements the sender API. The transport does not have a receiver implementation and does not accept any configuration parameters as of now. This transport will work seamlessly against the ESB's Nhttp transport. This new transport is available with the latest [&lt;a href="http://wso2.org/project/esb/java/4.0.0/doc"&gt;1&lt;/a&gt;] release of WSO2 ESB (ie. wso2esb-4.0.0). The binary distro can be downloaded from [&lt;a href="http://wso2.org/products/download/esb/java/4.0.0/wso2esb-4.0.0.zip"&gt;2&lt;/a&gt;].&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Scenario : &lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Inorder to demonstrate the use of local transport, let's consider following scenario. The ESB contains three proxy services. The stockquote client invokes the LocalTransportProxy. Then the message will be sent to the SecondProxy and then it will be sent to the StockQuoteProxy. The StockQuoteProxy will invoke the backend service and return the response to the client. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify; "&gt;&lt;b&gt;1) Without local transport&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify; "&gt;&lt;img src="http://4.bp.blogspot.com/-Hr8QdL5Spak/TgB4X-4WdPI/AAAAAAAAAI4/JbgChrm_1kA/s400/Copyofdrawing1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5620624688370054386" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 300px; " /&gt;&lt;/div&gt;&lt;div style="text-align: justify; "&gt;If you have a look at the above diagram you might notice that each call between proxy services are going through the network. &lt;/div&gt;&lt;div style="text-align: justify; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify; "&gt;&lt;b&gt;Synapse Configuration:&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify; "&gt;&lt;br /&gt;&lt;pre class="brush:js"&gt;&amp;lt;definitions xmlns="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt;&amp;lt;proxy xmlns="http://ws.apache.org/ns/synapse" name="LocalTransportProxy"&lt;br /&gt;       transports="https http" startOnLoad="true" trace="disable"&amp;gt;&lt;br /&gt;    &amp;lt;target&amp;gt;&lt;br /&gt;        &amp;lt;endpoint name="ep1"&amp;gt;&lt;br /&gt;            &amp;lt;address uri="http://localhost:9000/services/SecondProxy"/&amp;gt;&lt;br /&gt;        &amp;lt;/endpoint&amp;gt;&lt;br /&gt;        &amp;lt;inSequence&amp;gt;&lt;br /&gt;            &amp;lt;log level="full"/&amp;gt;&lt;br /&gt;            &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;                &amp;lt;property name="LocalTransportProxy" value="In sequence of LocalTransportProxy invoked!"/&amp;gt;&lt;br /&gt;            &amp;lt;/log&amp;gt;&lt;br /&gt;        &amp;lt;/inSequence&amp;gt;&lt;br /&gt;        &amp;lt;outSequence&amp;gt;&lt;br /&gt;            &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;                &amp;lt;property name="LocalTransportProxy" value="Out sequence of LocalTransportProxy invoked!"/&amp;gt;&lt;br /&gt;            &amp;lt;/log&amp;gt;&lt;br /&gt;            &amp;lt;send/&amp;gt;&lt;br /&gt;        &amp;lt;/outSequence&amp;gt;&lt;br /&gt;    &amp;lt;/target&amp;gt;&lt;br /&gt;    &amp;lt;publishWSDL uri="file:repository/samples/resources/proxy/sample_proxy_1.wsdl"/&amp;gt;&lt;br /&gt;&amp;lt;/proxy&amp;gt;&lt;br /&gt;&amp;lt;proxy xmlns="http://ws.apache.org/ns/synapse" name="SecondProxy"&lt;br /&gt;       transports="https http" startOnLoad="true" trace="disable"&amp;gt;&lt;br /&gt;    &amp;lt;target&amp;gt;&lt;br /&gt;        &amp;lt;endpoint name="ep2"&amp;gt;&lt;br /&gt;            &amp;lt;address uri="http://localhost:9000/services/StockQuoteProxy"/&amp;gt;&lt;br /&gt;        &amp;lt;/endpoint&amp;gt;&lt;br /&gt;        &amp;lt;inSequence&amp;gt;&lt;br /&gt;            &amp;lt;log level="full"/&amp;gt;&lt;br /&gt;            &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;                &amp;lt;property name="SecondProxy" value="In sequence of Second proxy invoked!"/&amp;gt;&lt;br /&gt;            &amp;lt;/log&amp;gt;&lt;br /&gt;        &amp;lt;/inSequence&amp;gt;&lt;br /&gt;        &amp;lt;outSequence&amp;gt;&lt;br /&gt;            &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;                &amp;lt;property name="SecondProxy" value="Out sequence of Second proxy invoked!"/&amp;gt;&lt;br /&gt;            &amp;lt;/log&amp;gt;&lt;br /&gt;            &amp;lt;send/&amp;gt;&lt;br /&gt;        &amp;lt;/outSequence&amp;gt;&lt;br /&gt;    &amp;lt;/target&amp;gt;&lt;br /&gt;    &amp;lt;publishWSDL uri="file:repository/samples/resources/proxy/sample_proxy_1.wsdl"/&amp;gt;&lt;br /&gt;&amp;lt;/proxy&amp;gt;&lt;br /&gt;&amp;lt;proxy xmlns="http://ws.apache.org/ns/synapse" name="StockQuoteProxy"&lt;br /&gt;       startOnLoad="true"&amp;gt;&lt;br /&gt;    &amp;lt;target&amp;gt;&lt;br /&gt;        &amp;lt;endpoint name="ep3"&amp;gt;&lt;br /&gt;            &amp;lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/&amp;gt;&lt;br /&gt;        &amp;lt;/endpoint&amp;gt;&lt;br /&gt;        &amp;lt;outSequence&amp;gt;&lt;br /&gt;            &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;                &amp;lt;property name="StockQuoteProxy"&lt;br /&gt;                          value="Out sequence of StockQuote proxy invoked!"/&amp;gt;&lt;br /&gt;            &amp;lt;/log&amp;gt;&lt;br /&gt;            &amp;lt;send/&amp;gt;&lt;br /&gt;        &amp;lt;/outSequence&amp;gt;&lt;br /&gt;    &amp;lt;/target&amp;gt;&lt;br /&gt;    &amp;lt;publishWSDL uri="file:repository/samples/resources/proxy/sample_proxy_1.wsdl"/&amp;gt;&lt;br /&gt;&amp;lt;/proxy&amp;gt;&lt;br /&gt;&amp;lt;/definitions&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;2) With local transport&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://4.bp.blogspot.com/-0dcL1kIyYLI/TgB5V4TKILI/AAAAAAAAAJI/33fNKQrHBJU/s400/drawing1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5620625751755333810" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 300px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In this sample, the communication between proxy services are done through the Local transport. Since Local transport calls are in-JVM calls, it will reduce the time taken for the communication between proxy services (will not introduce any network overhead).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Synapse Configuration:&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;pre class="brush:js"&gt;&amp;lt;definitions xmlns="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt; &amp;lt;proxy xmlns="http://ws.apache.org/ns/synapse" name="LocalTransportProxy"&lt;br /&gt;        transports="https http" startOnLoad="true" trace="disable"&amp;gt;&lt;br /&gt;     &amp;lt;target&amp;gt;&lt;br /&gt;         &amp;lt;endpoint name="ep1"&amp;gt;&lt;br /&gt;             &amp;lt;address uri="local://localhost/services/SecondProxy"/&amp;gt;&lt;br /&gt;         &amp;lt;/endpoint&amp;gt;&lt;br /&gt;         &amp;lt;inSequence&amp;gt;&lt;br /&gt;             &amp;lt;log level="full"/&amp;gt;&lt;br /&gt;             &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;                 &amp;lt;property name="LocalTransportProxy" value="In sequence of LocalTransportProxy invoked!"/&amp;gt;&lt;br /&gt;             &amp;lt;/log&amp;gt;&lt;br /&gt;         &amp;lt;/inSequence&amp;gt;&lt;br /&gt;         &amp;lt;outSequence&amp;gt;&lt;br /&gt;             &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;                 &amp;lt;property name="LocalTransportProxy" value="Out sequence of LocalTransportProxy invoked!"/&amp;gt;&lt;br /&gt;             &amp;lt;/log&amp;gt;&lt;br /&gt;             &amp;lt;send/&amp;gt;&lt;br /&gt;         &amp;lt;/outSequence&amp;gt;&lt;br /&gt;     &amp;lt;/target&amp;gt;&lt;br /&gt;     &amp;lt;publishWSDL uri="file:repository/samples/resources/proxy/sample_proxy_1.wsdl"/&amp;gt;&lt;br /&gt; &amp;lt;/proxy&amp;gt;&lt;br /&gt; &amp;lt;proxy xmlns="http://ws.apache.org/ns/synapse" name="SecondProxy"&lt;br /&gt;        transports="https http" startOnLoad="true" trace="disable"&amp;gt;&lt;br /&gt;     &amp;lt;target&amp;gt;&lt;br /&gt;         &amp;lt;endpoint name="ep2"&amp;gt;&lt;br /&gt;             &amp;lt;address uri="local://localhost/services/StockQuoteProxy"/&amp;gt;&lt;br /&gt;         &amp;lt;/endpoint&amp;gt;&lt;br /&gt;         &amp;lt;inSequence&amp;gt;&lt;br /&gt;             &amp;lt;log level="full"/&amp;gt;&lt;br /&gt;             &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;                 &amp;lt;property name="SecondProxy" value="In sequence of Second proxy invoked!"/&amp;gt;&lt;br /&gt;             &amp;lt;/log&amp;gt;&lt;br /&gt;         &amp;lt;/inSequence&amp;gt;&lt;br /&gt;         &amp;lt;outSequence&amp;gt;&lt;br /&gt;             &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;                 &amp;lt;property name="SecondProxy" value="Out sequence of Second proxy invoked!"/&amp;gt;&lt;br /&gt;             &amp;lt;/log&amp;gt;&lt;br /&gt;             &amp;lt;send/&amp;gt;&lt;br /&gt;         &amp;lt;/outSequence&amp;gt;&lt;br /&gt;     &amp;lt;/target&amp;gt;&lt;br /&gt;     &amp;lt;publishWSDL uri="file:repository/samples/resources/proxy/sample_proxy_1.wsdl"/&amp;gt;&lt;br /&gt; &amp;lt;/proxy&amp;gt;&lt;br /&gt; &amp;lt;proxy xmlns="http://ws.apache.org/ns/synapse" name="StockQuoteProxy"&lt;br /&gt;        startOnLoad="true"&amp;gt;&lt;br /&gt;     &amp;lt;target&amp;gt;&lt;br /&gt;         &amp;lt;endpoint name="ep3"&amp;gt;&lt;br /&gt;             &amp;lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/&amp;gt;&lt;br /&gt;         &amp;lt;/endpoint&amp;gt;&lt;br /&gt;         &amp;lt;outSequence&amp;gt;&lt;br /&gt;             &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;                 &amp;lt;property name="StockQuoteProxy"&lt;br /&gt;                           value="Out sequence of StockQuote proxy invoked!"/&amp;gt;&lt;br /&gt;             &amp;lt;/log&amp;gt;&lt;br /&gt;             &amp;lt;send/&amp;gt;&lt;br /&gt;         &amp;lt;/outSequence&amp;gt;&lt;br /&gt;     &amp;lt;/target&amp;gt;&lt;br /&gt;     &amp;lt;publishWSDL uri="file:repository/samples/resources/proxy/sample_proxy_1.wsdl"/&amp;gt;&lt;br /&gt; &amp;lt;/proxy&amp;gt;&lt;br /&gt;&amp;lt;/definitions&amp;gt;&lt;br /&gt;&lt;/pre&gt; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you are interested in running this local transport sample, refer [&lt;a href="http://wso2.org/project/esb/java/4.0.0/docs/samples/transport_samples.html#Sample268"&gt;3&lt;/a&gt;]. I am planning to do a performance benchmark against this local transport. Stay tuned for my followup post on local transport performance.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;References &lt;/div&gt;&lt;div style="text-align: justify;"&gt;[1] -&lt;a href="http://wso2.org/project/esb/java/4.0.0/doc"&gt; http://wso2.org/project/esb/java/4.0.0/doc&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;[2] - &lt;a href="http://wso2.org/products/download/esb/java/4.0.0/wso2esb-4.0.0.zip"&gt;http://wso2.org/products/download/esb/java/4.0.0/wso2esb-4.0.0.zip&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;[3] - &lt;a href="http://wso2.org/project/esb/java/4.0.0/docs/samples/transport_samples.html#Sample268"&gt;http://wso2.org/project/esb/java/4.0.0/docs/samples/transport_samples.html#Sample268&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-8261117819053721706?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/8261117819053721706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=8261117819053721706' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8261117819053721706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8261117819053721706'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2011/06/local-transport-implementation-for-wso2.html' title='Local Transport implementation for WSO2 ESB'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Hr8QdL5Spak/TgB4X-4WdPI/AAAAAAAAAI4/JbgChrm_1kA/s72-c/Copyofdrawing1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-6299600722743837758</id><published>2011-06-13T21:18:00.000-07:00</published><updated>2011-06-13T21:26:43.372-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><title type='text'>WSO2 Enterprise Service Bus 4.0.0 Released</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="border-collapse: collapse; font-family: Verdana,Arial,Helvetica,sans-serif; line-height: 16px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="border-collapse: collapse; font-family: arial,sans-serif;"&gt;&lt;p style="font-family: Verdana,Arial,Helvetica,sans-serif; line-height: 1.3em; font-size: small;"&gt;The WSO2 ESB team is pleased to announce the release of version 4.0.0 of the Open Source Enterprise Service Bus (ESB).&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;span style="border-collapse: collapse; font-family: arial,sans-serif;"&gt;&lt;p style="font-family: Verdana,Arial,Helvetica,sans-serif; line-height: 1.3em; font-size: small;"&gt;WSO2 ESB is a fast, lightweight and user friendly open source Enterprise Service Bus (ESB) distributed under the &lt;a href="http://www.apache.org/licenses/LICENSE-2.0.html" style="color: rgb(51, 102, 204); text-decoration: none; padding-right: 18px;" target="_blank"&gt;Apache Software License v2.0&lt;/a&gt;.  WSO2 ESB allows system administrators and developers to easily  configure message routing, intermediation, transformation, logging, task  scheduling, fail over routing and load balancing. It also supports  transport switching, eventing, rule based mediation and priority based  mediation for advanced integration requirements. The ESB runtime is  designed to be completely asynchronous, non-blocking and streaming based  on the &lt;a href="http://synapse.apache.org/" style="color: rgb(51, 102, 204); text-decoration: none; padding-right: 18px;" target="_blank"&gt;Apache Synapse&lt;/a&gt; mediation engine.&lt;/p&gt;  &lt;p style="font-family: Verdana,Arial,Helvetica,sans-serif; line-height: 1.3em; font-size: small;"&gt;WSO2 ESB 4.0.0 is developed on top of the revolutionary &lt;a href="http://wso2.org/projects/carbon" style="color: rgb(51, 102, 204); text-decoration: none; padding-right: 18px;" target="_blank"&gt;WSO2 Carbon platform&lt;/a&gt; (Middleware  a' la carte), an OSGi based framework that provides seamless modularity  to your SOA via componentization. This release also contains many new  features and a range of optional components (add-ons) that can be  installed to customize the behavior of the ESB. Further, any existing  features of the ESB which are not required to your environment can be  easily removed using the underlying provisioning framework of Carbon. In  brief, WSO2 ESB can be fully customized and tailored to meet your exact  SOA needs.&lt;/p&gt;  &lt;p style="font-family: Verdana,Arial,Helvetica,sans-serif; line-height: 1.3em; font-size: small;"&gt;You can download this distribution from &lt;a href="http://wso2.org/downloads/esb" style="color: rgb(51, 102, 204); text-decoration: none; padding-right: 18px;" target="_blank"&gt;http://wso2.org/downloads/esb&lt;/a&gt;and give it a try.&lt;/p&gt;  &lt;p style="font-family: Verdana,Arial,Helvetica,sans-serif; line-height: 1.3em; font-size: small;"&gt;&lt;b&gt;Brand New Features in this Release&lt;/b&gt;&lt;/p&gt;&lt;ul style="font-family: Verdana,Arial,Helvetica,sans-serif; line-height: 18px; font-size: 12px;"&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;HTTP relay transport - Pure streaming HTTP transport based on Java NIO for ultra fast HTTP routing&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Deployment synchronizer - Easily synchronize the configuration across a cluster of Carbon Servers&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Message  stores and processors - For advanced enterprise messaging and QoS  enforcement (eg: in-order delivery, exactly once delivery)&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Mediation templates - The concept of reusable functions to the ESB configuration language&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;  Message broker - Built-in JMS provider/broker powered by Apache Qpid&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;FTPS support via file transport - Transfer files over SSH connections&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Conditional router mediator - Implement advanced and complex routing logic at ease&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;  URL rewrite mediator - Rewrite URLs and URL fragments efficiently&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Custom XPath extensions - User defined custom XPath extensions support&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;New HL7 transport (optional) - Send and receive HL7 messages over MLLP and other transports&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;  New eventing implementation - A powerful event broker with extensive support for WS-Eventing and topic management&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;  Event mediator - Publish events to topics defined in the built-in event broker&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;LDAP user store - Built-in LDAP service based on Apache Directory Server&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Dynamic registry keys and endpoint URL support - Construct registry lookup keys and endpoint URLs dynamically at mediation time&lt;/li&gt;&lt;/ul&gt;&lt;div style="font-size: 13px;"&gt;&lt;span&gt;&lt;b&gt;&lt;span style="line-height: 18px;"&gt;Enhancements&lt;/span&gt;&lt;span style="line-height: 18px;"&gt; in this Release&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-size: 13px;"&gt;  &lt;span&gt;&lt;span style="line-height: 18px;"&gt;&lt;ul style="font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 12px;"&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;  Improved Smooks mediator&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Enhanced support for service chaining with the receiving sequence support in the send mediator&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Improved weighted round robin algorithm for the load balance endpoint&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;  Improvements to caching&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Automatic schema imports from the WSDLs added to the registry (for proxy services)&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Automatic schema imports from the schema files added to the registry (for validate mediator)&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;  Support for setting properties at the endpoint level&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Enhanced Enrich Mediator&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;  Improved support for batch transfers in FIX transport&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Validation support for the ESB configuration editor (source view)&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Proxy service UI enhancements&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;  Enhanced menu layouts&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Local transport for fast in-VM service calls&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;Key Features of WSO2 ESB&lt;/b&gt;&lt;/div&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;p style="font-size: 13px; line-height: 1.3em;"&gt;&lt;span style="line-height: 18px;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul style="font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 12px;"&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Proxy  services - facilitating synchronous/asynchronous transport, interface  (WSDL/Schema/Policy), message format (SOAP 1.1/1.2, POX/REST, Text,  Binary), QoS (WS-Addressing/WS-Security/WS-RM) and optimization switching (MTOM/SwA).&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Non-blocking  HTTP/S transports based on Apache HttpCore-NIO for ultra-fast execution  and support for thousands of connections at high concurrency with  constant memory usage.&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Built  in Registry/Repository, facilitating dynamic updating and reloading of  the configuration and associated resources (e.g. XSLTs, XSD, WSDL,  Policies, JS configurations ..)&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Easily  extendable via custom Java classes (mediator and command)/Spring  configurations, or BSF Scripting languages (Javascript, Ruby, Groovy,  etc.)&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Built in support for scheduling tasks using the Quartz scheduler.&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;  Load-balancing (with or without sticky sessions)/Fail-over, and clustered Throttling and Caching support&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;  WS-Security, WS-Reliable Messaging, Caching &amp;amp; Throttling configurable via (message/operation/service level) WS-Policies&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;  Lightweight, XML and Web services centric messaging model&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Support  for industrial standards (Hessian binary web service protocol/  Financial Information eXchange protocol and optional Health Level-7  protocol)&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Enhanced  support for the VFS (File/FTP/SFTP), JMS, Mail transports with optional  TCP/UDP transports and transport switching among any of the above  transports&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Support for message splitting &amp;amp; aggregation using the EIP and service callouts&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;  Database lookup &amp;amp; store support with DBMediators with reusable database connection pools&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;WS-Eventing support with event sources and event brokering&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Rule based mediation of the messages using the Drools rule engine&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;  Transactions support via the JMS transport and Transaction mediator for database mediators&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Internationalized GUI management console with user management for configuration development&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Integrated monitoring support with statistics, configurable logging and tracing&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;  JMX monitoring support and JMX management capabilities like, Graceful/Forceful shutdown/restart&lt;/li&gt;&lt;/ul&gt;&lt;div style="font-size: 13px;"&gt;&lt;span&gt;&lt;b&gt;Bugs Fixed in this Release&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div style="font-size: 13px;"&gt;&lt;span&gt;&lt;p style="font-family: Verdana,Arial,Helvetica,sans-serif; line-height: 1.3em; font-size: small;"&gt;This  release of WSO2 ESB comes with a number of bug fixes, both in the base  framework and the ESB specific components. All the issues which have  been fixed in ESB 4.0.0 are recorded at following locations:&lt;/p&gt;  &lt;ul style="font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 12px;"&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;a href="https://wso2.org/jira/secure/IssueNavigator.jspa?requestId=10522" style="color: rgb(51, 102, 204); text-decoration: none; padding-right: 18px;" target="_blank"&gt;Fixed ESB specific issues&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;a href="https://wso2.org/jira/secure/IssueNavigator.jspa?requestId=10523" style="color: rgb(51, 102, 204); text-decoration: none; padding-right: 18px;" target="_blank"&gt;Fixed base framework issues&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;Known Issues&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;p style="font-family: Verdana,Arial,Helvetica,sans-serif; line-height: 1.3em; font-size: small;"&gt;All the open issues pertaining to WSO2 ESB 4.0.0 are reported at following locations:&lt;/p&gt;  &lt;ul style="font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 12px;"&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;a href="https://wso2.org/jira/secure/IssueNavigator.jspa?requestId=10524" style="color: rgb(51, 102, 204); text-decoration: none; padding-right: 18px;" target="_blank"&gt;WSO2 ESB 4.0.0 component issues&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;a href="https://wso2.org/jira/secure/IssueNavigator.jspa?requestId=10525" style="color: rgb(51, 102, 204); text-decoration: none; padding-right: 18px;" target="_blank"&gt;WSO2 ESB 4.0.0 base framework issues&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="line-height: 18px;"&gt;&lt;b&gt;How to Run&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="line-height: 18px;"&gt;&lt;span style="font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 12px;"&gt;&lt;ol type="1"&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;  Extract the downloaded zip&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Go to the bin directory in the extracted folder&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;  Run the wso2server.sh or wso2server.bat as appropriate&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Point your browser to the URL &lt;a href="https://localhost:9443/carbon" style="color: rgb(0, 0, 204);" target="_blank"&gt;https://localhost:9443/carbon&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Use "admin", "admin" as the username and password to login as an admin&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;  If you need to start the OSGi console with the server use the property  -DosgiConsole when starting the server. The INSTALL.txt file found on  the installation directory will give you a comprehensive set of options  and properties that can be passed into the startup script&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; font-size: 13px; line-height: 18px;"&gt;Sample  configurations can be started by the wso2esb-samples script passing the  sample number with the -sn option (Please have a look at the samples  guide for more information, on running samples)&lt;/li&gt;&lt;/ol&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;p style="font-family: Verdana,Arial,Helvetica,sans-serif; line-height: 1.3em; font-size: small;"&gt;&lt;b&gt;How to Contribute&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family: Verdana,Arial,Helvetica,sans-serif; line-height: 1.3em; font-size: small;"&gt;  &lt;b&gt;Mailing Lists&lt;/b&gt;&lt;/p&gt;&lt;p style="font-size: 13px; line-height: 1.3em;"&gt;&lt;b&gt;&lt;span style="line-height: 18px;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family: Verdana,Arial,Helvetica,sans-serif; line-height: 1.3em; font-size: small;"&gt;  Join our mailing list and correspond with the developers directly.&lt;/p&gt;&lt;ul style="font-family: Verdana,Arial,Helvetica,sans-serif;"&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; line-height: 18px;"&gt;&lt;span style="font-size:85%;"&gt;  Developer List : &lt;a href="mailto:carbon-dev@wso2.org" style="color: rgb(51, 102, 204); text-decoration: none; padding-right: 18px;" target="_blank"&gt;carbon-dev@wso2.org&lt;/a&gt; | &lt;a href="mailto:carbon-dev-request@wso2.org?subject=subscribe" style="color: rgb(51, 102, 204); text-decoration: none; padding-right: 18px;" target="_blank"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://wso2.org/mailarchive/carbon-dev/" style="color: rgb(51, 102, 204); text-decoration: none; padding-right: 18px;" target="_blank"&gt;Mail Archive&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="margin-left: 15px; font-family: Verdana,Helvetica,Arial,sans-serif; line-height: 18px;"&gt;&lt;span style="font-size:85%;"&gt;User List : &lt;a href="mailto:esb-java-user@wso2.org" style="color: rgb(51, 102, 204); text-decoration: none; padding-right: 18px;" target="_blank"&gt;esb-java-user@wso2.org&lt;/a&gt; | &lt;a href="mailto:esb-java-user-request@wso2.org?subject=subscribe" style="color: rgb(51, 102, 204); text-decoration: none; padding-right: 18px;" target="_blank"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://wso2.org/mailarchive/esb-java-user/" style="color: rgb(51, 102, 204); text-decoration: none; padding-right: 18px;" target="_blank"&gt;Mail Archive&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="font-size: 13px;"&gt;&lt;b&gt;&lt;span&gt;Reporting Issues&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-size: 13px;"&gt;&lt;span&gt;&lt;span style="font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 12px;"&gt;&lt;p style="font-weight: normal; line-height: 1.3em; font-size: small;"&gt;  We encourage you to report issues, documentation faults and feature requests regarding WSO2 ESB through the public &lt;a href="http://www.wso2.org/jira/browse/ESBJAVA" style="color: rgb(51, 102, 204); text-decoration: none; padding-right: 18px;" target="_blank"&gt;ESB JIRA&lt;/a&gt;. You can use the &lt;a href="http://www.wso2.org/jira/browse/CARBON" style="color: rgb(51, 102, 204); text-decoration: none; padding-right: 18px;" target="_blank"&gt;Carbon JIRA&lt;/a&gt; to report any issues related to the Carbon base framework or associated Carbon components.&lt;/p&gt;  &lt;p style="font-weight: bold; line-height: 1.3em; font-size: small;"&gt;Discussion Forums&lt;/p&gt;&lt;p style="font-weight: normal; line-height: 1.3em; font-size: small;"&gt;&lt;span style="font-size: 12px; line-height: 18px;"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height: 1.3em; font-size: small;"&gt;Alternatively, questions could be raised using the forums available.&lt;/p&gt;&lt;p style="line-height: 1.3em; font-size: small;"&gt;&lt;a href="http://wso2.org/forum/187" style="color: rgb(51, 102, 204); text-decoration: none; padding-right: 18px;" target="_blank"&gt;WSO2 ESB Forum&lt;/a&gt;&lt;b&gt;:&lt;/b&gt; Discussion forum for WSO2 ESB developers/users&lt;/p&gt;  &lt;/span&gt;&lt;div style="font-weight: bold;"&gt;Support&lt;/div&gt;&lt;div style="font-weight: normal;"&gt;&lt;p style="line-height: 1.3em; font-size: small;"&gt;We  are committed to ensuring that your enterprise middleware deployment is  completely supported from evaluation to production. Our unique approach  ensures that all support leverages our open development methodology and  is provided by the very same engineers who build the technology.&lt;/p&gt;  &lt;p style="line-height: 1.3em; font-size: small;"&gt;For more details and to take advantage of this unique opportunity please visit &lt;a href="http://wso2.com/support" style="color: rgb(51, 102, 204); text-decoration: none; padding-right: 18px;" target="_blank"&gt;http://wso2.com/support&lt;/a&gt;.&lt;/p&gt;  &lt;p style="line-height: 1.3em; font-size: small;"&gt;For more information about WSO2 ESB please see &lt;a href="http://wso2.com/products/enterprise-service-bus/" style="color: rgb(51, 102, 204); text-decoration: none; padding-right: 18px;" target="_blank"&gt;http://wso2.com/products/enterprise-service-bus&lt;/a&gt;.&lt;/p&gt;  &lt;p style="line-height: 1.3em; font-size: small;"&gt;&lt;i&gt;-- The WSO2 ESB Team --&lt;/i&gt;&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-6299600722743837758?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/6299600722743837758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=6299600722743837758' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/6299600722743837758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/6299600722743837758'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2011/06/wso2-enterprise-service-bus-400.html' title='WSO2 Enterprise Service Bus 4.0.0 Released'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-3773578356437608006</id><published>2011-05-06T01:52:00.000-07:00</published><updated>2011-05-06T02:00:26.094-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><title type='text'>Executing Groovy scripts using WSO2 ESB</title><content type='html'>Following post will discuss how to execute a Groovy script using the WSO2 ESB's script mediator [&lt;a href="http://wso2.org/project/esb/java/3.0.1/docs/mediators/script.html"&gt;1&lt;/a&gt;].&lt;br /&gt;&lt;br /&gt;1) Download a distribution of the WSO2 ESB [&lt;a href="http://wso2.org/downloads/esb"&gt;2&lt;/a&gt;].&lt;br /&gt;&lt;br /&gt;2) Extract the zip file. The directory created will be referred as ESB_HOME.&lt;br /&gt;&lt;br /&gt;3) Go to the ESB_HOME/samples/axis2Server/src/SimpleStockQuoteService directory. Run "ant" to build the service. A service archive will be created at ESB_HOME/samples/axis2Server/repository/services. The generated service archive can be deployed at an Axis2 server.&lt;br /&gt;eg. SimpleStockQuoteService.aar&lt;br /&gt;&lt;br /&gt;4) Copy the groovy-all-1.1-rc-1.jar into ESB_HOME/repository/components/lib/.&lt;br /&gt;&lt;br /&gt;5) Go to the ESB_HOME/bin and run the script which starts wso2server.&lt;br /&gt;eg. wso2server.bat for windows environments&lt;br /&gt;   wso2server.sh for linux environments&lt;br /&gt;&lt;br /&gt;6) Once the server stats, log into the Mangement Console using following credentials (following are the default username/password).&lt;br /&gt;     username: admin&lt;br /&gt;     password: admin&lt;br /&gt;&lt;br /&gt;7) Add the following proxy to the Synapse configuration using the Source View tab. &lt;pre class="brush:js"&gt;&amp;lt;proxy xmlns="http://ws.apache.org/ns/synapse" name="groovyProxy" transports="https,http" statistics="disable" trace="disable" startOnLoad="true"&amp;gt;&lt;br /&gt;  &amp;lt;target&amp;gt;&lt;br /&gt;     &amp;lt;inSequence&amp;gt;&lt;br /&gt;        &amp;lt;script language="groovy"&amp;gt;println "The current time is: ${new Date()}"&amp;lt;/script&amp;gt;&lt;br /&gt;        &amp;lt;send&amp;gt;&lt;br /&gt;           &amp;lt;endpoint name="endpoint_urn_uuid_4ECE7CA834EC574477533951"&amp;gt;&lt;br /&gt;              &amp;lt;address uri="http://localhost:9000/services/SimpleStockQuoteService" /&amp;gt;&lt;br /&gt;           &amp;lt;/endpoint&amp;gt;&lt;br /&gt;        &amp;lt;/send&amp;gt;&lt;br /&gt;     &amp;lt;/inSequence&amp;gt;&lt;br /&gt;  &amp;lt;/target&amp;gt;&lt;br /&gt;&amp;lt;/proxy&amp;gt;&lt;br /&gt;&lt;/pre&gt;8) Execute the client using the following command.&lt;br /&gt;&lt;pre class="brush:js"&gt;heshan@heshan-ThinkPad:~/Dev/wso2esb-4.0.0-SNAPSHOT/samples/axis2Client$ ant stockquote -Daddurl=http://localhost:8280/services/groovyProxy&lt;br /&gt;&lt;/pre&gt;9) Following message will be printed at ESB console. &lt;pre class="brush:js"&gt;The current time is: Fri May 06 14:00:40 IST 2011&lt;/pre&gt;&lt;b&gt;References&lt;/b&gt;&lt;br /&gt;[1] - &lt;a href="http://wso2.org/project/esb/java/3.0.1/docs/mediators/script.html"&gt;http://wso2.org/project/esb/java/3.0.1/docs/mediators/script.html&lt;/a&gt;&lt;br /&gt;[2] - &lt;a href="http://wso2.org/downloads/esb"&gt;http://wso2.org/downloads/esb&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-3773578356437608006?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/3773578356437608006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=3773578356437608006' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/3773578356437608006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/3773578356437608006'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2011/05/executing-groovy-scripts-using-wso2-esb.html' title='Executing Groovy scripts using WSO2 ESB'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-6117835244901484892</id><published>2011-02-27T10:43:00.001-08:00</published><updated>2011-02-27T10:53:49.010-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Basketball'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>Friendly Basketball Match</title><content type='html'>We (WSO2) played a friendly Basketball match against some of my friends at Colombo University. We played the match on 24th Thursday at British School's outdoor Basketball court. This was the second time that we met in a friendly match. Last year the Colombo University guys won the match and this time around we won the match.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-tp9hmSHVUdU/TWqdSAiM_dI/AAAAAAAAAIs/j4P-lu0oDaU/s1600/DSC_1032.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 267px;" src="http://1.bp.blogspot.com/-tp9hmSHVUdU/TWqdSAiM_dI/AAAAAAAAAIs/j4P-lu0oDaU/s400/DSC_1032.JPG" alt="" id="BLOGGER_PHOTO_ID_5578444021158444498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;When comparing our performance against our previous encounter, our team has improved a lot.&lt;br /&gt;&lt;br /&gt;Since we had 2 games in 2 consecutive years, we are planning to take this ahead and have this friendly Basketball match as an annual event.&lt;br /&gt;&lt;br /&gt;I should like to thank my junior match mates at Colombo University for coming there to play a match during a University vacation and the crowd for coming there to cheer us.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-6117835244901484892?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/6117835244901484892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=6117835244901484892' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/6117835244901484892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/6117835244901484892'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2011/02/friendly-basketball-match.html' title='Friendly Basketball Match'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-tp9hmSHVUdU/TWqdSAiM_dI/AAAAAAAAAIs/j4P-lu0oDaU/s72-c/DSC_1032.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-1095256504922677938</id><published>2011-02-19T00:57:00.000-08:00</published><updated>2011-02-19T01:20:48.531-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='FOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><title type='text'>Handling a http-get request and invoking an external Web service with WSO2 ESB</title><content type='html'>&lt;div style="text-align: justify;"&gt;Following post will discuss how to handle a http-get request from WSO2 ESB and call a external web service. Inorder to clarify example clearly I am using a simple usecase described below. The relevant configuration files, steps to run the sample and the messages flowing through the system is shown below. I have labeled the messages in the diagram, inorder to show the contents of the messages.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-A1PCX3HUnH8/TV-JleEcYcI/AAAAAAAAAIE/dUpzDNKZ29E/s1600/rest.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 217px;" src="http://3.bp.blogspot.com/-A1PCX3HUnH8/TV-JleEcYcI/AAAAAAAAAIE/dUpzDNKZ29E/s400/rest.jpg" alt="" id="BLOGGER_PHOTO_ID_5575326140527829442" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Usecase&lt;/span&gt;&lt;br /&gt;1. Client makes a rest-like http-get: GET /.../company/&amp;lt;id&amp;gt;&lt;br /&gt;eg. curl "http://localhost:8280/services/ProxyA/company/IBM" -v&lt;br /&gt;2. ESB service proxy picks the company id from the url&lt;br /&gt;eg. IBM&lt;br /&gt;3. ESB service makes a web service call to a external ws-service (SimpleStockQuoteService) and a spesific ws-method.&lt;br /&gt;4. ESB service parses the ws-response and returns a plain xml result to the client.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Configuration Files&lt;/span&gt;&lt;br /&gt;Following is the Synapse configuration which contains the sample proxy which handles the request.&lt;br /&gt;&lt;pre class="brush:js"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;definitions xmlns="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt;&amp;lt;registry provider="org.wso2.carbon.mediation.registry.WSO2Registry"&amp;gt;&lt;br /&gt;    &amp;lt;parameter name="cachableDuration"&amp;gt;15000&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/registry&amp;gt;&lt;br /&gt;&amp;lt;proxy name="ProxyA" transports="https http" startOnLoad="true" trace="disable"&amp;gt;&lt;br /&gt;    &amp;lt;target&amp;gt;&lt;br /&gt;        &amp;lt;inSequence&amp;gt;&lt;br /&gt;            &amp;lt;enrich&amp;gt;&lt;br /&gt;                &amp;lt;source type="inline"&amp;gt;&lt;br /&gt;                    &amp;lt;a xmlns=""/&amp;gt;&lt;br /&gt;                &amp;lt;/source&amp;gt;&lt;br /&gt;                &amp;lt;target type="body" action="child"/&amp;gt;&lt;br /&gt;            &amp;lt;/enrich&amp;gt;&lt;br /&gt;            &amp;lt;log level="full"/&amp;gt;&lt;br /&gt;            &amp;lt;property name="company" expression="substring-after(get-property('To'),'company/')"/&amp;gt;&lt;br /&gt;            &amp;lt;xslt key="xslt-transform-request"&amp;gt;&lt;br /&gt;                &amp;lt;property name="symbol" expression="get-property('company')"/&amp;gt;&lt;br /&gt;            &amp;lt;/xslt&amp;gt;&lt;br /&gt;            &amp;lt;header name="Action" value="urn:getQuote"/&amp;gt;&lt;br /&gt;            &amp;lt;log level="full"/&amp;gt;&lt;br /&gt;            &amp;lt;send&amp;gt;&lt;br /&gt;                &amp;lt;endpoint name="ep1"&amp;gt;&lt;br /&gt;                    &amp;lt;address uri="http://localhost:9000/services/SimpleStockQuoteService" format="soap11"/&amp;gt;&lt;br /&gt;                &amp;lt;/endpoint&amp;gt;&lt;br /&gt;            &amp;lt;/send&amp;gt;&lt;br /&gt;        &amp;lt;/inSequence&amp;gt;&lt;br /&gt;        &amp;lt;outSequence&amp;gt;&lt;br /&gt;            &amp;lt;property xmlns:ax21="http://services.samples/xsd" xmlns:ns="http://services.samples" name="response_symbol" expression="//ns:return/ax21:symbol/child::text()"/&amp;gt;&lt;br /&gt;            &amp;lt;property xmlns:ax21="http://services.samples/xsd" xmlns:ns="http://services.samples" name="response_high" expression="//ns:return/ax21:high/child::text()"/&amp;gt;&lt;br /&gt;            &amp;lt;property xmlns:ax21="http://services.samples/xsd" xmlns:ns="http://services.samples" name="response_low" expression="//ns:return/ax21:low/child::text()"/&amp;gt;&lt;br /&gt;            &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;                &amp;lt;property name="response symbol:" expression="get-property('response_symbol')"/&amp;gt;&lt;br /&gt;                &amp;lt;property name="response high  :" expression="get-property('response_high')"/&amp;gt;&lt;br /&gt;                &amp;lt;property name="response low   :" expression="get-property('response_low')"/&amp;gt;&lt;br /&gt;            &amp;lt;/log&amp;gt;&lt;br /&gt;            &amp;lt;xslt key="xslt-transform-response"&amp;gt;&lt;br /&gt;                &amp;lt;property name="symbol" expression="get-property('response_symbol')"/&amp;gt;&lt;br /&gt;                &amp;lt;property name="high" expression="get-property('response_high')"/&amp;gt;&lt;br /&gt;                &amp;lt;property name="low" expression="get-property('response_low')"/&amp;gt;&lt;br /&gt;            &amp;lt;/xslt&amp;gt;&lt;br /&gt;            &amp;lt;send/&amp;gt;&lt;br /&gt;        &amp;lt;/outSequence&amp;gt;&lt;br /&gt;    &amp;lt;/target&amp;gt;&lt;br /&gt;&amp;lt;/proxy&amp;gt;&lt;br /&gt;&amp;lt;localEntry key="xslt-transform-request" src="file:repository/samples/resources/transform/request_transform.xslt"/&amp;gt;&lt;br /&gt;&amp;lt;localEntry key="xslt-transform-response" src="file:repository/samples/resources/transform/response_transform.xslt"/&amp;gt;&lt;br /&gt;&amp;lt;sequence name="fault"&amp;gt;&lt;br /&gt;    &amp;lt;log level="full"&amp;gt;&lt;br /&gt;        &amp;lt;property name="MESSAGE" value="Executing default 'fault' sequence"/&amp;gt;&lt;br /&gt;        &amp;lt;property name="ERROR_CODE" expression="get-property('ERROR_CODE')"/&amp;gt;&lt;br /&gt;        &amp;lt;property name="ERROR_MESSAGE" expression="get-property('ERROR_MESSAGE')"/&amp;gt;&lt;br /&gt;    &amp;lt;/log&amp;gt;&lt;br /&gt;    &amp;lt;drop/&amp;gt;&lt;br /&gt;&amp;lt;/sequence&amp;gt;&lt;br /&gt;&amp;lt;sequence name="main"&amp;gt;&lt;br /&gt;    &amp;lt;in&amp;gt;&lt;br /&gt;        &amp;lt;log level="full"/&amp;gt;&lt;br /&gt;        &amp;lt;filter source="get-property('To')" regex="http://localhost:9000.*"&amp;gt;&lt;br /&gt;            &amp;lt;send/&amp;gt;&lt;br /&gt;        &amp;lt;/filter&amp;gt;&lt;br /&gt;    &amp;lt;/in&amp;gt;&lt;br /&gt;    &amp;lt;out&amp;gt;&lt;br /&gt;        &amp;lt;send/&amp;gt;&lt;br /&gt;    &amp;lt;/out&amp;gt;&lt;br /&gt;&amp;lt;/sequence&amp;gt;&lt;br /&gt;&amp;lt;/definitions&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Following is the xslt transformation (request_transform.xslt) which transforms the request at the ESB.&lt;br /&gt;&lt;pre class="brush:js"&gt;&amp;lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&amp;gt;&lt;br /&gt;&amp;lt;xsl:param name="symbol"/&amp;gt;&lt;br /&gt;&amp;lt;xsl:template match="/"&amp;gt;&lt;br /&gt;    &amp;lt;m0:getQuote xmlns:m0="http://services.samples"&amp;gt;&lt;br /&gt;        &amp;lt;m0:request&amp;gt;&lt;br /&gt;            &amp;lt;m0:symbol&amp;gt;&amp;lt;xsl:value-of select="$symbol"/&amp;gt;&amp;lt;/m0:symbol&amp;gt;&lt;br /&gt;        &amp;lt;/m0:request&amp;gt;&lt;br /&gt;    &amp;lt;/m0:getQuote&amp;gt;&lt;br /&gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Following is the xslt transformation (response_transform.xslt) which transforms the response at the ESB.&lt;br /&gt;&lt;pre class="brush:js"&gt;&amp;lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"&amp;gt;&lt;br /&gt;&amp;lt;xsl:param name="symbol"/&amp;gt;&lt;br /&gt;&amp;lt;xsl:param name="high"/&amp;gt;&lt;br /&gt;&amp;lt;xsl:param name="low"/&amp;gt;&lt;br /&gt;&amp;lt;xsl:template match="/"&amp;gt;&lt;br /&gt;    &amp;lt;m0:getQuote xmlns:m0="http://services.samples"&amp;gt;&lt;br /&gt;        &amp;lt;m0:response&amp;gt;&lt;br /&gt;            &amp;lt;m0:company&amp;gt;&amp;lt;xsl:value-of select="$symbol"/&amp;gt;&amp;lt;/m0:company&amp;gt;&lt;br /&gt;    &amp;lt;m0:high&amp;gt;&amp;lt;xsl:value-of select="$high"/&amp;gt;&amp;lt;/m0:high&amp;gt;&lt;br /&gt;    &amp;lt;m0:low&amp;gt;&amp;lt;xsl:value-of select="$low"/&amp;gt;&amp;lt;/m0:low&amp;gt;&lt;br /&gt;        &amp;lt;/m0:response&amp;gt;&lt;br /&gt;    &amp;lt;/m0:getQuote&amp;gt;&lt;br /&gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The contents of the messages flowing through the ESB&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Request-A&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush:js"&gt;GET /services/ProxyA/company/IBM HTTP/1.1&lt;br /&gt;User-Agent: curl/7.21.0 (x86_64-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18&lt;br /&gt;Host: 127.0.0.1:8281&lt;br /&gt;Accept: */*&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Request-B&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush:js"&gt;POST /services/SimpleStockQuoteService HTTP/1.1&lt;br /&gt;Content-Type: text/xml; charset=UTF-8&lt;br /&gt;Accept: */*&lt;br /&gt;SOAPAction: "urn:getQuote"&lt;br /&gt;Transfer-Encoding: chunked&lt;br /&gt;Host: 127.0.0.1:9001&lt;br /&gt;Connection: Keep-Alive&lt;br /&gt;User-Agent: Synapse-HttpComponents-NIO&lt;br /&gt;&lt;br /&gt;113&lt;br /&gt;&amp;lt;?xml version='1.0' encoding='UTF-8'?&amp;gt;&lt;br /&gt;&amp;lt;soapenv:envelope soapenv="http://schemas.xmlsoap.org/soap/envelope/"&amp;gt;&lt;br /&gt;  &amp;lt;soapenv:body&amp;gt;&lt;br /&gt;     &amp;lt;m0:getquote m0="http://services.samples"&amp;gt;&lt;br /&gt;        &amp;lt;m0:request&amp;gt;&lt;br /&gt;           &amp;lt;m0:symbol&amp;gt;IBM&amp;lt;/m0:symbol&amp;gt;&lt;br /&gt;        &amp;lt;/m0:request&amp;gt;&lt;br /&gt;     &amp;lt;/m0:getQuote&amp;gt;&lt;br /&gt;  &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;&amp;lt;/soapenv:Envelope&amp;gt;0&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Response-C&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush:js"&gt;HTTP/1.1 200 OK&lt;br /&gt;Content-Type: text/xml; charset=UTF-8&lt;br /&gt;Date: Sat, 19 Feb 2011 08:50:01 GMT&lt;br /&gt;Transfer-Encoding: chunked&lt;br /&gt;Connection: Keep-Alive&lt;br /&gt;&lt;br /&gt;40a&lt;br /&gt;&amp;lt;?xml version='1.0' encoding='UTF-8'?&amp;gt;&lt;br /&gt;&amp;lt;soapenv:envelope soapenv="http://schemas.xmlsoap.org/soap/envelope/"&amp;gt;&lt;br /&gt;  &amp;lt;soapenv:body&amp;gt;&lt;br /&gt;     &amp;lt;ns:getquoteresponse ns="http://services.samples"&amp;gt;&lt;br /&gt;        &amp;lt;ns:return ax21="http://services.samples/xsd" xsi="http://www.w3.org/2001/XMLSchema-instance" type="ax21:GetQuoteResponse"&amp;gt;&lt;br /&gt;           &amp;lt;ax21:change&amp;gt;-2.7502820955517455&amp;lt;/ax21:change&amp;gt;&lt;br /&gt;           &amp;lt;ax21:earnings&amp;gt;13.682776182003703&amp;lt;/ax21:earnings&amp;gt;&lt;br /&gt;           &amp;lt;ax21:high&amp;gt;159.3075652956029&amp;lt;/ax21:high&amp;gt;&lt;br /&gt;           &amp;lt;ax21:last&amp;gt;154.1201005301602&amp;lt;/ax21:last&amp;gt;&lt;br /&gt;           &amp;lt;ax21:lasttradetimestamp&amp;gt;Sat Feb 19 14:20:01 IST 2011&amp;lt;/ax21:lastTradeTimestamp&amp;gt;&lt;br /&gt;           &amp;lt;ax21:low&amp;gt;158.77156450332262&amp;lt;/ax21:low&amp;gt;&lt;br /&gt;           &amp;lt;ax21:marketcap&amp;gt;-4211789.232304155&amp;lt;/ax21:marketCap&amp;gt;&lt;br /&gt;           &amp;lt;ax21:name&amp;gt;IBM Company&amp;lt;/ax21:name&amp;gt;&lt;br /&gt;           &amp;lt;ax21:open&amp;gt;161.05685744490376&amp;lt;/ax21:open&amp;gt;&lt;br /&gt;           &amp;lt;ax21:peratio&amp;gt;24.219012038564948&amp;lt;/ax21:peRatio&amp;gt;&lt;br /&gt;           &amp;lt;ax21:percentagechange&amp;gt;1.913224112346585&amp;lt;/ax21:percentageChange&amp;gt;&lt;br /&gt;           &amp;lt;ax21:prevclose&amp;gt;-143.75117257844414&amp;lt;/ax21:prevClose&amp;gt;&lt;br /&gt;           &amp;lt;ax21:symbol&amp;gt;IBM&amp;lt;/ax21:symbol&amp;gt;&lt;br /&gt;           &amp;lt;ax21:volume&amp;gt;6450&amp;lt;/ax21:volume&amp;gt;&lt;br /&gt;        &amp;lt;/ns:return&amp;gt;&lt;br /&gt;     &amp;lt;/ns:getQuoteResponse&amp;gt;&lt;br /&gt;  &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;&amp;lt;/soapenv:Envelope&amp;gt;0&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Response-D&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush:js"&gt;HTTP/1.1 200 OK&lt;br /&gt;Content-Type: application/xml; charset=UTF-8&lt;br /&gt;Date: Sat, 19 Feb 2011 08:50:01 GMT&lt;br /&gt;Transfer-Encoding: chunked&lt;br /&gt;&lt;br /&gt;bc&lt;br /&gt;&amp;lt;m0:getquote m0="http://services.samples"&amp;gt;&lt;br /&gt;&amp;lt;m0:response&amp;gt;&lt;br /&gt;  &amp;lt;m0:company&amp;gt;IBM&amp;lt;/m0:company&amp;gt;&lt;br /&gt;  &amp;lt;m0:high&amp;gt;159.3075652956029&amp;lt;/m0:high&amp;gt;&lt;br /&gt;  &amp;lt;m0:low&amp;gt;158.77156450332262&amp;lt;/m0:low&amp;gt;&lt;br /&gt;&amp;lt;/m0:response&amp;gt;&amp;lt;/m0:getQuote&amp;gt;0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Steps to run the sample&lt;/span&gt;&lt;br /&gt;1) Download WSO2 ESB [&lt;a href="http://wso2.org/downloads/esb"&gt;1&lt;/a&gt;].&lt;br /&gt;&lt;br /&gt;2) Start wso2esb using the startup scripts.&lt;br /&gt;eg: ./wso2server.sh&lt;br /&gt;&lt;br /&gt;3) Login to the WSO2 Management console.&lt;br /&gt;&lt;br /&gt;4) Copy the attached xslt files (ie. request_transform.xslt, response_transform.xslt) to wso2esb-3.0.1/repository/samples/resources/transform directory.&lt;br /&gt;&lt;br /&gt;5) Go to Source View and paste the Synapse configuration to it and hit update.&lt;br /&gt;&lt;br /&gt;6) Start the Axis2 server and deploy the SimpleStockQuoteService if not already done.&lt;br /&gt;i) Run the ant script to build the SimpleStockQuoteService. It is residing in wso2esb-3.0.1/samples/axis2Server/src/SimpleStockQuoteService directory.&lt;br /&gt;ii) Then run the simple axis2Server shipped in with the wso2esb. This can be done by the running the axis2Server startup script inside wso2esb-3.0.1/samples/axis2Server/ directory.&lt;br /&gt;eg: ./axis2server.sh&lt;br /&gt;&lt;br /&gt;7) Execute the following curl command.&lt;br /&gt;eg: curl "http://localhost:8280/services/ProxyA/company/IBM" -v&lt;br /&gt;&lt;br /&gt;Then you will be getting the following response.&lt;br /&gt;eg:&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;* About to connect() to localhost port 8280 (#0)&lt;br /&gt;*   Trying ::1... connected&lt;br /&gt;* Connected to localhost (::1) port 8280 (#0)&lt;br /&gt;&amp;gt; GET /services/ProxyA/company/IBM HTTP/1.1&lt;br /&gt;&amp;gt; User-Agent: curl/7.21.0 (x86_64-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18&lt;br /&gt;&amp;gt; Host: localhost:8280&lt;br /&gt;&amp;gt; Accept: */*&lt;br /&gt;&amp;gt;&lt;br /&gt;&amp;lt; HTTP/1.1 200 OK&lt;br /&gt;&amp;lt; Content-Type: application/xml; charset=UTF-8&lt;br /&gt;&amp;lt; Date: Thu, 10 Feb 2011 07:54:46 GMT&lt;br /&gt;&amp;lt; Transfer-Encoding: chunked&lt;br /&gt;&amp;lt;&lt;br /&gt;* Connection #0 to host localhost left intact&lt;br /&gt;* Closing connection #0&lt;br /&gt;&amp;lt;m0:getQuote xmlns:m0="http://services.samples"&amp;gt;&amp;lt;m0:response&amp;gt;&amp;lt;m0:company&amp;gt;IBM&amp;lt;/m0:company&amp;gt;&amp;lt;m0:high&amp;gt;-81.16785748190335&amp;lt;/m0:high&amp;gt;&amp;lt;m0:low&amp;gt;85.09674577550493&amp;lt;/m0:low&amp;gt;&amp;lt;/m0:response&amp;gt;&amp;lt;/m0:getQuote&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;References&lt;/span&gt;&lt;br /&gt;[1] - &lt;a href="http://wso2.org/downloads/esb"&gt;http://wso2.org/downloads/esb&lt;/a&gt;&lt;br /&gt;[2] - &lt;a href="http://wso2.org/project/esb/java/3.0.1/docs/"&gt;http://wso2.org/project/esb/java/3.0.1/docs/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-1095256504922677938?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/1095256504922677938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=1095256504922677938' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/1095256504922677938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/1095256504922677938'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2011/02/handling-http-get-request-and-invoking.html' title='Handling a http-get request and invoking an external Web service with WSO2 ESB'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-A1PCX3HUnH8/TV-JleEcYcI/AAAAAAAAAIE/dUpzDNKZ29E/s72-c/rest.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-8244182918181080041</id><published>2011-01-30T05:18:00.000-08:00</published><updated>2011-01-30T05:21:18.115-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='Synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='FOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Became a Committer for Apache Synapse</title><content type='html'>I earned &lt;a href="http://old.nabble.com/-VOTE--Heshan-Suriyaarachchi-as-a-committer-for-Synapse-td30759717.html#a30759717"&gt;committership&lt;/a&gt; for Apache &lt;a href="http://synapse.apache.org/"&gt;Synapse&lt;/a&gt; ESB project :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-8244182918181080041?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/8244182918181080041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=8244182918181080041' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8244182918181080041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8244182918181080041'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2011/01/became-committer-for-apache-synapse.html' title='Became a Committer for Apache Synapse'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-5503957308823357723</id><published>2011-01-11T03:58:00.000-08:00</published><updated>2011-01-11T04:23:19.811-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='Synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Apache Synapse Enterprise Service Bus (ESB) - 2.0.0 Released</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Overview&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The Apache Synapse ESB is a robust, lightweight and highly scalable and distributed open source Enterprise Service Bus (ESB). It supports SOAP Web services as well as Legacy services over transports such as JMS, Apache VFS File systems, Mail etc, and SOAP, REST/POX, plain text and binary message payloads. (Please see &lt;a href="http://synapse.apache.org"&gt;http://synapse.apache.org&lt;/a&gt; for more details)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Installation Prerequisites &lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Apache Synapse requires a J2SE runtime of version 1.5.x or later. Running the samples also requires Apache Ant 1.7.x or later. Although Synapse would run with a JDK &gt; 1.5.x, the Script mediator may not properly function on these JDKs. Building Synapse from source requires JDK 1.5.x or later, and Apache Maven 2.1.0 or later&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Quick start&lt;/span&gt;&lt;br /&gt;Please see the &lt;a href="http://synapse.apache.org/Synapse_Quickstart.html"&gt;http://synapse.apache.org/Synapse_Quickstart.html&lt;/a&gt; guide&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Building the Samples&lt;/span&gt;&lt;br /&gt;Please see the documents &lt;a href="http://synapse.apache.org/Synapse_Samples.html"&gt;http://synapse.apache.org/Synapse_Samples.html&lt;/a&gt; and &lt;a href="http://synapse.apache.org/Synapse_Samples_Setup.html"&gt;http://synapse.apache.org/Synapse_Samples_Setup.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Synapse configuration language&lt;/span&gt;&lt;br /&gt;Please see the document &lt;a href="http://synapse.apache.org/Synapse_Configuration_Language.html"&gt;http://synapse.apache.org/Synapse_Configuration_Language.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Extending Synapse&lt;/span&gt;&lt;br /&gt;Please see the document &lt;a href="http://synapse.apache.orgs/Synapse_Extending.html"&gt;http://synapse.apache.orgs/Synapse_Extending.html&lt;/a&gt;&lt;br /&gt;   &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Known Issues and limitations&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SYNAPSE-180 Does not support throttling by concurrency within a cluster&lt;/li&gt;&lt;li&gt;SYNAPSE-186 Does not support HTTP some of the REST operations (such as put/delete etc)&lt;/li&gt;&lt;li&gt;SYNAPSE-181 Does not yet support JTA transactions&lt;/li&gt;&lt;li&gt;SYNAPSE-330 Does not yet support load balancing with session affinity using SOAP sessions&lt;/li&gt;&lt;li&gt;SYNAPSE-280 Does not preserve CDATA sections within payloads&lt;/li&gt;&lt;li&gt;SYNAPSE-307 The XSLT mediator will not report errors encountered in a provided stylesheet&lt;/li&gt;&lt;li&gt;The Synapse JMS implementation supports JMS 1.0.2b, however due to licensing issues we includethe JMS 1.1 spec JAR from Apache Geronimo (geronimo-jms_1.1_spec-1.1.jar) instead. If you have any issues with JMS 1.0.x, please download the Sun JMS 1.0.2b JAR and replace supplied JAR from Geronimo.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Frequently asked questions&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;How can I change the default logging level of Synapse? Edit the lib/log4j.properties and set the line "log4j.category.org.apache.synapse=INFO" to "log4j.category.org.apache.synapse=DEBUG" and restart Synapse.&lt;/li&gt;&lt;li&gt;If you get an error related to WS-Security or when using it, check to ensure that your JDK uses the "Unlimited Strength Jurisdiction Policy Files". These could be downloaded from http://java.sun.com/javase/downloads/index_jdk5.jsp Refer to the associated documentation for instructions on how to install it to your JDK.&lt;/li&gt;&lt;li&gt;If you encounter issues with your JDK related to XML processing, try placing the Xerces jar files xercesImpl-2.8.0.jar and xml-apis-1.3.03.jar in your &lt;jdk&gt;/jre/lib/endorsed/ directory.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Reporting Problems&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Please use the Apache JIRA system (&lt;a href="http://issues.apache.org/jira/browse/SYNAPSE"&gt;http://issues.apache.org/jira/browse/SYNAPSE&lt;/a&gt;) to report issues&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;You may also join the: synapse-dev mailing  list by sending email to &lt;a href="dev-subscribe@synapse.apache.org"&gt;dev-subscribe@synapse.apache.org&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;synapse-user mailing list by sending email to &lt;a href="user-subscribe@synapse.apache.org"&gt;user-subscribe@synapse.apache.org&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;New features in the Synapse 2.0.0 release&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; New, fine-grained configuration model&lt;/li&gt;&lt;li&gt; Hot deployment and hot update support for configuration artifacts&lt;/li&gt;&lt;li&gt; Priority based mediation support&lt;/li&gt;&lt;li&gt; Comprehensive eventing capabilities with WS-Eventing support&lt;/li&gt;&lt;li&gt; Secure vault for encrypting passwords in configuration files&lt;/li&gt;&lt;li&gt; File locking support in the VFS transport for concurrent polling&lt;/li&gt;&lt;li&gt; URLRewrite medaitor for fast and simple URL rewriting&lt;/li&gt;&lt;li&gt; Synapse configuration observer API&lt;/li&gt;&lt;li&gt; Multiple identity support in the HTTPS transport&lt;/li&gt;&lt;li&gt; Enhanced JMX monitoring support for the NHTTP transport&lt;/li&gt;&lt;li&gt; Dead letter channel implementation (experimental)&lt;/li&gt;&lt;li&gt; Synapse XAR Maven plugin for generating configuration artifacts&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-5503957308823357723?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/5503957308823357723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=5503957308823357723' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/5503957308823357723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/5503957308823357723'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2011/01/apache-synapse-enterprise-service-bus.html' title='Apache Synapse Enterprise Service Bus (ESB) - 2.0.0 Released'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-1708399009378859710</id><published>2011-01-05T23:12:00.000-08:00</published><updated>2011-02-11T01:21:50.557-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>SFTP file transer with WSO2 ESB.</title><content type='html'>&lt;div style="text-align: justify;"&gt;The VFS transport implementation is based on Apache Commons VFS implementation. VFS (Virtual File System) transport implementation is a module which belongs to the Apache Synapse project. It has a set of service level parameters that needs to be specified for each service.&lt;br /&gt;&lt;br /&gt;VFS service level parameters and their descriptions can be found in [&lt;a href="http://wso2.org/project/esb/java/3.0.1/docs/transports/transports-catalog.html#VfsTrp"&gt;1&lt;/a&gt;] and the endpoint formats can be found in [&lt;a href="http://commons.apache.org/vfs/filesystems.html#SFTP"&gt;2&lt;/a&gt;].&lt;br /&gt;&lt;br /&gt;Following is a sftp sample for ESB 3.0.1. It copies a file from one sftp location to another sftp folder. SFTPVFSProxy is the proxy service which copies file from one sftp location to another.&lt;br /&gt;&lt;br /&gt;If you need further information or need help troubleshooting this sample refer [&lt;a href="http://wso2.org/library/tutorials/2011/01/sftp-file-transer-wso2-esb"&gt;5&lt;/a&gt;].&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;&amp;lt;proxy name="SFTPVFSProxy" transports="vfs" startOnLoad="true" xmlns="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt;     &amp;lt;target&amp;gt;&lt;br /&gt;         &amp;lt;inSequence&amp;gt;&lt;br /&gt;             &amp;lt;log level="full"/&amp;gt;&lt;br /&gt;             &amp;lt;property name="File" expression="fn:concat('test-', get-property('transport', 'FILE_PATH'))" scope="default"/&amp;gt;&lt;br /&gt;             &amp;lt;property name="transport.vfs.ReplyFileName" expression="fn:concat(fn:substring-after(get-property('MessageID'), 'urn:uuid:'), '.xml')" scope="transport"/&amp;gt;&lt;br /&gt;             &amp;lt;property name="OUT_ONLY" value="true"/&amp;gt;&lt;br /&gt;             &amp;lt;send&amp;gt;&lt;br /&gt;                 &amp;lt;endpoint name="endpoint_urn_uuid_A1546EFFD75FC9CCED785986339425964585275"&amp;gt;&lt;br /&gt;                     &amp;lt;address uri="vfs:sftp://heshan:password@10.101.1.112/home/heshan/out"/&amp;gt;&lt;br /&gt;                 &amp;lt;/endpoint&amp;gt;&lt;br /&gt;             &amp;lt;/send&amp;gt;&lt;br /&gt;         &amp;lt;/inSequence&amp;gt;&lt;br /&gt;     &amp;lt;/target&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="transport.vfs.ActionAfterProcess"&amp;gt;MOVE&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="transport.PollInterval"&amp;gt;15&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="transport.vfs.MoveAfterProcess"&amp;gt;vfs:sftp://heshan:password@10.101.1.112/home/heshan/original&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="transport.vfs.FileURI"&amp;gt;vfs:sftp://heshan:password@10.101.1.112/home/heshan/in/test.xml&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="transport.vfs.MoveAfterFailure"&amp;gt;vfs:sftp://heshan:password@10.101.1.112/home/heshan/original&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="transport.vfs.FileNamePattern"&amp;gt;.*.xml&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="transport.vfs.ContentType"&amp;gt;application/xml&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="transport.vfs.ActionAfterFailure"&amp;gt;MOVE&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/proxy&amp;gt;&lt;br /&gt;&lt;/pre&gt;Following is the XML file (test.xml) that is being moved.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing"&amp;gt;&lt;br /&gt;  &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;      &amp;lt;getQuote xmlns="http://services.samples"&amp;gt;&lt;br /&gt;          &amp;lt;request&amp;gt;&lt;br /&gt;              &amp;lt;symbol&amp;gt;IBM&amp;lt;/symbol&amp;gt;&lt;br /&gt;          &amp;lt;/request&amp;gt;&lt;br /&gt;      &amp;lt;/getQuote&amp;gt;&lt;br /&gt;  &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;&amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;If you are interested in trying out more VFS samples, refer [&lt;a href="http://wso2.org/project/esb/java/3.0.1/docs/samples/transport_samples.html#Sample254"&gt;3&lt;/a&gt;] and [&lt;a href="http://wso2.org/project/esb/java/3.0.1/docs/samples/transport_samples.html#Sample255"&gt;4&lt;/a&gt;].&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;[1] - &lt;a href="http://wso2.org/project/esb/java/3.0.1/docs/transports/transports-catalog.html#VfsTrp"&gt;http://wso2.org/project/esb/java/3.0.1/docs/transports/transports-catalog.html#VfsTrp&lt;/a&gt;&lt;br /&gt;[2] - &lt;a href="http://commons.apache.org/vfs/filesystems.html#SFTP"&gt;http://commons.apache.org/vfs/filesystems.html#SFTP&lt;/a&gt;&lt;br /&gt;[3] - &lt;a href="http://wso2.org/project/esb/java/3.0.1/docs/samples/transport_samples.html#Sample254"&gt;http://wso2.org/project/esb/java/3.0.1/docs/samples/transport_samples.html#Sample254&lt;/a&gt;&lt;br /&gt;[4] - &lt;a href="http://wso2.org/project/esb/java/3.0.1/docs/samples/transport_samples.html#Sample255"&gt;http://wso2.org/project/esb/java/3.0.1/docs/samples/transport_samples.html#Sample255&lt;/a&gt;&lt;br /&gt;[5] - &lt;a href="http://wso2.org/library/tutorials/2011/01/sftp-file-transer-wso2-esb"&gt;http://wso2.org/library/tutorials/2011/01/sftp-file-transer-wso2-esb&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-1708399009378859710?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/1708399009378859710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=1708399009378859710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/1708399009378859710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/1708399009378859710'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2011/01/sftp-file-transer-with-wso2-esb.html' title='SFTP file transer with WSO2 ESB.'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-8225706911275332545</id><published>2010-11-23T22:32:00.000-08:00</published><updated>2010-11-23T22:36:38.890-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><title type='text'>Debug Carbon server when it is started as a daemon</title><content type='html'>&lt;div style="text-align: justify;"&gt;WSO2 Carbon Server can be run as a daemon on Unix/Linux systems. Say for instance that you need to remote debug the server when it is started as a daemon. This blogpost will be discussing $subject.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;1) Open up the wrapper.conf file.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;heshan@heshan-ThinkPad:~/Dev/customer/wso2esb-3.0.1/bin$ vim ../repository/conf/wrapper.conf&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2) Add following entries to the wrapper.conf.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;wrapper.java.additional.20=-Xdebug&lt;br /&gt;wrapper.java.additional.21=-Xnoagent&lt;br /&gt;wrapper.java.additional.22=-Djava.compiler=NONE&lt;br /&gt;wrapper.java.additional.23=-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;3) Start the ESB as a daemon.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;heshan@heshan-ThinkPad:~/Dev/customer/wso2esb-3.0.1/bin$ ./wso2server.sh start&lt;br /&gt;Starting WSO2 ESB v3.0.1...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;4) Start the debugger.&lt;br /&gt;&lt;br /&gt;5) Monitor the log.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;heshan@heshan-ThinkPad:~/Dev/customer/wso2esb-3.0.1/bin$ tail -f ../repository/logs/wrapper.log&lt;br /&gt;INFO   | jvm 1    | 2010/11/24 11:35:09 |   object space 84224K, 76% used [0x00007fbfcff20000,0x00007fbfd3e0dff0,0x00007fbfd5160000)&lt;br /&gt;STATUS | wrapper  | 2010/11/24 11:35:09 | &lt;-- Wrapper Stopped STATUS | wrapper  | 2010/11/24 11:45:46 | --&gt; Wrapper Started as Daemon&lt;br /&gt;WARN   | wrapper  | 2010/11/24 11:45:46 | ------------------------------------------------------------------------&lt;br /&gt;WARN   | wrapper  | 2010/11/24 11:45:46 | The JVM is being launched with a debugger enabled and could possibly be&lt;br /&gt;WARN   | wrapper  | 2010/11/24 11:45:46 | suspended.  To avoid unwanted shutdowns, timeouts will be disabled,&lt;br /&gt;WARN   | wrapper  | 2010/11/24 11:45:46 | removing the ability to detect and restart frozen JVMs.&lt;br /&gt;WARN   | wrapper  | 2010/11/24 11:45:46 | ------------------------------------------------------------------------&lt;br /&gt;STATUS | wrapper  | 2010/11/24 11:45:46 | Launching a JVM...&lt;br /&gt;INFO   | jvm 1    | 2010/11/24 11:45:46 | Listening for transport dt_socket at address: 5005&lt;br /&gt;INFO   | jvm 1    | 2010/11/24 11:45:56 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org&lt;br /&gt;INFO   | jvm 1    | 2010/11/24 11:45:56 |   Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.&lt;br /&gt;INFO   | jvm 1    | 2010/11/24 11:45:56 |&lt;br /&gt;INFO   | jvm 1    | 2010/11/24 11:45:56 | [2010-11-24 11:45:56,845]  INFO - Main Initializing system...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now you have successfully debugged the Carbon Server, when it is started as a daemon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-8225706911275332545?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/8225706911275332545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=8225706911275332545' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8225706911275332545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8225706911275332545'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/11/debug-carbon-server-when-it-is-started.html' title='Debug Carbon server when it is started as a daemon'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-854267794286564640</id><published>2010-10-29T21:13:00.000-07:00</published><updated>2010-10-29T21:54:41.613-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Basketball'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>WSO2 Basketball finals 2010</title><content type='html'>&lt;span style="font-weight: bold;"&gt;QUALIFYING MATCHES&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The 3rd annual WSO2 Basketball tournament was held over the month of October. We had 4 teams and 6 qualifying matches leading up to the finals. Wild Boars and Legions were  the teams with the leading scores and they were chosen to be in the finals. When comparing with last 2 years, this time around every team had a balanced set of players. It can be seen by results of the preliminary round matches, where 3 teams had won 2 out of 3 matches they faced. Therefore, we had to choose the finalists by getting the accumulated scores of each team.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;THE TEAMS&lt;/span&gt;&lt;br /&gt;The Legions were led by our CEO, &lt;a href="http://sanjiva.weerawarana.org/"&gt;Dr. Sanjiva Weerawarna&lt;/a&gt; and the Wild Boars were led by our VP of Engineering, &lt;a href="http://samisa-abeysinghe.blogspot.com/"&gt;Samisa Abeysinghe&lt;/a&gt;.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;====================================================&lt;br /&gt;Legions              |         Wild Boars       |&lt;br /&gt;====================================================&lt;br /&gt;Amal Rangana            |Amila Suriyarachchi       |&lt;br /&gt;Chamara Silva           |Asanka Abeysinghe (VC)    |&lt;br /&gt;Chanaka Jayasena        |Asela Pathberiya          |&lt;br /&gt;Danushka Menikkumbura   |Deependra Ariyadewa       |&lt;br /&gt;Flora Ariyapala         |Dimuthu Leelarathne       |&lt;br /&gt;Gayani Rajanayake       |Hasmin Abdul Cader        |&lt;br /&gt;Isuru Suriarachchi      |Heshan Suriyarachchi      |&lt;br /&gt;Janath Sivayoganathan   |Milinda Lakmal Pathirage  |&lt;br /&gt;Kalpani Wanigaratne     |Nandika Jayawardana       |&lt;br /&gt;Mahesh Marcus           |Rajika Kumasiri           |&lt;br /&gt;Sanjiva Weerawarana (C) |Samisa Abeysinghe (C)     |&lt;br /&gt;Srinath Perera          |Sumedha Rubasinghe        |&lt;br /&gt;Tharindu Mathew         |Udeshika Ratnavira        |&lt;br /&gt;Thilina Buddika         |Thilanga Pitigala         |&lt;br /&gt;Waruna Ranasinghe       |Anjana Fernando           |&lt;br /&gt;Miyuru Daminda          |Yasith Nakandana          |&lt;br /&gt;Kasun Indrasiri         |Lavi De Silva             |&lt;br /&gt;Gayani Marasinghe       |Sanjaya Vithanagama       |&lt;br /&gt;Pavithra Madurangi      |Denis Perera              |&lt;br /&gt;Arjuna Samaraweera      |Shammi Jayasinghe         |&lt;br /&gt;Asiri Rathnayake        |P.K.A. Thilini Ishaka     |&lt;br /&gt;Eshara Kalpanie Fonseka |Kathiravelu Pradeeban     |&lt;br /&gt;Janaka Ranabahu         |Udayanga Wickramasinghe   |&lt;br /&gt;Sarasi Madushika        |Pradeep Fernando          |&lt;br /&gt;Nirdesha Munasinghe     |Hasini Gunasinghe         |&lt;br /&gt;Charith Wickramarachchi |Hasini Yatawatte          |&lt;br /&gt;Dinusha Dilrukshi       |Sanjeewa Mallalgoda       |&lt;br /&gt;Manisha Ellaperuma      |                          |&lt;br /&gt;Meeyoni Fernando        |                          |&lt;br /&gt;====================================================&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;THE FINAL&lt;/span&gt;&lt;br /&gt;It was a rain hit final and we played in our usual outdoor Basketball court - the car-park ;). Eventhough it was raining we could see the crowd standing around the court and cheering for their favourites.&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_FP-C7_Sg888/TMujPPGi8ZI/AAAAAAAAAHo/V7p3H5oI2I4/s1600/legions.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 192px; height: 207px;" src="http://4.bp.blogspot.com/_FP-C7_Sg888/TMujPPGi8ZI/AAAAAAAAAHo/V7p3H5oI2I4/s320/legions.png" alt="" id="BLOGGER_PHOTO_ID_5533696049302139282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The Legions started playing very aggressively from the word go and they were determind to not let the Championship slip away from them. Wildboars on the other hand was equal to the task and did not want to repeat the 2009 finals (in which WBs became runners up). It was an evenly contested match and The Legions were leading at half time whisle. Although they were leading, the Wild Boars were not too far behind (I can't recall the half-time score).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_FP-C7_Sg888/TMui3RUyLWI/AAAAAAAAAHg/Zv4wikdwaT4/s1600/wildboars.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 224px; height: 193px;" src="http://1.bp.blogspot.com/_FP-C7_Sg888/TMui3RUyLWI/AAAAAAAAAHg/Zv4wikdwaT4/s320/wildboars.png" alt="" id="BLOGGER_PHOTO_ID_5533695637581868386" border="0" /&gt;&lt;/a&gt;Then we started the second half. In the second half Wild Boars caught up to Legions score. I remember a point where the scores were levelled at 36-all. From this point onwards, non of the two teams didn't let the other take the lead for more than 2 points. It was showing the symptoms of going for an extra time ending.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;FINAL WORKOUT&lt;/span&gt;&lt;br /&gt;As the game progressed, I was getting the feeling that the game should be finished by now. So I asked Pumika who was near the stop clock, "how much time left?". She told me 30 seconds. I instantly thought of getting a timeout, but since we had the ball in our hand and we were attacking, I didnt want to take a timeout. (At that point if I took a timeout, it will inturn let the Legions know of the stop clock. Therefore, I opted not to take a timeout :) )&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.asanka.org/"&gt;Asanka&lt;/a&gt; was controlling the ball at that time. I shouted at him "SHOOT! SHOOT!" (BTW, the scores were levelled at this point, 42-all). I don't know whether he heard my screms in the middle of the roar from the crowd. Anjana, Ude and I, was guarded by the defenders. Asanka, cleverly dribbled towards the baseline, which resulted in two defenders going towrds him to guard his move. That move, freed Samisa (the defender that should guard Samisa was now defending Asanka). Then Asanka passed the ball back to Samisa, who hit a long range 2 pointer to seal the win for the Wild Boars. That marked the end of a nail biting final. A final which I will remember for a long time. :)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_FP-C7_Sg888/TMuiZKRRVEI/AAAAAAAAAHY/d-GOOGzOHKE/s1600/73525_443927856710_626286710_5852307_630521_n.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 213px;" src="http://3.bp.blogspot.com/_FP-C7_Sg888/TMuiZKRRVEI/AAAAAAAAAHY/d-GOOGzOHKE/s320/73525_443927856710_626286710_5852307_630521_n.jpg" alt="" id="BLOGGER_PHOTO_ID_5533695120292009026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hats off to Legions for giving such a good game and in my book, both the teams were winners that night. They both fought hard to win the Championship. If you have a look back at the Legions past performances, this is a significant improvement from their side.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;SCORE SHEETS&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;==============================================================&lt;br /&gt;Date                     |    Teams                     |Score&lt;br /&gt;==============================================================&lt;br /&gt;Wednesday 6th 4.00 pm    | Cloud bots Vs. Titans        |31:53&lt;br /&gt;Thursday 7th 4.00 pm     | Legion Vs. Wild Boars        |23:34&lt;br /&gt;Tuesday 12th 4.00 pm     | Titans Vs. Wild Boars        |33:28&lt;br /&gt;Thursday 14th 4.00 pm    | Cloud bots Vs. Legion        |22:54&lt;br /&gt;Tuesday 19th 4.00 pm     | Cloud bots Vs. Wild Boars    |34:61&lt;br /&gt;Thursday 21st 4.00 pm    | Titans Vs. Legion            |29:40&lt;br /&gt;Tuesday 26th 4.00 pm     | Cloud bots Vs. Titans        |41:72&lt;br /&gt;Thursday 28th 7.00 pm    | Wild Boars Vs. Legions       |44:42&lt;br /&gt;==============================================================&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;OBSERVAIONS&lt;/span&gt;&lt;br /&gt;Piyumika was the main person responsible for organizing this year's tournament. She had given attention to detail in organizing this very successful event which everyone enjoyed very much. I take this opportunity to thank (on behalf of all the players) Piyumika and her team for making this a memorable night. Specially the idea to bring in a face painter added color to the event :).&lt;br /&gt;&lt;br /&gt;I take the this opportunity to thank the crowd (who came to cheer for us or against us) who supported the players throughout this tournament. If it wasn't for ya'll it wont be an entertaining tournament like this.&lt;br /&gt;&lt;br /&gt;As &lt;a href="http://isurues.wordpress.com/"&gt;Isuru&lt;/a&gt; pointed out the other day, we did not have any serious injuries (broken bones, torn muscles, etc:) ) during this tournament. That means we are starting to play real Basketball and we have moved away from playing the Rugby+Basketball [&lt;a href="http://heshans.blogspot.com/2009/10/basketball-wso2-how-to-survive.html"&gt;2&lt;/a&gt;] hybrid, that we were used to play :D.&lt;br /&gt;&lt;br /&gt;I am finishing off this post with an extract from a Fort Minor song.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;This is ten percent luck, twenty percent skill&lt;br /&gt;Fifteen percent concentrated power of will&lt;br /&gt;Five percent pleasure, fifty percent pain&lt;br /&gt;And a hundred percent reason to remember the name&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Related Posts&lt;br /&gt;[1] - &lt;a href="http://heshans.blogspot.com/2008/10/internship-wso2.html"&gt;http://heshans.blogspot.com/2008/10/internship-wso2.html&lt;/a&gt;&lt;br /&gt;[2] - &lt;a href="http://heshans.blogspot.com/2009/10/basketball-wso2-how-to-survive.html"&gt;http://heshans.blogspot.com/2009/10/basketball-wso2-how-to-survive.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pictures courtesy of Chinthana Wilmuna.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-854267794286564640?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/854267794286564640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=854267794286564640' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/854267794286564640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/854267794286564640'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/10/wso2-basketball-finals-2010.html' title='WSO2 Basketball finals 2010'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FP-C7_Sg888/TMujPPGi8ZI/AAAAAAAAAHo/V7p3H5oI2I4/s72-c/legions.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-3649536635275773818</id><published>2010-10-25T05:41:00.000-07:00</published><updated>2010-11-02T00:00:16.885-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><title type='text'>Generate custom Error messages with WSO2 ESB</title><content type='html'>In this blogpost we will be looking at how to generate a soap fault using the makefault mediator. In addition to that I will show how to embed a custom message within that soap fault. Inorder to achieve this goal we will be using the makefault mediator and a script mediator.&lt;br /&gt;&lt;br /&gt;The Synapse configuration used:&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;definitions xmlns="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt;&amp;lt;localEntry key="detailsTransformScript" src="file:repository/samples/resources/script/detailTransform.js"/&amp;gt;&lt;br /&gt;&amp;lt;sequence name="myFaultHandler"&amp;gt;&lt;br /&gt;    &amp;lt;property name="uniqueKey" value="123" scope="default" type="STRING"/&amp;gt;&lt;br /&gt;    &amp;lt;property name="customErrorCode" value="8719" scope="default" type="STRING"/&amp;gt;&lt;br /&gt;    &amp;lt;property name="customErrorText" value="Issue has " scope="default" type="STRING"/&amp;gt;&lt;br /&gt;    &amp;lt;property name="customTime" expression="get-property('SYSTEM_DATE')" scope="default" type="STRING"/&amp;gt;&lt;br /&gt;    &amp;lt;script language="js" key="detailsTransformScript" function="transformDetail"/&amp;gt;&lt;br /&gt;    &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;        &amp;lt;property name="Detail" expression="get-property('customErrorDetail')"/&amp;gt;&lt;br /&gt;    &amp;lt;/log&amp;gt;&lt;br /&gt;    &amp;lt;makefault version="soap11"&amp;gt;&lt;br /&gt;        &amp;lt;code xmlns:tns="http://www.w3.org/2003/05/soap-envelope" value="tns:Receiver"/&amp;gt;&lt;br /&gt;        &amp;lt;reason expression="get-property('ERROR_MESSAGE')"/&amp;gt;&lt;br /&gt;        &amp;lt;detail expression="get-property('customErrorDetail')"/&amp;gt;&lt;br /&gt;    &amp;lt;/makefault&amp;gt;&lt;br /&gt;    &amp;lt;send/&amp;gt;&lt;br /&gt;&amp;lt;/sequence&amp;gt;&lt;br /&gt;&amp;lt;sequence name="fault"&amp;gt;&lt;br /&gt;    &amp;lt;log level="full"&amp;gt;&lt;br /&gt;        &amp;lt;property name="MESSAGE" value="Executing default "fault" sequence"/&amp;gt;&lt;br /&gt;        &amp;lt;property name="ERROR_CODE" expression="get-property('ERROR_CODE')"/&amp;gt;&lt;br /&gt;        &amp;lt;property name="ERROR_MESSAGE" expression="get-property('ERROR_MESSAGE')"/&amp;gt;&lt;br /&gt;    &amp;lt;/log&amp;gt;&lt;br /&gt;    &amp;lt;drop/&amp;gt;&lt;br /&gt;&amp;lt;/sequence&amp;gt;&lt;br /&gt;&amp;lt;sequence name="main" onError="myFaultHandler"&amp;gt;&lt;br /&gt;    &amp;lt;in&amp;gt;&lt;br /&gt;        &amp;lt;switch xmlns:m0="http://services.samples" source="//m0:getQuote/m0:request/m0:symbol"&amp;gt;&lt;br /&gt;            &amp;lt;case regex="MSFT"&amp;gt;&lt;br /&gt;                &amp;lt;send&amp;gt;&lt;br /&gt;                    &amp;lt;endpoint name="endpoint_urn_uuid_F3FC39CF93F681A11649593938524451942754528"&amp;gt;&lt;br /&gt;                        &amp;lt;address uri="http://bogus:9000/services/NonExistentStockQuoteService"/&amp;gt;&lt;br /&gt;                    &amp;lt;/endpoint&amp;gt;&lt;br /&gt;                &amp;lt;/send&amp;gt;&lt;br /&gt;            &amp;lt;/case&amp;gt;&lt;br /&gt;            &amp;lt;case regex="SUN"&amp;gt;&lt;br /&gt;                &amp;lt;send&amp;gt;&lt;br /&gt;                    &amp;lt;endpoint name="endpoint_urn_uuid_F3FC39CF93F681A1164959398253284-1608236576"&amp;gt;&lt;br /&gt;                        &amp;lt;address uri="http://localhost:9009/services/NonExistentStockQuoteService"/&amp;gt;&lt;br /&gt;                    &amp;lt;/endpoint&amp;gt;&lt;br /&gt;                &amp;lt;/send&amp;gt;&lt;br /&gt;            &amp;lt;/case&amp;gt;&lt;br /&gt;        &amp;lt;/switch&amp;gt;&lt;br /&gt;        &amp;lt;drop/&amp;gt;&lt;br /&gt;    &amp;lt;/in&amp;gt;&lt;br /&gt;    &amp;lt;out&amp;gt;&lt;br /&gt;        &amp;lt;send/&amp;gt;&lt;br /&gt;    &amp;lt;/out&amp;gt;&lt;br /&gt;&amp;lt;/sequence&amp;gt;&lt;br /&gt;&amp;lt;/definitions&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The javascript file used in the script mediator:&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt; function transformDetail(mc) {&lt;br /&gt;     var symbol = mc.getPayloadXML()..*::Code.toString();&lt;br /&gt;     var errorCode = mc.getProperty("customErrorCode");&lt;br /&gt;     var errorText = mc.getProperty("customErrorText");&lt;br /&gt;     var time = mc.getProperty('customTime');&lt;br /&gt;     mc.setProperty("customErrorDetail", &amp;lt;AppErrorCode&amp;gt;&amp;lt;TimeStamp&amp;gt;{time}&amp;lt;/TimeStamp&amp;gt;&amp;lt;ErrorCode&amp;gt;{errorCode}&amp;lt;/ErrorCode&amp;gt;&amp;lt;ErrorText&amp;gt;{errorText}&amp;lt;/ErrorText&amp;gt;&amp;lt;/AppErrorCode&amp;gt;);&lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Instructions to run the sample.&lt;br /&gt;1) Copy the attached javascript file to ESB_HOME/repository/samples/resources/script/ directory.&lt;br /&gt;&lt;br /&gt;2) Startup the ESB instance. Copy the attached synapse configuration to source view of the Management UI and hit update.&lt;br /&gt;&lt;br /&gt;3) Start the Axis2 server and deploy the SimpleStockQuoteService if not already done.&lt;br /&gt;&lt;br /&gt;4) Execute the client using following command.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dsymbol=MSFT&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;5) Monitor the response message with TCPMon.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;HTTP/1.1 500 Internal Server Error&lt;br /&gt;Content-Type: text/xml; charset=UTF-8&lt;br /&gt;Host: 127.0.0.1:8281&lt;br /&gt;SOAPAction: "urn:getQuote"&lt;br /&gt;Date: Thu, 21 Oct 2010 09:52:23 GMT&lt;br /&gt;Transfer-Encoding: chunked&lt;br /&gt;&lt;br /&gt;338&lt;br /&gt;&amp;lt;?xml version='1.0' encoding='UTF-8'?&amp;gt;&lt;br /&gt;&amp;lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"&amp;gt;&lt;br /&gt;  &amp;lt;soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"&amp;gt;&lt;br /&gt;     &amp;lt;wsa:MessageID&amp;gt;urn:uuid:952C448142FB1B1FE925278283667424-1166645935&amp;lt;/wsa:MessageID&amp;gt;&lt;br /&gt;     &amp;lt;wsa:Action&amp;gt;urn:getQuote&amp;lt;/wsa:Action&amp;gt;&lt;br /&gt;     &amp;lt;wsa:RelatesTo&amp;gt;urn:uuid:6DDD0BCE4CDCFB5AFD1287654743750&amp;lt;/wsa:RelatesTo&amp;gt;&lt;br /&gt;  &amp;lt;/soapenv:Header&amp;gt;&lt;br /&gt;  &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;     &amp;lt;soapenv:Fault&amp;gt;&lt;br /&gt;        &amp;lt;faultcode xmlns:tns="http://www.w3.org/2003/05/soap-envelope"&amp;gt;tns:Receiver&amp;lt;/faultcode&amp;gt;&lt;br /&gt;        &amp;lt;faultstring&amp;gt;Connection refused or failed for : bogus:9000, IO Exception occured : bogus&amp;lt;/faultstring&amp;gt;&lt;br /&gt;        &amp;lt;detail&amp;gt;&lt;br /&gt;&amp;lt;AppErrorCode&amp;gt;&lt;br /&gt;&amp;lt;TimeStamp&amp;gt;10/21/10 3:22 PM&amp;lt;/TimeStamp&amp;gt;&lt;br /&gt;&amp;lt;ErrorCode&amp;gt;8719&amp;lt;/ErrorCode&amp;gt;&lt;br /&gt;&amp;lt;ErrorText&amp;gt;A custom issue has occured&amp;lt;/ErrorText&amp;gt;&lt;br /&gt;&amp;lt;/AppErrorCode&amp;gt;&amp;lt;/detail&amp;gt;&lt;br /&gt;     &amp;lt;/soapenv:Fault&amp;gt;&lt;br /&gt;  &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;&amp;lt;/soapenv:Envelope&amp;gt;0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;As you can see we have added a custom details element which is containing some information that you would like to generate.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Further Reading &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[1]&lt;/span&gt; - Refer transport ERROR codes in &lt;a href="https://svn.apache.org/repos/asf/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java"&gt;https://svn.apache.org/repos/asf/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[2]&lt;/span&gt; - Property Mediator section of the WSO2 ESB Configuration language&lt;br /&gt;&lt;a href="http://wso2.org/project/esb/java/3.0.1/docs/configuration_language.html#property"&gt;http://wso2.org/project/esb/java/3.0.1/docs/configuration_language.html#property&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[3]&lt;/span&gt; - WSO2 ESB error handling samples.&lt;br /&gt;&lt;a href="http://wso2.org/project/esb/java/3.0.1/docs/samples/message_mediation_samples.html#Sample4"&gt;http://wso2.org/project/esb/java/3.0.1/docs/samples/message_mediation_samples.html#Sample4&lt;/a&gt;&lt;br /&gt;&lt;a href="http://wso2.org/project/esb/java/3.0.1/docs/samples/message_mediation_samples.html#Sample5"&gt;http://wso2.org/project/esb/java/3.0.1/docs/samples/message_mediation_samples.html#Sample5&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;[4]&lt;/span&gt; - We are having built in Error Codes for transport related errors. Say for instance that you need to handle an error related to an XML format error. That kind of issues can be resolved by using fault handlers.&lt;br /&gt;eg: If a sequence fail in an XSLT transformation phase due to to an XML format error, you can register a fault handler for a sequence to handle it. For more information read &lt;a href="http://techfeast-hiranya.blogspot.com/2010/04/wso2-esb-tips-tricks-05-error-handling.html"&gt;Error Handling with Sequences and Proxy Services&lt;/a&gt; .&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-3649536635275773818?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/3649536635275773818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=3649536635275773818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/3649536635275773818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/3649536635275773818'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/10/generate-custom-error-messages-with.html' title='Generate custom Error messages with WSO2 ESB'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-8252157221087546180</id><published>2010-10-19T17:02:00.000-07:00</published><updated>2010-10-19T17:10:52.485-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><title type='text'>Send HTML format email from WSO2 ESB</title><content type='html'>1. Enable mail transport sender and transport listener in the axis2.xml.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;&amp;lt;transportSender name="mailto" &amp;lt;transportSender name="mailto" class="org.apache.axis2.transport.mail.MailTransportSender"&amp;gt;&lt;br /&gt;        &amp;lt;parameter name="mail.smtp.host"&amp;gt;smtp.gmail.com&amp;lt;/parameter&amp;gt;&lt;br /&gt;        &amp;lt;parameter name="mail.smtp.port"&amp;gt;587&amp;lt;/parameter&amp;gt;&lt;br /&gt;        &amp;lt;parameter name="mail.smtp.starttls.enable"&amp;gt;true&amp;lt;/parameter&amp;gt;&lt;br /&gt;        &amp;lt;parameter name="mail.smtp.auth"&amp;gt;true&amp;lt;/parameter&amp;gt;&lt;br /&gt;        &amp;lt;parameter name="mail.smtp.user"&amp;gt;synapse.demo.0&amp;lt;/parameter&amp;gt;&lt;br /&gt;        &amp;lt;parameter name="mail.smtp.password"&amp;gt;mailpassword&amp;lt;/parameter&amp;gt;&lt;br /&gt;        &amp;lt;parameter name="mail.smtp.from"&amp;gt;synapse.demo.0@gmail.com&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/transportSender&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;transportReceiver name="mailto" class="org.apache.axis2.transport.mail.MailTransportListener"/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2. Register the ApplicationXMLFormatter as the formatter for text/html content type in the axis2.xml&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;&amp;amp;lt:messageFormatter contentType="text/html" class="org.apache.axis2.transport.http.ApplicationXMLFormatter"/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;3. In the mediation sequence, set the messageType property as well as the ContentType property to text/html (Setting both parameters is crucial to get this working. The messageType parameter is looked up by the mail transport to select the correct formatter. The other property is used by the formatter to set the right content type on the outgoing message.)&lt;br /&gt;&lt;br /&gt;The sample proxy configuration is attached for your reference.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;&amp;lt;proxy name="StockQuoteProxy" transports="http" xmlns="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt;    &amp;lt;target&amp;gt;&lt;br /&gt;       &amp;lt;inSequence&amp;gt;&lt;br /&gt;          &amp;lt;property name="Subject" value="Custom Subject for Response" scope="transport"/&amp;gt;&lt;br /&gt;         &amp;lt;property name="messageType" value="text/html" scope="axis2"/&amp;gt;&lt;br /&gt;         &amp;lt;property name="ContentType" value="text/html" scope="axis2"/&amp;gt;&lt;br /&gt;         &amp;lt;property name="OUT_ONLY" value="true"/&amp;gt;&lt;br /&gt;   &amp;lt;script language="js"&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;        mc.setPayloadXML(&amp;lt;h1&amp;gt;WSO2 ESB Rocks!&amp;lt;/h1&amp;gt;);&lt;br /&gt;   ]]&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;          &amp;lt;log level="full"/&amp;gt;&lt;br /&gt;          &amp;lt;send&amp;gt;&lt;br /&gt;             &amp;lt;endpoint&amp;gt;&lt;br /&gt;                &amp;lt;address uri="mailto:test@test.com"/&amp;gt;&lt;br /&gt;             &amp;lt;/endpoint&amp;gt;&lt;br /&gt;          &amp;lt;/send&amp;gt;&lt;br /&gt;       &amp;lt;/inSequence&amp;gt;&lt;br /&gt;    &amp;lt;/target&amp;gt;&lt;br /&gt;&amp;lt;/proxy&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;4. To test the sample, simply send a request to the sample proxy service using the sample Axis2 client. That will send an e-mail with in-line HTML content to the target endpoint.&lt;br /&gt;&lt;br /&gt;eg.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;wso2esb-3.0.0/samples/axis2Client$ ant stockquote -Daddurl=http://localhost:8280/services/StockQuoteProxy&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-8252157221087546180?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/8252157221087546180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=8252157221087546180' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8252157221087546180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8252157221087546180'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/10/send-html-format-email-from-wso2-esb.html' title='Send HTML format email from WSO2 ESB'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-6680928206578116847</id><published>2010-10-08T01:05:00.000-07:00</published><updated>2010-10-08T01:09:01.453-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><title type='text'>WSO2 ESB wins gold award at NBQSA 2010</title><content type='html'>WSO2 ESB &lt;a href="http://www.ft.lk/?p=2841"&gt;won&lt;/a&gt; the gold award in NBQSA 2010. I am proud to be a member of the ESB team. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-6680928206578116847?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/6680928206578116847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=6680928206578116847' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/6680928206578116847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/6680928206578116847'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/10/wso2-esb-wins-gold-award-at-nbqsa-2010.html' title='WSO2 ESB wins gold award at NBQSA 2010'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-3301040156760862471</id><published>2010-09-30T02:05:00.000-07:00</published><updated>2010-10-08T02:35:50.617-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='Stratos'/><category scheme='http://www.blogger.com/atom/ns#' term='Cloud Computing'/><title type='text'>Build WSO2 Stratos ESB from source</title><content type='html'>Following blogpost will discuss how to build WSO2's Stratos ESB (aka Cloud ESB) from source.&lt;br /&gt;&lt;br /&gt;1. First build carbon trunk upto features. Please follow my earlier &lt;a href="http://heshans.blogspot.com/2010/06/build-wso2-esb-from-source.html"&gt;post&lt;/a&gt; on building WSO2 ESB from source.&lt;br /&gt;&lt;br /&gt;2. Checkout WSO2 Stratos source.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;svn co https://svn.wso2.org/repos/wso2/trunk/stratos&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Then following directories/files will be checked into your file system.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;.&lt;br /&gt;|-- build&lt;br /&gt;|-- components&lt;br /&gt;|-- features&lt;br /&gt;|-- pom.xml&lt;br /&gt;|-- samples&lt;br /&gt;|-- services&lt;br /&gt;`-- setup&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;3. Build Stratos components project.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;heshan@heshan-laptop:~/Dev/trunk/stratos/components$ mvn clean install -Dmaven.test.skip=true&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;4. Build Strtos features project.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;heshan@heshan-laptop:~/Dev/trunk/stratos/features$ mvn clean install -Dmaven.test.skip=true&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;5. Build Stratos Manager.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;heshan@heshan-laptop:~/Dev/trunk/stratos/services/manager$ mvn clean install -Dmaven.test.skip=true&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;6. Build Stratos ESB.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;heshan@heshan-laptop:~/Dev/trunk/stratos/services/esb$ mvn clean install -Dmaven.test.skip=true&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;7. Run the setup script.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;heshan@heshan-laptop:~/Dev/trunk/stratos/setup$ ./setup.sh&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;8. Create the necessary databases.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;mysql&amp;gt;CREATE DATABASE stratos_db;&lt;br /&gt;&lt;br /&gt;mysql&amp;gt;CREATE DATABASE WSO2CARBON_DB;&lt;br /&gt;&lt;br /&gt;mysql&amp;gt;CREATE DATABASE billing;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Create users and give necessary user-permssions.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;mysql&amp;gt;CREATE USER 'wso2stratos'@'localhost' IDENTIFIED BY 'wso2stratos';&lt;br /&gt;mysql&amp;gt;GRANT ALL ON *.* TO 'wso2stratos'@'localhost';&lt;br /&gt;&lt;br /&gt;mysql&amp;gt;CREATE USER 'billing'@'localhost' IDENTIFIED BY 'billing';&lt;br /&gt;mysql&amp;gt;GRANT ALL ON *.* TO 'billing'@'localhost';&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Create tables.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;heshan@heshan-laptop:~/Dev/trunk/stratos/services/manager/modules/distribution/target/wso2stratos-manager-1.0.0-SNAPSHOT/dbscripts$ mysql -u root -p &amp;lt; billing-mysql.sql billing&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;9. Start the Stratos Manager.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;NOTE:&lt;/span&gt; Server should be started with -Dsetup option in the first time.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;heshan@heshan-laptop:~/Dev/trunk/stratos/services/manager/modules/distribution/target/wso2stratos-manager-1.0.0-SNAPSHOT/bin$ ./wso2server.sh -Dsetup&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;10. Start Stratos ESB.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;NOTE:&lt;/span&gt; Server should be started with -Dsetup option in the first time.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;heshan@heshan-laptop:~/Dev/trunk/stratos/services/esb/modules/distribution/target/wso2stratos-esb-1.0.0-SNAPSHOT/bin$ ./wso2server.sh -Dsetup&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;11. Stop the above servers. Then startup the both the servers again without -Dsetup option.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;heshan@heshan-laptop:~/Dev/trunk/stratos/services/manager/modules/distribution/target/wso2stratos-manager-1.0.0-SNAPSHOT/bin$ ./wso2server.sh&lt;br /&gt;heshan@heshan-laptop:~/Dev/trunk/stratos/services/esb/modules/distribution/target/wso2stratos-esb-1.0.0-SNAPSHOT/bin$ ./wso2server.sh&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;12. Create a Tenent by logging into the Stratos Manager. Then using the credentials obtained, you can log into the Stratos ESB.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-3301040156760862471?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/3301040156760862471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=3301040156760862471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/3301040156760862471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/3301040156760862471'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/09/build-wso2-stratos-esb-from-source.html' title='Build WSO2 Stratos ESB from source'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-3492329412971661626</id><published>2010-09-10T22:18:00.000-07:00</published><updated>2010-09-10T22:45:26.730-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Migrate Synapse Configuration from 1.2 to 2.0</title><content type='html'>&lt;div style="text-align: justify;"&gt;The current namespace of the synapse-2.0 trunk is &lt;a href="http://synapse.apache.org/ns/2010/04/configuration" target="_blank"&gt;http://synapse.apache.org/ns/&lt;wbr&gt;2010/04/configuration&lt;/a&gt;. The earlier namespace of synapse-1.2 was &lt;a href="http://ws.apache.org/ns/synapse"&gt;http://ws.apache.org/ns/synapse&lt;/a&gt;. Therefore you may encounter some errors, when running a synapse configuration of a 1.2 release against a trunk build(ie. synapse-2.0.0-SNAPSHOT). Since the Synapse configuration has undergone some configuration changes, merely changing the namespace of the the old synapse configuration wont help you to solve your problem.&lt;br /&gt;&lt;br /&gt;That's why Synapse ships a migration tool for migrating a 1.2 configuration to a 2.0 configuration. &lt;a href="http://blog.ruwan.org/"&gt;Ruwan&lt;/a&gt; has written the &lt;a href="http://svn.apache.org/repos/asf/synapse/trunk/java/modules/migrator/src/main/resources/synapse-configuration-migrator.xslt"&gt;xslt&lt;/a&gt; transformation for the above. You can find it in the Synapse trunk.&lt;br /&gt;&lt;br /&gt;Recently I had to update the Synapse sample configurations of WSO2 ESB's trunk. This tool made my life a lot easier during the migration process. I modified the sample migrator to suit my purpose. I am sharing the code here, if you need to migrate the synapse configurations in bulk.&lt;br /&gt;&lt;/div&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;import javax.xml.transform.Transformer;&lt;br /&gt;import javax.xml.transform.TransformerException;&lt;br /&gt;import javax.xml.transform.TransformerFactory;&lt;br /&gt;import javax.xml.transform.stream.StreamResult;&lt;br /&gt;import javax.xml.transform.stream.StreamSource;&lt;br /&gt;import java.io.FileReader;&lt;br /&gt;import java.io.FileWriter;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;*&lt;br /&gt;*/&lt;br /&gt;public class ConfigurationMigrator {&lt;br /&gt;&lt;br /&gt;  private static final String MIGRATOR_XSLT_PATH&lt;br /&gt;          = "modules/migrator/src/main/resources/synapse-configuration-migrator.xslt";&lt;br /&gt;&lt;br /&gt;  public static int confgNumber [] = new int []&lt;br /&gt;              {0,1,2,3,4,5,6,7,8,9,10,11,&lt;br /&gt;              50,51,52,53,54,55,56,57,58,&lt;br /&gt;              100,101,102,&lt;br /&gt;              150,151,152,153,154,155,&lt;br /&gt;              200,201,202,&lt;br /&gt;              250,251,252,253,254,255,256,257,258,259,&lt;br /&gt;              260,261,262,264,265,&lt;br /&gt;              300,&lt;br /&gt;              350,351,352,353,354,&lt;br /&gt;              360,361,362,363,&lt;br /&gt;              370,371,372,&lt;br /&gt;              380,381,&lt;br /&gt;              390,391,&lt;br /&gt;              400,420,430,&lt;br /&gt;              500,501,502,503,504,&lt;br /&gt;              550,551,&lt;br /&gt;              600,601,602,603,604,605,606,&lt;br /&gt;              652,654};&lt;br /&gt;&lt;br /&gt;  public static void doTransform(String xmlFile, String xslFile, String outFile)&lt;br /&gt;          throws TransformerException, IOException {&lt;br /&gt;&lt;br /&gt;      FileReader xslFileReader = new FileReader(xslFile);&lt;br /&gt;      StreamSource xslStreamSource = new StreamSource(xslFileReader);&lt;br /&gt;&lt;br /&gt;      FileReader xmlFileReader = new FileReader(xmlFile);&lt;br /&gt;      StreamSource xmlStreamSource = new StreamSource(xmlFileReader);&lt;br /&gt;&lt;br /&gt;      FileWriter outFileWriter = new FileWriter(outFile);&lt;br /&gt;      StreamResult outStreamResult = new StreamResult(outFileWriter);&lt;br /&gt;&lt;br /&gt;      TransformerFactory transformerFactory = TransformerFactory.newInstance();&lt;br /&gt;      Transformer transformer = transformerFactory.newTransformer(xslStreamSource);&lt;br /&gt;&lt;br /&gt;      transformer.transform(xmlStreamSource, outStreamResult);&lt;br /&gt;      outFileWriter.flush();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public static void migrateAllConfigs(String source, String destination){&lt;br /&gt;      System.out.println("\n\t#######################################################");&lt;br /&gt;      System.out.println("\t#      Apache Synapse - Configuration Migration       #");&lt;br /&gt;      System.out.println("\t#######################################################");&lt;br /&gt;&lt;br /&gt;      System.out.println("\n[INFO] Migration STARTED");&lt;br /&gt;&lt;br /&gt;      for (int aConfgNumber : confgNumber) {&lt;br /&gt;          try {&lt;br /&gt;              System.out.println("[INFO]Migrating synapse configuration : " + aConfgNumber);&lt;br /&gt;              doTransform(source + aConfgNumber + ".xml", MIGRATOR_XSLT_PATH, destination + aConfgNumber +".xml");&lt;br /&gt;&lt;br /&gt;          } catch (TransformerException e) {&lt;br /&gt;              handleException("Migration FAILED\n\t" + e.toString());&lt;br /&gt;          } catch (IOException e) {&lt;br /&gt;              handleException("Migration FAILED\n\t" + e.toString());&lt;br /&gt;          }&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      System.out.println("[INFO] Migration COMPLETED");&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public static void main(String args[]) {&lt;br /&gt;      migrateAllConfigs("/home/heshan/Dev/trunk/carbon/products/esb/modules/samples/src/main/conf/synapse/synapse_sample_",&lt;br /&gt;              "/tmp/synapse-config/synapse_sample_");&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  private static void handleException(String message) {&lt;br /&gt;      System.out.println("[ERROR] " + message);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-3492329412971661626?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/3492329412971661626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=3492329412971661626' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/3492329412971661626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/3492329412971661626'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/09/migrate-synapse-configuration-from-12.html' title='Migrate Synapse Configuration from 1.2 to 2.0'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-4716741650036905312</id><published>2010-09-09T21:19:00.000-07:00</published><updated>2010-09-09T21:23:31.007-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><title type='text'>WSO2 Enterprise Service Bus (ESB) 3.0.1 Released</title><content type='html'>&lt;p style="text-align: justify;"&gt;     The WSO2 ESB team is pleased to announce the release of version 3.0.1 of     the Open Source Enterprise Service Bus (ESB). &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;     WSO2 ESB is a fast, lightweight and user friendly open source Enterprise Service     Bus (ESB) distributed under the &lt;a href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank"&gt;Apache     Software License v2.0&lt;/a&gt;. WSO2 ESB allows system administrators and developers to     easily configure message routing, intermediation, transformation, logging, task     scheduling, fail over routing and load balancing. It also supports transport     switching, eventing, rule based mediation and priority based mediation for advanced     integration requirements. The ESB runtime is designed to be completely asynchronous,     non-blocking and streaming based on the &lt;a href="http://synapse.apache.org/" target="_blank"&gt;Apache     Synapse&lt;/a&gt; mediation engine. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;     WSO2 ESB 3.0.1 is developed on top of the revolutionary     &lt;a href="http://wso2.org/projects/carbon" target="_blank"&gt;WSO2 Carbon platform&lt;/a&gt; (Middleware a' la carte),     an OSGi based framework that provides seamless modularity to your SOA via     componentization. This release also contains many new features and a range of optional     components (add-ons) that can be installed to customize the behavior of the ESB. Further, any     existing features of the ESB which are not required to your environment can be easily     removed using the underlying provisioning framework of Carbon. In brief, WSO2 ESB can     be fully customized and tailored to meet your exact SOA needs. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;     You can download this distribution from &lt;a href="http://wso2.org/downloads/esb" target="_blank"&gt;     http://wso2.org/downloads/esb&lt;/a&gt; and give it a try.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h2 style="text-align: justify;"&gt;How to Run &lt;/h2&gt;&lt;ol style="text-align: justify;" type="1"&gt;&lt;li&gt;Extract the downloaded zip&lt;/li&gt;&lt;li&gt;Go to the bin directory in the extracted folder&lt;/li&gt;&lt;li&gt;Run the wso2server.sh or wso2server.bat as appropriate&lt;/li&gt;&lt;li&gt;Point your browser to the URL &lt;a href="https://localhost:9443/carbon" target="_blank"&gt;https://localhost:9443/carbon&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Use "admin", "admin" as the username and password to login as an admin     and create a user account&lt;/li&gt;&lt;li&gt;Assign the required permissions to the user through a role&lt;/li&gt;&lt;li&gt;If you need to start the OSGi console with the server use the property     -DosgiConsole when starting the server. The INSTALL.txt file found on the     installation directory will give you a comprehensive set of options and     properties that can be passed into the startup script&lt;/li&gt;&lt;li&gt;Sample configurations can be started by the wso2esb-samples script passing     the sample number with the -sn option (Please     have a look at the samples guide for more information, on running samples)&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h2 style="text-align: justify;"&gt;New Features of WSO2 ESB 3.0.1&lt;/h2&gt;&lt;p style="text-align: justify;"&gt;   There are no new features in this release. This is a bug fix release. See the   section "Bugs Fixed in WSO2 ESB 3.0.1" for more information.    &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h2 style="text-align: justify;"&gt;Key Features of WSO2 ESB&lt;/h2&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Proxy services - facilitating synchronous/asynchronous transport, interface    (WSDL/Schema/Policy), message format (SOAP 1.1/1.2, POX/REST, Text, Binary),    QoS (WS-Addressing/WS-Security/WS-&lt;wbr&gt;RM) and optimization switching (MTOM/SwA).&lt;/li&gt;&lt;li&gt;Non-blocking HTTP/S transports based on Apache HttpCore-NIO for ultrafast    execution and support for thousands of connections at high concurreny with    constant memory usage.&lt;/li&gt;&lt;li&gt;Built in Registry/Repository, facilitating dynamic updating and reloading    of the configuration and associated resources (e.g. XSLTs, XSD, WSDL,    Policies, JS configurations ..)&lt;/li&gt;&lt;li&gt;Easily extendable via custom Java classes (mediator and command)/Spring    configurations, or BSF Scripting languages (Javascript, Ruby, Groovy, etc.)&lt;/li&gt;&lt;li&gt;Built in support for scheduling tasks using the Quartz scheduler.&lt;/li&gt;&lt;li&gt;Load-balancing (with or without sticky sessions)/Fail-over, and clustered    Throttling and Caching support&lt;/li&gt;&lt;li&gt;WS-Security, WS-Reliable Messaging, Caching &amp;amp; Throttling configurable via    (message/operation/service level) WS-Policies&lt;/li&gt;&lt;li&gt;Lightweight, XML and Web services centric messaging model&lt;/li&gt;&lt;li&gt; Support for industrial standards (Hessian binary web service protocol/    Financial Information eXchange protocol and optional Health Level-7 protocol)&lt;/li&gt;&lt;li&gt;Enhanced support for the VFS (File/FTP/SFTP), JMS, Mail transports with     optional TCP/UDP transports and transport switching among any of the above     transports&lt;/li&gt;&lt;li&gt;Support for message splitting &amp;amp; aggregation using the EIP and service     callouts&lt;/li&gt;&lt;li&gt;Database lookup &amp;amp; store support with DBMediators with reusable database     connection pools&lt;/li&gt;&lt;li&gt;WS-Eventing support with event sources and event brokering&lt;/li&gt;&lt;li&gt;Rule based mediation of the messages using the Drools rule engine&lt;/li&gt;&lt;li&gt;Transactions support via the JMS transport and Transaction mediator for     database mediators&lt;/li&gt;&lt;li&gt;Internationalized GUI management console with user management for     configuration development&lt;/li&gt;&lt;li&gt;Integrated monitoring support with statistics, configurable logging and tracing&lt;/li&gt;&lt;li&gt;JMX monitoring support and JMX management capabilities like,     Graceful/Forceful shutdown/restart&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h2 style="text-align: justify;"&gt;Bugs Fixed in This Release&lt;/h2&gt;&lt;p style="text-align: justify;"&gt;     This release of WSO2 ESB comes with a number of bug fixes, both in the base     framework and the ESB specific componenents. All the issues which have been     fixed in ESB 3.0.1 are recorded at following locations: &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;a href="https://wso2.org/jira/secure/IssueNavigator.jspa?requestId=10396" target="_blank"&gt;         Fixed ESB specific issues&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://wso2.org/jira/secure/IssueNavigator.jspa?requestId=10397" target="_blank"&gt;         Fixed base framework issues&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h2 style="text-align: justify;"&gt;Known Issues&lt;/h2&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Endpoint UI does not support selecting already existing endpoints as         child endpoints when creating load balance/failover endpoints&lt;/li&gt;&lt;li&gt;HTTP GET requests performed on an endpoint that has a trailing '/'         character, do not work properly&lt;/li&gt;&lt;li&gt;SOAP tracer does not work when the message relay is activated&lt;/li&gt;&lt;li&gt;The sequence editor and the built-in XML editors do not work         properly on Google Chrome&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;     All the open issues pertaining to WSO2 ESB 3.0 are reported at following     locations: &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;a href="https://wso2.org/jira/secure/IssueNavigator.jspa?requestId=10302" target="_blank"&gt;         WSO2 ESB 3.0 component issues&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://wso2.org/jira/secure/IssueNavigator.jspa?requestId=10303" target="_blank"&gt;         WSO2 ESB 3.0 product issues&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://wso2.org/jira/secure/IssueNavigator.jspa?requestId=10304" target="_blank"&gt;         WSO2 ESB 3.0 base framework issues&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h2 style="text-align: justify;"&gt;How You Can Contribute&lt;/h2&gt;&lt;h3 style="text-align: justify;"&gt;       Mailing Lists     &lt;/h3&gt;&lt;p style="text-align: justify;"&gt;       Join our mailing list and correspond with the developers directly.     &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;         Developer List : &lt;a href="mailto:carbon-dev@wso2.org" target="_blank"&gt;carbon-dev@wso2.org&lt;/a&gt;         | &lt;a href="mailto:carbon-dev-request@wso2.org?subject=subscribe" target="_blank"&gt;Subscribe&lt;/a&gt;         | &lt;a href="http://wso2.org/mailarchive/carbon-dev/" target="_blank"&gt;Mail Archive&lt;/a&gt;&lt;/li&gt;&lt;li&gt;         User List : &lt;a href="mailto:esb-java-user@wso2.org" target="_blank"&gt;esb-java-user@wso2.org&lt;/a&gt;         | &lt;a href="mailto:esb-java-user-request@wso2.org?subject=subscribe" target="_blank"&gt;Subscribe&lt;/a&gt;         | &lt;a href="http://wso2.org/mailarchive/esb-java-user/" target="_blank"&gt;Mail Archive&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h3 style="text-align: justify;"&gt;       Reporting Issues     &lt;/h3&gt;&lt;p style="text-align: justify;"&gt;       WSO2 encourages you to report issues and your enhancement requests for the       WSO2 ESB using the public &lt;a href="http://www.wso2.org/jira/browse/ESBJAVA" target="_blank"&gt;JIRA&lt;/a&gt;.     &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;       You can also watch how they are resolved, and comment on the progress..     &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h3 style="text-align: justify;"&gt;       Discussion Forums     &lt;/h3&gt;&lt;p style="text-align: justify;"&gt;       Alternatively, questions could be raised using the forums available.     &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;&lt;a href="http://wso2.org/forum/187" target="_blank"&gt;WSO2 ESB Forum&lt;/a&gt; :       Discussion forum for WSO2 ESB developers/users     &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h2 style="text-align: justify;"&gt;Support&lt;/h2&gt;&lt;p style="text-align: justify;"&gt;     We are committed to ensuring that your enterprise middleware deployment is     completely supported from evaluation to production. Our unique approach     ensures that all support leverages our open development methodology and is     provided by the very same engineers who build the technology. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;     For more details and to take advantage of this unique opportunity please     visit &lt;a href="http://wso2.com/support" target="_blank"&gt;http://wso2.com/support&lt;/a&gt;. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;     For more information about WSO2 ESB please see &lt;a href="http://wso2.com/products/enterprise-service-bus/" target="_blank"&gt;     http://wso2.com/products/&lt;wbr&gt;enterprise-service-bus&lt;/a&gt;. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;&lt;i&gt;-- The WSO2 ESB Team --&lt;/i&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-4716741650036905312?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/4716741650036905312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=4716741650036905312' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/4716741650036905312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/4716741650036905312'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/09/wso2-enterprise-service-bus-esb-301.html' title='WSO2 Enterprise Service Bus (ESB) 3.0.1 Released'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-3310823949981908004</id><published>2010-09-02T01:19:00.000-07:00</published><updated>2010-09-02T01:23:08.567-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='FOSS'/><title type='text'>Win a free trip to WSO2 Con</title><content type='html'>The sponsorship includes:&lt;br /&gt;&lt;br /&gt;   * Return air ticket, including international!&lt;br /&gt;   * 5 nights hotel accommodation&lt;br /&gt;   * Ground transport&lt;br /&gt;   * US $50 per Diem&lt;br /&gt;   * Free pass to WSO2Con 2010&lt;br /&gt;   * Free pass to two day special Technical Workshop&lt;br /&gt;   * Invitation to VIP Gala Dinner Celebration&lt;br /&gt;   * Invitation to WSO2 5 Year Celebration Party&lt;br /&gt;&lt;br /&gt;For more information visit [&lt;a href="http://wso2.org/wso2con2010-sponsorship"&gt;1&lt;/a&gt;].&lt;br /&gt;&lt;br /&gt;[1] - http://wso2.org/wso2con2010-sponsorship&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-3310823949981908004?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/3310823949981908004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=3310823949981908004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/3310823949981908004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/3310823949981908004'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/09/win-free-trip-to-wso2-con.html' title='Win a free trip to WSO2 Con'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-6263302711004411049</id><published>2010-09-01T23:28:00.000-07:00</published><updated>2010-09-01T23:34:18.191-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='FOSS'/><title type='text'>WSO2 Con 2010</title><content type='html'>&lt;div style="text-align: justify;"&gt;WSO2 Con 2010 will be held at HNB Towers, Colombo on 14th and 15th September. For more information visit WSO2Con &lt;a href="http://wso2.com/events/wso2con-2010-colombo"&gt;website&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/j-xtzwPb8Yc?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/j-xtzwPb8Yc?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-6263302711004411049?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/6263302711004411049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=6263302711004411049' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/6263302711004411049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/6263302711004411049'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/09/wso2-con-2010.html' title='WSO2 Con 2010'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-1955310076031023834</id><published>2010-07-20T18:05:00.000-07:00</published><updated>2010-07-20T18:22:34.710-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Sending UTF-16 messages through Synapse</title><content type='html'>&lt;div style="text-align: justify;"&gt;When fixing &lt;a href="https://issues.apache.org/jira/browse/SYNAPSE-662"&gt;SYNAPSE-662&lt;/a&gt; and &lt;a href="https://issues.apache.org/jira/browse/SYNAPSE-670" title="Messages with UTF-16 encoding fails on Synapse"&gt;SYNAPSE-670&lt;/a&gt;, I had to send UTF-16 messages to the SimpleStockQuoteService to verify the fixes. Following are the sample configuration and client code that I used to verify the fixes.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;1. Start the Synapse ESB with the following configuration.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;&amp;lt;definitions xmlns="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt;   &amp;lt;switch source="//m0:getQuote/m0:request/m0:symbol" xmlns:m0="http://services.samples/xsd"&amp;gt;&lt;br /&gt;       &amp;lt;case regex="IBM"&amp;gt;&lt;br /&gt;           &amp;lt;!-- the property mediator sets a local property on the *current* message --&amp;gt;&lt;br /&gt;           &amp;lt;property name="symbol" value="Great stock - IBM"/&amp;gt;&lt;br /&gt;       &amp;lt;/case&amp;gt;&lt;br /&gt;       &amp;lt;case regex="MSFT"&amp;gt;&lt;br /&gt;           &amp;lt;property name="symbol" value="Are you sure? - MSFT"/&amp;gt;&lt;br /&gt;       &amp;lt;/case&amp;gt;&lt;br /&gt;       &amp;lt;default&amp;gt;&lt;br /&gt;           &amp;lt;!-- it is possible to assign the result of an XPath expression as well --&amp;gt;&lt;br /&gt;           &amp;lt;property name="symbol"&lt;br /&gt;                 expression="fn:concat('Normal Stock - ', //m0:getQuote/m0:request/m0:symbol)"&lt;br /&gt;                 xmlns:m0="http://services.samples/xsd"/&amp;gt;&lt;br /&gt;       &amp;lt;/default&amp;gt;&lt;br /&gt;   &amp;lt;/switch&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;       &amp;lt;!-- the get-property() XPath extension function allows the lookup of local message properties&lt;br /&gt;           as well as properties from the Axis2 or Transport contexts (i.e. transport headers) --&amp;gt;&lt;br /&gt;       &amp;lt;property name="symbol" expression="get-property('symbol')"/&amp;gt;&lt;br /&gt;       &amp;lt;!-- the get-property() function supports the implicit message headers To/From/Action/FaultTo/ReplyTo --&amp;gt;&lt;br /&gt;       &amp;lt;property name="epr" expression="get-property('To')"/&amp;gt;&lt;br /&gt;   &amp;lt;/log&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;!-- Send the messages where they are destined to (i.e. the 'To' EPR of the message) --&amp;gt;&lt;br /&gt;   &amp;lt;send/&amp;gt;&lt;br /&gt;&amp;lt;/definitions&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;2. Start the Axis2 server and deploy the SimpleStockQuoteService.&lt;br /&gt;&lt;br /&gt;3. Use the following axis2 client (which generates a UTF-16 message) to invoke the service.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;package org.wso2.esb;&lt;br /&gt;&lt;br /&gt;import org.apache.axiom.om.OMElement;&lt;br /&gt;import org.apache.axiom.om.OMNamespace;&lt;br /&gt;import org.apache.axiom.om.OMFactory;&lt;br /&gt;import org.apache.axiom.om.OMAbstractFactory;&lt;br /&gt;import org.apache.axis2.AxisFault;&lt;br /&gt;import org.apache.axis2.addressing.EndpointReference;&lt;br /&gt;import org.apache.axis2.client.Options;&lt;br /&gt;import org.apache.axis2.client.ServiceClient;&lt;br /&gt;import org.apache.axis2.context.ConfigurationContext;&lt;br /&gt;import org.apache.axis2.context.ConfigurationContextFactory;&lt;br /&gt;&lt;br /&gt;import java.lang.*;&lt;br /&gt;&lt;br /&gt;public class MyClient {&lt;br /&gt;   public static OMElement createPayload(){&lt;br /&gt;       OMFactory fac = OMAbstractFactory.getOMFactory();&lt;br /&gt;       OMNamespace omNs = fac.createOMNamespace("http://services.samples", "ns");&lt;br /&gt;       OMElement method = fac.createOMElement("getQuote", omNs);&lt;br /&gt;       OMElement value1 = fac.createOMElement("request", omNs);&lt;br /&gt;       OMElement value2 = fac.createOMElement("symbol", omNs);&lt;br /&gt;&lt;br /&gt;       value2.addChild(fac.createOMText(value1, "IBM"));&lt;br /&gt;       value1.addChild(value2);&lt;br /&gt;       method.addChild(value1);&lt;br /&gt;       return method;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public static void main(String args[]){&lt;br /&gt;       OMElement payload = createPayload();&lt;br /&gt;       ServiceClient serviceclient;&lt;br /&gt;&lt;br /&gt;       ConfigurationContext configurationContext = null;&lt;br /&gt;       try {        &lt;br /&gt;           configurationContext = ConfigurationContextFactory.&lt;br /&gt;                  createConfigurationContextFromFileSystem("/home/heshan/Dev/trunk/synapse/modules/distribution/target/synapse-2.0.0-SNAPSHOT/samples/axis2Client/client_repo",&lt;br /&gt;                          "/home/heshan/Dev/trunk/synapse/modules/distribution/target/synapse-2.0.0-SNAPSHOT/samples/axis2Client/client_repo/conf/axis2.xml");&lt;br /&gt;&lt;br /&gt;          serviceclient = new ServiceClient();&lt;br /&gt;          Options opt = new Options();&lt;br /&gt;&lt;br /&gt;          opt.setTo(new EndpointReference ("http://localhost:8281/services/StockQuote"));&lt;br /&gt;          opt.setAction("urn:getQuote");&lt;br /&gt;    opt.setProperty(org.apache.axis2.Constants.Configuration.CHARACTER_SET_ENCODING,"UTF-16");&lt;br /&gt;          opt.setSoapVersionURI(org.apache.axiom.soap.SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);&lt;br /&gt;          serviceclient.setOptions(opt);&lt;br /&gt;&lt;br /&gt;          OMElement ome = serviceclient.sendReceive(payload);&lt;br /&gt;          System.out.println("The output is : " + ome);&lt;br /&gt;&lt;br /&gt;       } catch (AxisFault axisFault) {&lt;br /&gt;           axisFault.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.&lt;br /&gt;&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-1955310076031023834?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/1955310076031023834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=1955310076031023834' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/1955310076031023834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/1955310076031023834'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/07/sending-utf-16-messages-through-synapse.html' title='Sending UTF-16 messages through Synapse'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-1379528810591779391</id><published>2010-07-14T11:03:00.000-07:00</published><updated>2010-07-20T18:33:00.802-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='publications'/><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='jython'/><category scheme='http://www.blogger.com/atom/ns#' term='Axis2'/><category scheme='http://www.blogger.com/atom/ns#' term='articles'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Extend the Axis2 Framework to Support JVM Based Scripting Languages</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;blockquote&gt;This article explains how to extend the Axis2 framework to support Java Virtual Machine (JVM) based scripting languages such as Jython, JRuby, etc. It provides a high level overview of the subject, covering some key concepts of Apache Axis2 and how it can be used to come up with an extension to a JVM based scripting language. After going through this article, a developer will be able to extend the Axis2 framework to support the JVM based scripting language of his or her choice.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;If you are interested, read the full article on &lt;a href="http://www.infoq.com/articles/axis2_scripting"&gt;InfoQ.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I take this opportunity to thank &lt;a href="http://nandikajayawardana.blogspot.com/"&gt;Nandika&lt;/a&gt; for doing the technical review and Charles Humble for doing the editorial review.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-1379528810591779391?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/1379528810591779391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=1379528810591779391' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/1379528810591779391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/1379528810591779391'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/07/extend-axis2-framework-to-support-jvm.html' title='Extend the Axis2 Framework to Support JVM Based Scripting Languages'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-2467945382066367653</id><published>2010-06-22T21:24:00.000-07:00</published><updated>2010-07-09T17:19:12.712-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><title type='text'>Build WSO2 ESB from source</title><content type='html'>This post will discuss how to build WSO2 ESB[&lt;a href="http://wso2.com/products/enterprise-service-bus/"&gt;1&lt;/a&gt;] from the WSO2 Carbon[&lt;a href="http://wso2.com/products/carbon/"&gt;2&lt;/a&gt;] trunk.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;1) Checkout WSO2 Carbon project's trunk.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;heshan@heshan-laptop:~/Dev/trunk/$ svn co https://svn.wso2.org/repos/wso2/trunk/carbon&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Following directories/files would be checked-out to your file system.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;carbon&lt;br /&gt;|-- components&lt;br /&gt;|-- core&lt;br /&gt;|-- dependencies&lt;br /&gt;|-- features&lt;br /&gt;|-- orbit&lt;br /&gt;|-- pom.xml&lt;br /&gt;|-- products&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2) Build the dependencies for ESB project.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;heshan@heshan-laptop:~/Dev/trunk/carbon/dependencies$ mvn clean install -Dproduct=esb&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Then the following dependencies will be built. If you encounter any build errors, try and build each project one at a time :)&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;dependencies&lt;br /&gt;|-- abdera&lt;br /&gt;|-- axiom&lt;br /&gt;|-- axis2&lt;br /&gt;|-- wss4j&lt;br /&gt;|-- carbon-p2-plugin&lt;br /&gt;|-- commons/caching&lt;br /&gt;|-- commons/eventing&lt;br /&gt;|-- commons/throttle&lt;br /&gt;|-- commons/xkms&lt;br /&gt;|-- p2&lt;br /&gt;|-- rampart&lt;br /&gt;|-- rhino&lt;br /&gt;|-- sandesha&lt;br /&gt;|-- savan&lt;br /&gt;|-- synapse&lt;br /&gt;|-- transports&lt;br /&gt;|-- commons-vfs&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify; font-style: italic; color: rgb(102, 102, 102);"&gt;&lt;span style="font-weight: bold;"&gt;Carbon Dependencies :- &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;Carbon platform makes use of already existing open source projects rather than trying to re-invent the wheel. We use popular and matured open source projects like apache axiom, axis2, synapse etc which fuel the very heart of the carbon platform. Dependencies contains all these open source projects that the carbon platform makes use of adding more value to them.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;3) Build Carbon Orbit for ESB project.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;heshan@heshan-laptop:~/Dev/trunk/carbon/orbit$ mvn clean install -Dproduct=esb&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;&lt;span style="font-weight: bold;"&gt;Carbon Orbit &lt;/span&gt;:-&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;WSO2 Carbon uses OSGi as its underlying modularization technology. But Many 3rd party open source libraries does not exists in osgi form (ie. in osgi bundle form). Therefore to introduce them to the carbon platform, we wrap-around them to make them proper OSGI bundles (They will be useful to any OSGI environment like felix, knoplerfish etc). Carbon-orbit project contains all these third party bundles.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4) Build Carbon Core for ESB project.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;heshan@heshan-laptop:~/Dev/trunk/carbon/core$ mvn clean install -Dproduct=esb&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;&lt;span style="font-weight: bold;"&gt;Carbon Core &lt;/span&gt;:-&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;This is where we create the base for our platform. Everything runs on top of this base. From the simple OSGi framework to the UI framework, all the critical technologies for the platform are implemented here.  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;5) Build Carbon Components for ESB project.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;heshan@heshan-laptop:~/Dev/trunk/carbon/components$ mvn clean install -Dproduct=esb&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(102, 102, 102);"&gt;Carbon Components&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt; :-&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;Components module contains the main functionalities that are introduced by each and every product in addition to to the core level features. Among the close to 100 components each adds value to the product in a different way than the next. Some will enhance the security while some may just provide vital tools to monitor the health of the system.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;6) Build Carbon Features for ESB project.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;heshan@heshan-laptop:~/Dev/trunk/carbon/features$ mvn clean install -Dproduct=esb&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;&lt;span style="font-weight: bold;"&gt;Carbon Features&lt;/span&gt; :-&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;Equinox P2 has been integrated with WSO2 Carbon platform to enable provisioning capabilities. This enables you to extend or enhance your carbon platform with more functionalities or just strip out the irrelevant features which suits your context.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;7) Build WSO2 ESB product.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;heshan@heshan-laptop:~/Dev/trunk/carbon/products/esb$ mvn clean install&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;&lt;span style="font-weight: bold;"&gt;Carbon Product&lt;/span&gt; :-&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(102, 102, 102);"&gt;Products module contains all the products ranging from ESB to BRS.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;8) When the build is successful move to target folder inside esb project.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;heshan@heshan-laptop:~/Dev/trunk/carbon/products/esb/modules/distribution/target$ ls&lt;br /&gt;pom-transformed.xml  wso2esb-3.0.0-SNAPSHOT  wso2esb-3.0.0-SNAPSHOT-docs.zip  wso2esb-3.0.0-SNAPSHOT.zip&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Then unzip the SNAPSHOT.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;heshan@heshan-laptop:~/Dev/trunk/carbon/products/esb/modules/distribution/target$ unzip wso2esb-3.0.0-SNAPSHOT.zip&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Start the ESB server&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;heshan@heshan-laptop:~/Dev/trunk/carbon/products/esb/modules/distribution/target/wso2esb-3.0.0-SNAPSHOT/bin$ ./wso2server.sh&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now you have successfully built and started a WSO2 ESB build from Carbon trunk.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;References&lt;/span&gt;&lt;br /&gt;[1] - &lt;a href="http://wso2.com/products/enterprise-service-bus/"&gt;http://wso2.com/products/enterprise-service-bus/&lt;/a&gt;&lt;br /&gt;[2] - &lt;a href="http://wso2.com/products/carbon/"&gt;http://wso2.com/products/carbon/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;NOTE&lt;/span&gt;: If you need to build any other Carbon based product, repeat the above steps by replacing the product name to the relevant product.&lt;br /&gt;&lt;br /&gt;mvn version used for testing this was:&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;heshan@heshan-laptop:~$ mvn -version&lt;br /&gt;Apache Maven 2.1.0 (r755702; 2009-03-19 00:40:27+0530)&lt;br /&gt;Java version: 1.6.0_03&lt;br /&gt;Java home: /home/heshan/Installations/jdk1.6.0_03/jre&lt;br /&gt;Default locale: en_US, platform encoding: UTF-8&lt;br /&gt;OS name: "linux" arch: "i386" Family: "unix"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FP-C7_Sg888/TCiASTRQZzI/AAAAAAAAAHA/dN1YnxBZNOI/s1600/wso2-carbon-products-small.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 237px;" src="http://4.bp.blogspot.com/_FP-C7_Sg888/TCiASTRQZzI/AAAAAAAAAHA/dN1YnxBZNOI/s400/wso2-carbon-products-small.png" alt="" id="BLOGGER_PHOTO_ID_5487777197849601842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-2467945382066367653?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/2467945382066367653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=2467945382066367653' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/2467945382066367653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/2467945382066367653'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/06/build-wso2-esb-from-source.html' title='Build WSO2 ESB from source'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FP-C7_Sg888/TCiASTRQZzI/AAAAAAAAAHA/dN1YnxBZNOI/s72-c/wso2-carbon-products-small.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-5211204146123304955</id><published>2010-06-17T23:24:00.000-07:00</published><updated>2010-10-08T02:35:56.300-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Cloud Computing'/><title type='text'>Setting up and configuring WSO2 Stratos Services</title><content type='html'>&lt;div style="text-align: justify;"&gt;In this screen-cast, &lt;a href="http://wso2.com/about/engineers/selvaratnam-uthaiyashankar/"&gt;Shankar&lt;/a&gt; walks you through the steps required to setting up a domain in &lt;a href="https://cloud.wso2.com/"&gt;WSO2 Stratos&lt;/a&gt;, configuring  and customizing it according to your requirement.&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/in0-zKWxXdU&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/in0-zKWxXdU&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="385" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-5211204146123304955?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/5211204146123304955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=5211204146123304955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/5211204146123304955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/5211204146123304955'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/06/setting-up-and-configuring-wso2-stratos.html' title='Setting up and configuring WSO2 Stratos Services'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-5859962820423937031</id><published>2010-06-17T23:16:00.000-07:00</published><updated>2010-10-08T02:36:23.251-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Cloud Computing'/><title type='text'>Meeting CIO Challenges with WSO2 Stratos</title><content type='html'>&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/6rYzSBuwHoc&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/6rYzSBuwHoc&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="385" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-5859962820423937031?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/5859962820423937031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=5859962820423937031' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/5859962820423937031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/5859962820423937031'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/06/meeting-cio-challenges-with-wso2.html' title='Meeting CIO Challenges with WSO2 Stratos'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-6273198292673920711</id><published>2010-05-28T23:26:00.000-07:00</published><updated>2010-05-29T04:26:40.044-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='FOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><title type='text'>Call MS SQL Server SPs from WSO2 ESB</title><content type='html'>&lt;div style="text-align: justify;"&gt;This post will be focusing on MS SQL Server Stored Procedures(SP) and  follow up  my article titled "&lt;a href="http://wso2.org/library/tutorials/2010/05/call-database-stored-procedures-wso2-esb" target="_blank" rel="nofollow"&gt;How to call database stored procedures from WSO2 ESB&lt;/a&gt;" on WSO2 &lt;a href="http://wso2.org/"&gt;OxygenTank&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You may think "&lt;span style="font-style: italic;"&gt;why is he writing a separate post addressing MS SQL Server?&lt;/span&gt;". The reason is that; when calling MS SQL Server SPs, you need to slightly modify the mediator configuration in order to successfully call a SP.&lt;br /&gt;&lt;br /&gt;Now let's dig in to "how to do this".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Setting up MS SQL database server&lt;/span&gt;&lt;br /&gt;1. Install and setup MS SQL Server.&lt;br /&gt;&lt;br /&gt;2. Create a sample database in MS SQL Server.&lt;br /&gt;Following sql statments cab be used to create the same enviornment discussed in  the above article.&lt;br /&gt;&lt;pre class="brush:js"&gt;SET ANSI_NULLS ON&lt;br /&gt;GO&lt;br /&gt;SET QUOTED_IDENTIFIER ON&lt;br /&gt;GO&lt;br /&gt;IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[company]') AND type in (N'U'))&lt;br /&gt;BEGIN&lt;br /&gt;CREATE TABLE [dbo].[company](&lt;br /&gt;[compName] [varchar](10) NULL,&lt;br /&gt;[id] [varchar](10) NULL,&lt;br /&gt;[price] [decimal](18, 0) NULL,&lt;br /&gt;[location] [varchar](10) NULL&lt;br /&gt;) ON [PRIMARY]&lt;br /&gt;END&lt;br /&gt;GO&lt;br /&gt;SET ANSI_NULLS ON&lt;br /&gt;GO&lt;br /&gt;SET QUOTED_IDENTIFIER ON&lt;br /&gt;GO&lt;br /&gt;IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[getCompany]') AND type in (N'P', N'PC'))&lt;br /&gt;BEGIN&lt;br /&gt;EXEC dbo.sp_executesql @statement = N'&lt;br /&gt;CREATE procedure [dbo].[getCompany] @compname varchar(10) as&lt;br /&gt;select * from company where compName = @compname&lt;br /&gt;'&lt;br /&gt;END&lt;br /&gt;GO&lt;br /&gt;SET ANSI_NULLS ON&lt;br /&gt;GO&lt;br /&gt;SET QUOTED_IDENTIFIER ON&lt;br /&gt;GO&lt;br /&gt;IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[updateCompany]') AND type in (N'P', N'PC'))&lt;br /&gt;BEGIN&lt;br /&gt;EXEC dbo.sp_executesql @statement = N'&lt;br /&gt;CREATE procedure [dbo].[updateCompany] @compPrice decimal, @compName varchar(10) as&lt;br /&gt;update company set price = @compPrice where compName = @compName&lt;br /&gt;'&lt;br /&gt;END&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;Setting up ESB server&lt;/span&gt;&lt;br /&gt;1. Download latest version of WSO2 ESB from http://wso2.org/downloads/esb. This tutorial will be demonstrated upon the latest release of the WSO2 ESB. ie. WSO2 ESB-3.0.0.&lt;br /&gt;&lt;br /&gt;2. Install it as a standalone server. Install location will be referred to as ESB_HOME from here onwards.&lt;br /&gt;&lt;br /&gt;3. When using MS SQL Server, ms-sql-jdbc.jar should be added to the ESB classpath(i.e. ESB_HOME/repository/components/lib/).&lt;br /&gt;&lt;br /&gt;4. Start WSO2ESB &lt;version&gt;using the startup scripts.&lt;br /&gt;eg. wso2server.bat for windows environments&lt;br /&gt;wso2server.sh for linux environments&lt;br /&gt;&lt;br /&gt;5. Open a web browser and navigate to https://localhost:9443/&lt;br /&gt;&lt;br /&gt;6. Login to ESB. The default username/password will be admin/admin. Go through the User Interface and get yourself familiarized with WSO2 ESB environment.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ESB configuration&lt;/span&gt;&lt;br /&gt;Following is the Synapse configuration used to call the MS SQL Stored Procedure. Pay close attention on '&lt;span style="font-style: italic;"&gt;how the SP query is written inside the mediator&lt;/span&gt;' :).&lt;br /&gt;&lt;pre class="brush:js"&gt;&amp;lt;definitions xmlns="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;sequence name="main"&amp;gt;&lt;br /&gt;&amp;lt;in&amp;gt;&lt;br /&gt;    &amp;lt;send&amp;gt;&lt;br /&gt;        &amp;lt;endpoint&amp;gt;&lt;br /&gt;            &amp;lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/&amp;gt;&lt;br /&gt;        &amp;lt;/endpoint&amp;gt;&lt;br /&gt;    &amp;lt;/send&amp;gt;&lt;br /&gt;&amp;lt;/in&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;out&amp;gt;&lt;br /&gt;    &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;        &amp;lt;property name="text"&lt;br /&gt;                  value="** Reporting to the Database **"/&amp;gt;&lt;br /&gt;    &amp;lt;/log&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;dbreport&amp;gt;&lt;br /&gt;        &amp;lt;connection&amp;gt;&lt;br /&gt;            &amp;lt;pool&amp;gt;&lt;br /&gt;&amp;lt;url&amp;gt;jdbc:sqlserver://10.100.1.200:1433;databaseName=ESB_SP_SAMPLE&amp;lt;/url&amp;gt;&lt;br /&gt;&amp;lt;user&amp;gt;sa&amp;lt;/user&amp;gt;&lt;br /&gt;&amp;lt;password&amp;gt;test&amp;lt;/password&amp;gt;&lt;br /&gt;&amp;lt;driver&amp;gt;com.microsoft.sqlserver.jdbc.SQLServerDriver&amp;lt;/driver&amp;gt;&lt;br /&gt;            &amp;lt;/pool&amp;gt;&lt;br /&gt;        &amp;lt;/connection&amp;gt;&lt;br /&gt;        &amp;lt;statement&amp;gt;&lt;br /&gt;            &amp;lt;sql&amp;gt;{ call updateCompany(?,?) }&amp;lt;/sql&amp;gt;&lt;br /&gt;            &amp;lt;parameter expression="//m0:return/m1:last/child::text()"&lt;br /&gt;                       xmlns:m0="http://services.samples" xmlns:m1="http://services.samples/xsd" type="DOUBLE"/&amp;gt;&lt;br /&gt;            &amp;lt;parameter expression="//m0:return/m1:symbol/child::text()"&lt;br /&gt;                       xmlns:m0="http://services.samples" xmlns:m1="http://services.samples/xsd" type="VARCHAR"/&amp;gt;&lt;br /&gt;        &amp;lt;/statement&amp;gt;&lt;br /&gt;    &amp;lt;/dbreport&amp;gt;&lt;br /&gt;    &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;        &amp;lt;property name="text"&lt;br /&gt;                  value="** Looking up from the Database **"/&amp;gt;&lt;br /&gt;    &amp;lt;/log&amp;gt;&lt;br /&gt;    &amp;lt;dblookup&amp;gt;&lt;br /&gt;        &amp;lt;connection&amp;gt;&lt;br /&gt;            &amp;lt;pool&amp;gt;&lt;br /&gt;&amp;lt;url&amp;gt;jdbc:sqlserver://10.100.1.200:1433;databaseName=ESB_SP_SAMPLE&amp;lt;/url&amp;gt;&lt;br /&gt;&amp;lt;user&amp;gt;sa&amp;lt;/user&amp;gt;&lt;br /&gt;&amp;lt;password&amp;gt;test&amp;lt;/password&amp;gt;&lt;br /&gt;&amp;lt;driver&amp;gt;com.microsoft.sqlserver.jdbc.SQLServerDriver&amp;lt;/driver&amp;gt;&lt;br /&gt;            &amp;lt;/pool&amp;gt;&lt;br /&gt;        &amp;lt;/connection&amp;gt;&lt;br /&gt;        &amp;lt;statement&amp;gt;&lt;br /&gt;            &amp;lt;sql&amp;gt;{ call getCompany(?) }&amp;lt;/sql&amp;gt;&lt;br /&gt;            &amp;lt;parameter expression="//m0:return/m1:symbol/child::text()"&lt;br /&gt;                       xmlns:m0="http://services.samples" xmlns:m1="http://services.samples/xsd" type="VARCHAR"/&amp;gt;&lt;br /&gt;            &amp;lt;result name="stock_prize" column="price"/&amp;gt;&lt;br /&gt;        &amp;lt;/statement&amp;gt;&lt;br /&gt;    &amp;lt;/dblookup&amp;gt;&lt;br /&gt;    &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;        &amp;lt;property name="text"&lt;br /&gt;                  expression="fn:concat('Stock Prize - ',get-property('stock_prize'))"/&amp;gt;&lt;br /&gt;    &amp;lt;/log&amp;gt;&lt;br /&gt;    &amp;lt;send/&amp;gt;&lt;br /&gt;&amp;lt;/out&amp;gt;&lt;br /&gt;&amp;lt;/sequence&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/definitions&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;Running the sample.&lt;/span&gt;&lt;br /&gt;1. Start the WSO2 ESB server with the attached synapse configuration named dbreport_synapse_config.xml.&lt;br /&gt;&lt;br /&gt;2. Start the Axis2 server and deploy the SimpleStockQuoteService if not already done.&lt;br /&gt;&lt;br /&gt;3. Run the client.&lt;br /&gt;&lt;pre class="brush:js"&gt;ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dsymbol=WSO2&lt;/pre&gt;&lt;/version&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-6273198292673920711?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/6273198292673920711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=6273198292673920711' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/6273198292673920711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/6273198292673920711'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/05/call-ms-sql-server-sps-from-wso2-esb.html' title='Call MS SQL Server SPs from WSO2 ESB'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-4767960811123078007</id><published>2010-05-19T21:08:00.000-07:00</published><updated>2010-05-29T03:57:59.789-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>SOA Summer School - 2010</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a href="http://wso2.com/about/news/wso2-brings-back-free-soa-summer-school-by-popular-demand/"&gt;Summer School&lt;/a&gt; will focus on Service Oriented Architecture (SOA) concepts, technologies, and best practices. In addition to that, this year's Summer School sessions will be including insights into proven techniques for cloud deployments, business process management (BPM), complex event processing (CEP) , business rules processing and more.&lt;br /&gt;&lt;br /&gt;Summer School 2010 runs for two months starting 10&lt;sup&gt;th&lt;/sup&gt; June and ending on 29&lt;sup&gt;th&lt;/sup&gt; July. Do you know what's the best news about Summer School is ? &lt;span style="font-weight: bold;"&gt;IT'S ABSOLUTELY FREE ! :)&lt;/span&gt;&lt;span style="font-style: italic;"&gt; yes, free as in open source&lt;/span&gt;&lt;span&gt; ;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you are interested, you can register &lt;a href="http://wso2.org/training"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-4767960811123078007?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/4767960811123078007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=4767960811123078007' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/4767960811123078007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/4767960811123078007'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/05/soa-summer-school-2010.html' title='SOA Summer School - 2010'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-3411030654767543163</id><published>2010-05-11T08:22:00.000-07:00</published><updated>2010-05-11T08:41:09.008-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='articles'/><title type='text'>Call database stored procedures from WSO2 ESB</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span&gt;Stored procedure is a powerful mechanism to interact with a relational database. It allows business logic to be embedded inside database as an API.  Stored procedure is stored in a precompiled format within the database itself resulting in faster execution speed. &lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;WSO2 Enterprise Service Bus is capable of calling database Stored Procedures via the db mediators. If your application uses stored procedures and you want to expose them to outside business systems, WSO2 ESB is the answer that you were looking for.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Read the full article on &lt;a href="http://wso2.org/library/tutorials/2010/05/call-database-stored-procedures-wso2-esb"&gt;OT&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-3411030654767543163?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/3411030654767543163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=3411030654767543163' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/3411030654767543163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/3411030654767543163'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/05/call-database-stored-procedures-from.html' title='Call database stored procedures from WSO2 ESB'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-69425572323519922</id><published>2010-05-02T21:14:00.000-07:00</published><updated>2010-05-02T22:35:52.081-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><title type='text'>The WSO2 Enterprise Service Bus (ESB) 3.0.0 Released</title><content type='html'>&lt;p style="text-align: justify;"&gt; The WSO2 ESB team is pleased to announce the release of version 3.0.0 of the Open Source Enterprise Service Bus (ESB). &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt; WSO2 ESB is a fast, lightweight and user friendly open source Enterprise Service Bus (ESB) distributed under the &lt;a href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank"&gt;Apache Software License v2.0&lt;/a&gt;. WSO2 ESB allows system administrators and developers to easily configure message routing, intermediation, transformation, logging, task scheduling, fail over routing and load balancing. It also supports transport switching, eventing, rule based mediation and priority based mediation for advanced integration requirements. The ESB runtime is designed to be completely asynchronous, non-blocking and streaming based on the &lt;a href="http://synapse.apache.org/" target="_blank"&gt;Apache Synapse&lt;/a&gt; mediation engine. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt; WSO2 ESB 3.0.0 is developed on top of the revolutionary &lt;a href="http://wso2.org/projects/carbon" target="_blank"&gt;WSO2 Carbon platform&lt;/a&gt; (Middleware a' la carte), an OSGi based framework that provides seamless modularity to your SOA via componentization. This release also contains many new features and a range of optional components (add-ons) that can be installed to customize the behavior of the ESB. Further, any existing features of the ESB which are not required to your environment can be easily removed using the underlying provisioning framework of Carbon. In brief, WSO2 ESB can be fully customized and tailored to meet your exact SOA needs. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt; You can download this distribution from &lt;a href="http://wso2.org/downloads/esb" target="_blank"&gt; http://wso2.org/downloads/esb&lt;/a&gt; and give it a try.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h3 style="text-align: justify;"&gt;How to Run &lt;/h3&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;ol style="text-align: justify;" type="1"&gt;&lt;li&gt;Extract the downloaded zip&lt;/li&gt;&lt;li&gt;Go to the bin directory in the extracted folder&lt;/li&gt;&lt;li&gt;Run the wso2server.sh or wso2server.bat as appropriate&lt;/li&gt;&lt;li&gt;Point your browser to the URL &lt;a href="https://localhost:9443/carbon" target="_blank"&gt;https://localhost:9443/carbon&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Use "admin", "admin" as the username and password to login as an admin and create a user account&lt;/li&gt;&lt;li&gt;Assign the required permissions to the user through a role&lt;/li&gt;&lt;li&gt;If you need to start the OSGi console with the server use the property -DosgiConsole when starting the server. The INSTALL.txt file found on the installation directory will give you a comprehensive set of options and properties that can be passed into the startup script&lt;/li&gt;&lt;li&gt;Sample configurations can be started by the wso2esb-samples script passing the sample number with the -sn option (Please have a look at the samples guide for more information, on running samples)&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h3 style="text-align: justify;"&gt;New Features of WSO2 ESB 3.0.0&lt;/h3&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Priority based mediation through priority executors&lt;/li&gt;&lt;li&gt;WS-Discovery support and dynamic endpoint discovery&lt;/li&gt;&lt;li&gt;Message Relay for efficient pass through of messages&lt;/li&gt;&lt;li&gt;Component manager to install and uninstall features (provisioning support)&lt;/li&gt;&lt;li&gt;Common Internet File System (CIFS) support through the VFS transport&lt;/li&gt;&lt;li&gt;File locking functionality in the VFS transport to support concurrent polling&lt;/li&gt;&lt;li&gt;Smooks mediator for efficient message transformation&lt;/li&gt;&lt;li&gt;Enrich mediator for smart message manipulation&lt;/li&gt;&lt;li&gt;OAuth mediator for 2-legged OAuth support&lt;/li&gt;&lt;li&gt;Default endpoint UI&lt;/li&gt;&lt;li&gt;Hot deploy and hot update configuration elements (sequences, endpoints, proxy services etc)&lt;/li&gt;&lt;li&gt;Transport level statistics collection and monitoring&lt;/li&gt;&lt;li&gt;POX security support&lt;/li&gt;&lt;li&gt;Dependency detection and alerting for mediation configuration elements&lt;/li&gt;&lt;li&gt;Mediation statistics API and custom mediation statistics consumers&lt;/li&gt;&lt;li&gt;Multiple certificate/identity support in the NHTTP transport sender&lt;/li&gt;&lt;li&gt;Improved logging capabilities for the NHTTP transport&lt;/li&gt;&lt;li&gt;Templates based proxy service development in the UI&lt;/li&gt;&lt;li&gt;Dashboard to monitor server environment and runtime&lt;/li&gt;&lt;li&gt;Easy creation and management capabilities for dynamic sequences and endpoints&lt;/li&gt;&lt;li&gt;Pagination to service management, endpoint management and sequence management UIs&lt;/li&gt;&lt;li&gt;Obtaining resources like WSDL's through web proxy servers&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h3 style="text-align: justify;"&gt;Key Features of WSO2 ESB&lt;/h3&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Proxy services - facilitating synchronous/asynchronous transport, interface (WSDL/Schema/Policy), message format (SOAP 1.1/1.2, POX/REST, Text, Binary), QoS (WS-Addressing/WS-Security/WS-&lt;wbr&gt;RM) and optimization switching (MTOM/SwA).&lt;/li&gt;&lt;li&gt;Non-blocking HTTP/S transports based on Apache HttpCore-NIO for ultrafast execution and support for thousands of connections at high concurreny with constant memory usage.&lt;/li&gt;&lt;li&gt;Built in Registry/Repository, facilitating dynamic updating and reloading of the configuration and associated resources (e.g. XSLTs, XSD, WSDL, Policies, JS configurations ..)&lt;/li&gt;&lt;li&gt;Easily extendable via custom Java classes (mediator and command)/Spring configurations, or BSF Scripting languages (Javascript, Ruby, Groovy, etc.)&lt;/li&gt;&lt;li&gt;Built in support for scheduling tasks using the Quartz scheduler.&lt;/li&gt;&lt;li&gt;Load-balancing (with or without sticky sessions)/Fail-over, and clustered Throttling and Caching support&lt;/li&gt;&lt;li&gt;WS-Security, WS-Reliable Messaging, Caching &amp;amp; Throttling configurable via (message/operation/service level) WS-Policies&lt;/li&gt;&lt;li&gt;Lightweight, XML and Web services centric messaging model&lt;/li&gt;&lt;li&gt; Support for industrial standards (Hessian binary web service protocol/ Financial Information eXchange protocol and optional Health Level-7 protocol)&lt;/li&gt;&lt;li&gt;Enhanced support for the VFS (File/FTP/SFTP), JMS, Mail transports with optional TCP/UDP transports and transport switching among any of the above transports&lt;/li&gt;&lt;li&gt;Support for message splitting &amp;amp; aggregation using the EIP and service callouts&lt;/li&gt;&lt;li&gt;Database lookup &amp;amp; store support with DBMediators with reusable database connection pools&lt;/li&gt;&lt;li&gt;WS-Eventing support with event sources and event brokering&lt;/li&gt;&lt;li&gt;Rule based mediation of the messages using the Drools rule engine&lt;/li&gt;&lt;li&gt;Transactions support via the JMS transport and Transaction mediator for database mediators&lt;/li&gt;&lt;li&gt;Internationalized GUI management console with user management for configuration development&lt;/li&gt;&lt;li&gt;Integrated monitoring support with statistics, configurable logging and tracing&lt;/li&gt;&lt;li&gt;JMX monitoring support and JMX management capabilities like, Graceful/Forceful shutdown/restart&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h3 style="text-align: justify;"&gt;Bugs Fixed in This Release&lt;/h3&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt; This release of WSO2 ESB comes with a number of bug fixes, both in the base framework and the ESB specific componenents. All the issues which have been fixed in ESB 3.0.0 are recorded at following locations: &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;a href="https://wso2.org/jira/secure/IssueNavigator.jspa?requestId=10305" target="_blank"&gt; Fixed ESB specific issues&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://wso2.org/jira/secure/IssueNavigator.jspa?requestId=10306" target="_blank"&gt; Fixed base framework issues&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h3 style="text-align: justify;"&gt;Known Issues&lt;/h3&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Endpoint UI does not support selecting already existing endpoints as child endpoints when creating load balance/failover endpoints&lt;/li&gt;&lt;li&gt;HTTP GET requests performed on an endpoint that has a trailing '/' character, do not work properly&lt;/li&gt;&lt;li&gt;SOAP tracer does not work when the message relay is activated&lt;/li&gt;&lt;li&gt;The sequence editor and the built-in XML editors do not work properly on Google Chrome&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt; All the open issues pertaining to WSO2 ESB 3.0 are reported at following locations: &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;a href="https://wso2.org/jira/secure/IssueNavigator.jspa?requestId=10302" target="_blank"&gt; WSO2 ESB 3.0 component issues&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://wso2.org/jira/secure/IssueNavigator.jspa?requestId=10303" target="_blank"&gt; WSO2 ESB 3.0 product issues&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://wso2.org/jira/secure/IssueNavigator.jspa?requestId=10304" target="_blank"&gt; WSO2 ESB 3.0 base framework issues&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h3 style="text-align: justify;"&gt;How You Can Contribute&lt;/h3&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h4 style="text-align: justify;"&gt; Mailing Lists &lt;/h4&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt; Join our mailing list and correspond with the developers directly. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt; Developer List : &lt;a href="mailto:carbon-dev@wso2.org" target="_blank"&gt;carbon-dev@wso2.org&lt;/a&gt; | &lt;a href="mailto:carbon-dev-request@wso2.org?subject=subscribe" target="_blank"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://wso2.org/mailarchive/carbon-dev/" target="_blank"&gt;Mail Archive&lt;/a&gt;&lt;/li&gt;&lt;li&gt; User List : &lt;a href="mailto:esb-java-user@wso2.org" target="_blank"&gt;esb-java-user@wso2.org&lt;/a&gt; | &lt;a href="mailto:esb-java-user-request@wso2.org?subject=subscribe" target="_blank"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://wso2.org/mailarchive/esb-java-user/" target="_blank"&gt;Mail Archive&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h4 style="text-align: justify;"&gt; Reporting Issues &lt;/h4&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt; WSO2 encourages you to report issues and your enhancement requests for the WSO2 ESB using the public &lt;a href="http://www.wso2.org/jira/browse/ESBJAVA" target="_blank"&gt;JIRA&lt;/a&gt;. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt; You can also watch how they are resolved, and comment on the progress.. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h4 style="text-align: justify;"&gt; Discussion Forums &lt;/h4&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt; Alternatively, questions could be raised using the forums available. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;&lt;a href="http://wso2.org/forum/187" target="_blank"&gt;WSO2 ESB Forum&lt;/a&gt; : Discussion forum for WSO2 ESB developers/users &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h2 style="text-align: justify;"&gt;Support&lt;/h2&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt; We are committed to ensuring that your enterprise middleware deployment is completely supported from evaluation to production. Our unique approach ensures that all support leverages our open development methodology and is provided by the very same engineers who build the technology. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt; For more details and to take advantage of this unique opportunity please visit &lt;a href="http://wso2.com/support" target="_blank"&gt;http://wso2.com/support&lt;/a&gt;. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt; For more information about WSO2 ESB please see &lt;a href="http://wso2.com/products/enterprise-service-bus/" target="_blank"&gt; http://wso2.com/products/&lt;wbr&gt;enterprise-service-bus&lt;/a&gt;. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;&lt;i&gt;-- The WSO2 ESB Team&lt;/i&gt;&lt;i&gt; --&lt;/i&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-69425572323519922?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/69425572323519922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=69425572323519922' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/69425572323519922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/69425572323519922'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/05/wso2-enterprise-service-bus-esb-300.html' title='The WSO2 Enterprise Service Bus (ESB) 3.0.0 Released'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-2148207820356793466</id><published>2010-04-30T10:35:00.001-07:00</published><updated>2010-04-30T13:25:22.680-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='Synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Mediator to support Database stored procedure</title><content type='html'>&lt;span&gt;Following blogpost shows how to use Apache Synapse's dblookup mediator&lt;/span&gt;&lt;span&gt; to support a mysql database stored procedure.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Setting up mysql database server &lt;/span&gt;&lt;br /&gt;1. Install mysql server.&lt;br /&gt;&lt;pre class="brush:js"&gt;heshan@heshan-laptop:~$ apt-get install mysql&lt;/pre&gt;&lt;br /&gt;2. Connect to mysql server.&lt;br /&gt;&lt;pre class="brush:js"&gt;heshan@heshan-laptop:~$ mysql -u root -p&lt;br /&gt;Enter password:&lt;br /&gt;Welcome to the MySQL monitor.  Commands end with ; or \g.&lt;br /&gt;Your MySQL connection id is 300&lt;br /&gt;Server version: 5.0.75-0ubuntu10.3 (Ubuntu)&lt;br /&gt;&lt;br /&gt;Type 'help;' or '\h' for help. Type '\c' to clear the buffer.&lt;br /&gt;&lt;br /&gt;mysql&gt;&lt;/pre&gt;&lt;br /&gt;3. Create a sample databasae&lt;br /&gt;&lt;pre class="brush:js"&gt;mysql&gt;CREATE DATABASE comp;&lt;/pre&gt;&lt;br /&gt;4. Create a table using the following statement.&lt;br /&gt;&lt;pre class="brush:js"&gt;mysql&gt;CREATE TABLE company(name varchar(10), id varchar(10), price double);&lt;/pre&gt;&lt;br /&gt;5. Inserts some data using following statements&lt;br /&gt;&lt;pre class="brush:js"&gt;mysql&gt;INSERT INTO company VALUES ('IBM','c1',3.7563);&lt;br /&gt;mysql&gt;INSERT INTO company VALUES ('SUN','c2',3.2554);&lt;br /&gt;mysql&gt;INSERT INTO company VALUES ('MSFT','c3',0.0);&lt;/pre&gt;&lt;br /&gt;6. Create a Stored Procedure.&lt;br /&gt;&lt;pre class="brush:js"&gt;mysql&gt;CREATE PROCEDURE getCompany(compName VARCHAR(10)) SELECT name, id, price FROM company WHERE name = compName;&lt;/pre&gt;&lt;br /&gt;7.Add mysql-connector-java-5.1.12-bin.jar to the classpath. This can be done by putting the jar into the Synapse lib directory.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Running the Synapse sample&lt;/span&gt;&lt;br /&gt;1. Save the following synapse-configuration as synapse_sample_364.xml to the samples folder.&lt;br /&gt;&lt;pre class="brush:js"&gt;SYNAPSE_HOME/repository/conf/sample/synapse_sample_364.xml&lt;/pre&gt;&lt;br /&gt;2. Synapse configuration.&lt;br /&gt;&lt;pre class="brush:js"&gt;&amp;lt;!-- SYNAPSE_HOME/repository/conf/sample/synapse_sample_364.xml --&amp;gt;&lt;br /&gt;&amp;lt;definitions xmlns="http://synapse.apache.org/ns/2010/04/configuration"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;sequence name="myFaultHandler"&amp;gt;&lt;br /&gt;   &amp;lt;makefault response="true"&amp;gt;&lt;br /&gt;       &amp;lt;code value="tns:Receiver" xmlns:tns="http://www.w3.org/2003/05/soap-envelope"/&amp;gt;&lt;br /&gt;       &amp;lt;reason expression="get-property('ERROR_MESSAGE')"/&amp;gt;&lt;br /&gt;   &amp;lt;/makefault&amp;gt;&lt;br /&gt;   &amp;lt;send/&amp;gt;&lt;br /&gt;   &amp;lt;drop/&amp;gt;&lt;br /&gt;&amp;lt;/sequence&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;sequence name="main" onError="myFaultHandler"&amp;gt;&lt;br /&gt;   &amp;lt;in&amp;gt;&lt;br /&gt;       &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;           &amp;lt;property name="text"&lt;br /&gt;                     value="** Looking up from the Database **"/&amp;gt;&lt;br /&gt;       &amp;lt;/log&amp;gt;&lt;br /&gt;       &amp;lt;dblookup&amp;gt;&lt;br /&gt;           &amp;lt;connection&amp;gt;&lt;br /&gt;               &amp;lt;pool&amp;gt;&lt;br /&gt;                   &amp;lt;driver&amp;gt;com.mysql.jdbc.Driver&amp;lt;/driver&amp;gt;&lt;br /&gt;                   &amp;lt;url&amp;gt;jdbc:mysql://localhost/comp&amp;lt;/url&amp;gt;&lt;br /&gt;                   &amp;lt;user&amp;gt;root&amp;lt;/user&amp;gt;&lt;br /&gt;                   &amp;lt;password&amp;gt;admin&amp;lt;/password&amp;gt;&lt;br /&gt;               &amp;lt;/pool&amp;gt;&lt;br /&gt;           &amp;lt;/connection&amp;gt;&lt;br /&gt;           &amp;lt;statement&amp;gt;&lt;br /&gt;               &amp;lt;sql&amp;gt;call getCompany(?)&amp;lt;/sql&amp;gt;&lt;br /&gt;               &amp;lt;parameter expression="//m0:getQuote/m0:request/m0:symbol"&lt;br /&gt;                          xmlns:m0="http://services.samples" type="VARCHAR"/&amp;gt;&lt;br /&gt;               &amp;lt;result name="company_id" column="id"/&amp;gt;&lt;br /&gt;           &amp;lt;/statement&amp;gt;&lt;br /&gt;       &amp;lt;/dblookup&amp;gt;&lt;br /&gt;&lt;br /&gt;       &amp;lt;switch source="get-property('company_id')"&amp;gt;&lt;br /&gt;           &amp;lt;case regex="c1"&amp;gt;&lt;br /&gt;               &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;                   &amp;lt;property name="text"&lt;br /&gt;                             expression="fn:concat('Company ID - ',get-property('company_id'))"/&amp;gt;&lt;br /&gt;               &amp;lt;/log&amp;gt;&lt;br /&gt;               &amp;lt;send&amp;gt;&lt;br /&gt;                   &amp;lt;endpoint&amp;gt;&lt;br /&gt;                       &amp;lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/&amp;gt;&lt;br /&gt;                   &amp;lt;/endpoint&amp;gt;&lt;br /&gt;               &amp;lt;/send&amp;gt;&lt;br /&gt;           &amp;lt;/case&amp;gt;&lt;br /&gt;           &amp;lt;case regex="c2"&amp;gt;&lt;br /&gt;               &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;                   &amp;lt;property name="text"&lt;br /&gt;                             expression="fn:concat('Company ID - ',get-property('company_id'))"/&amp;gt;&lt;br /&gt;               &amp;lt;/log&amp;gt;&lt;br /&gt;               &amp;lt;send&amp;gt;&lt;br /&gt;                   &amp;lt;endpoint&amp;gt;&lt;br /&gt;                       &amp;lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/&amp;gt;&lt;br /&gt;                   &amp;lt;/endpoint&amp;gt;&lt;br /&gt;               &amp;lt;/send&amp;gt;&lt;br /&gt;           &amp;lt;/case&amp;gt;&lt;br /&gt;           &amp;lt;case regex="c3"&amp;gt;&lt;br /&gt;               &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;                   &amp;lt;property name="text"&lt;br /&gt;                             expression="fn:concat('Company ID - ',get-property('company_id'))"/&amp;gt;&lt;br /&gt;               &amp;lt;/log&amp;gt;&lt;br /&gt;               &amp;lt;send&amp;gt;&lt;br /&gt;                   &amp;lt;endpoint&amp;gt;&lt;br /&gt;                       &amp;lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/&amp;gt;&lt;br /&gt;                   &amp;lt;/endpoint&amp;gt;&lt;br /&gt;               &amp;lt;/send&amp;gt;&lt;br /&gt;           &amp;lt;/case&amp;gt;&lt;br /&gt;           &amp;lt;default&amp;gt;&lt;br /&gt;               &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;                   &amp;lt;property name="text" value="** Unrecognized Company ID **"/&amp;gt;&lt;br /&gt;               &amp;lt;/log&amp;gt;&lt;br /&gt;               &amp;lt;makefault response="true"&amp;gt;&lt;br /&gt;                   &amp;lt;code value="tns:Receiver"&lt;br /&gt;                         xmlns:tns="http://www.w3.org/2003/05/soap-envelope"/&amp;gt;&lt;br /&gt;                   &amp;lt;reason value="** Unrecognized Company ID **"/&amp;gt;&lt;br /&gt;               &amp;lt;/makefault&amp;gt;&lt;br /&gt;               &amp;lt;send/&amp;gt;&lt;br /&gt;               &amp;lt;drop/&amp;gt;&lt;br /&gt;           &amp;lt;/default&amp;gt;&lt;br /&gt;       &amp;lt;/switch&amp;gt;&lt;br /&gt;       &amp;lt;drop/&amp;gt;&lt;br /&gt;   &amp;lt;/in&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;out&amp;gt;&lt;br /&gt;       &amp;lt;send/&amp;gt;&lt;br /&gt;   &amp;lt;/out&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/sequence&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/definitions&amp;gt;&lt;/pre&gt;&lt;br /&gt;3. Start the Synapse configuration numbered 364.&lt;br /&gt;&lt;pre class="brush:js"&gt;i.e. synapse -sample 364&lt;/pre&gt;&lt;br /&gt;4. Start the Axis2 server and deploy the SimpleStockQuoteService if not already done.&lt;br /&gt;&lt;br /&gt;5. Run the client.&lt;br /&gt;&lt;pre class="brush:js"&gt;ant stockquote -Daddurl=http://localhost:9000/soap/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dsymbol=IBM &lt;/pre&gt;&lt;br /&gt;6. Voila, you have invoked a database stored procedure.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-2148207820356793466?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/2148207820356793466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=2148207820356793466' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/2148207820356793466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/2148207820356793466'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/04/mediator-to-support-database-stored.html' title='Mediator to support Database stored procedure'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-2610158237084445168</id><published>2010-04-27T00:51:00.000-07:00</published><updated>2010-04-27T08:28:18.183-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='Synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Running Synapse ESB's Script Mediator with include option</title><content type='html'>&lt;div style="text-align: justify;"&gt;Apache Synapse ESB's Script Mediator can be used for message mediation. &lt;a href="http://synapse.apache.org/Synapse_Samples.html#Sample350"&gt;Sample 350&lt;/a&gt; of Synapse samples is demonstrating how this Script Mediator can be used in a real world scenario.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Suppose the script you specified is calling a function of another script. Then the latter script should also be included in the script mediator configuration. It's done using the &amp;lt;include&amp;gt; element. The key attribute of the &amp;lt;include&amp;gt; element can be specified with the script program statements stored in a separate file, which is referenced via the local or remote registry entry. Following example shows how it can be done.&lt;br /&gt;&lt;pre class="brush:js"&gt;&amp;lt;script key="string" language="string" [function="script-function-name"]&amp;gt;&lt;br /&gt;  &amp;lt;include key="string"/&amp;gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;include&gt;&lt;include&gt;&lt;/include&gt;&lt;/include&gt;&lt;/div&gt;&lt;include&gt;&lt;include&gt;&lt;/include&gt;&lt;/include&gt;&lt;div style="text-align: justify;"&gt;&lt;include&gt;&lt;include&gt;I am using the same example used in Sample 350 to demonstrate this scenario.&lt;/include&gt;&lt;/include&gt;&lt;br /&gt;&lt;include&gt;&lt;include&gt;&lt;/include&gt;&lt;/include&gt;&lt;/div&gt;&lt;include&gt;&lt;include&gt;&lt;br /&gt;&lt;/include&gt;&lt;/include&gt;&lt;div style="text-align: justify;"&gt;&lt;include&gt;&lt;include&gt;1) Replace the stockquoteTransform.js with the following javascript.&lt;/include&gt;&lt;/include&gt;&lt;br /&gt;&lt;include&gt;&lt;include&gt;&lt;/include&gt;&lt;/include&gt;&lt;/div&gt;&lt;include&gt;&lt;include&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;// stockquoteTransform.js&lt;br /&gt;function transformRequest(mc) {&lt;br /&gt;transformRequestFunction(mc);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function transformResponse(mc) {&lt;br /&gt;transformResponseFunction(mc);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/include&gt;&lt;/include&gt;&lt;div style="text-align: justify;"&gt;&lt;include&gt;&lt;include&gt;2) Add the following sample.js file to SYNAPSE_HOME/repository/samples/resources/script&lt;/include&gt;&lt;/include&gt;&lt;br /&gt;&lt;include&gt;&lt;include&gt;&lt;/include&gt;&lt;/include&gt;&lt;/div&gt;&lt;include&gt;&lt;include&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;// sample.js&lt;br /&gt;function transformRequestFunction(mc) {&lt;br /&gt;var symbol = mc.getPayloadXML()..*::Code.toString();&lt;br /&gt;mc.setPayloadXML(&lt;br /&gt; &amp;lt;m:getquote m="http://services.samples"&amp;gt;&lt;br /&gt;    &amp;lt;m:request&amp;gt;&lt;br /&gt;       &amp;lt;m:symbol&amp;gt;{symbol}&amp;lt;/m:symbol&amp;gt;&lt;br /&gt;    &amp;lt;/m:request&amp;gt;&lt;br /&gt; &amp;lt;/m:getquote&amp;gt;);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function transformResponse(mc) {&lt;br /&gt;var symbol = mc.getPayloadXML()..*::symbol.toString();&lt;br /&gt;var price = mc.getPayloadXML()..*::last.toString();&lt;br /&gt;mc.setPayloadXML(&lt;br /&gt; &amp;lt;m:checkpriceresponse m="http://services.samples/xsd"&amp;gt;&lt;br /&gt;&amp;lt;m:code&amp;gt;{symbol}&amp;lt;/m:code&amp;gt;&lt;br /&gt;&amp;lt;m:price&amp;gt;{price}&amp;lt;/m:price&amp;gt;&lt;br /&gt; &amp;lt;/m:checkpriceresponse&amp;gt;);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/include&gt;&lt;/include&gt;&lt;div style="text-align: justify;"&gt;&lt;include&gt;&lt;include&gt;3) Update the synapse configuration with the following configuration.&lt;/include&gt;&lt;/include&gt;&lt;br /&gt;&lt;include&gt;&lt;include&gt;&lt;/include&gt;&lt;/include&gt;&lt;/div&gt;&lt;include&gt;&lt;include&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;&amp;lt;definitions xmlns="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt;&amp;lt;localEntry key="stockquoteScript" src="file:repository/conf/sample/resources/script/stockquoteTransform.js"/&amp;gt;&lt;br /&gt;&amp;lt;localEntry key="sampleScript" src="file:repository/samples/resources/script/sample.js"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;in&amp;gt;&lt;br /&gt; &amp;lt;!-- transform the custom quote request into a standard quote request expected by the service --&amp;gt;&lt;br /&gt; &amp;lt;script language="js" key="stockquoteScript" function="transformRequest"&amp;gt;&lt;br /&gt; &amp;lt;include key="sampleScript"/&amp;gt;&lt;br /&gt;&amp;lt;script&amp;gt;&lt;br /&gt; &amp;lt;send&amp;gt;&lt;br /&gt;     &amp;lt;endpoint&amp;gt;&lt;br /&gt;         &amp;lt;address uri="http://localhost:9000/soap/SimpleStockQuoteService"/&amp;gt;&lt;br /&gt;     &amp;lt;/endpoint&amp;gt;&lt;br /&gt; &amp;lt;/send&amp;gt;&lt;br /&gt;&amp;lt;/in&amp;gt;&lt;br /&gt;&amp;lt;out&amp;gt;&lt;br /&gt; &amp;lt;!-- transform the standard response back into the custom format the client expects --&amp;gt;&lt;br /&gt; &amp;lt;script language="js" key="stockquoteScript" function="transformResponse"/&amp;gt;&lt;br /&gt;     &amp;lt;include key="sampleScript"/&amp;gt;&lt;br /&gt;&amp;lt;script&amp;gt;&lt;br /&gt; &amp;lt;send/&amp;gt;&lt;br /&gt;&amp;lt;/out&amp;gt;&lt;br /&gt;&amp;lt;/definitions&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/include&gt;&lt;/include&gt;&lt;div style="text-align: justify;"&gt;&lt;include&gt;&lt;include&gt;4) Start the Synapse ESB with the above configuration. Deploy the SimpleStockQuote service (which is shipped with Synapse) on SimpleAxisServer. Then invoke the client giving the following command.&lt;/include&gt;&lt;/include&gt;&lt;br /&gt;&lt;include&gt;&lt;include&gt;&lt;/include&gt;&lt;/include&gt;&lt;/div&gt;&lt;include&gt;&lt;include&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dmode=customquote &lt;/pre&gt;&lt;br /&gt;&lt;/include&gt;&lt;/include&gt;&lt;div style="text-align: justify;"&gt;&lt;include&gt;&lt;include&gt;5) It will yield the following result.&lt;/include&gt;&lt;/include&gt;&lt;br /&gt;&lt;include&gt;&lt;include&gt;&lt;/include&gt;&lt;/include&gt;&lt;/div&gt;&lt;include&gt;&lt;include&gt;&lt;pre class="brush:js"&gt;   [java] Custom :: Stock price = $161.76045110619708 &lt;/pre&gt;&lt;br /&gt;&lt;/include&gt;&lt;/include&gt;&lt;div style="text-align: justify;"&gt;&lt;include&gt;&lt;include&gt;6) For more information.&lt;/include&gt;&lt;/include&gt;&lt;br /&gt;&lt;include&gt;&lt;include&gt;&lt;/include&gt;&lt;/include&gt;&lt;/div&gt;&lt;include&gt;&lt;include&gt;WSO2 ESB articles - &lt;a href="http://wso2.org/library/esb"&gt;http://wso2.org/library/esb&lt;/a&gt;&lt;br /&gt;Apache Synapse - &lt;a href="http://synapse.apache.org/"&gt;http://synapse.apache.org/&lt;/a&gt;&lt;br /&gt;&lt;include&gt;&lt;include&gt;&lt;/include&gt;&lt;/include&gt;&lt;include&gt;&lt;include&gt;&lt;br /&gt;&lt;/include&gt;&lt;/include&gt;&lt;/include&gt;&lt;/include&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-2610158237084445168?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/2610158237084445168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=2610158237084445168' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/2610158237084445168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/2610158237084445168'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/04/running-synapse-esbs-script-mediator.html' title='Running Synapse ESB&apos;s Script Mediator with include option'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-4283962368007746449</id><published>2010-04-05T23:27:00.000-07:00</published><updated>2010-04-06T00:57:47.579-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Recursively remove .svn files</title><content type='html'>Following command can be used to recursively remove .svn files. &lt;br /&gt;&lt;br /&gt;Following command can be used to list out .svn files.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;find . -type d -name .svn&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Following command can be used to remove all .svn files.&lt;br /&gt;&lt;pre class="brush:js"&gt; &lt;br /&gt;rm -rf `find . -type d -name .svn`&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-4283962368007746449?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/4283962368007746449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=4283962368007746449' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/4283962368007746449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/4283962368007746449'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/04/recursively-remove-svn-files.html' title='Recursively remove .svn files'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-7034821976204959919</id><published>2010-04-02T18:40:00.000-07:00</published><updated>2010-04-02T19:16:34.809-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Carbon'/><title type='text'>Using Event Broker in WSO2 Carbon to generate Events</title><content type='html'>&lt;div style="text-align: justify;"&gt;Following code/configuration show what are required to make use of the event broker in carbon to generate events. In the following example we are looking at how to generate an email notification.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;1). Declarative Service Component to obtain the service URL.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;import org.apache.commons.logging.Log;&lt;br /&gt;import org.apache.commons.logging.LogFactory;&lt;br /&gt;import org.apache.axis2.context.ConfigurationContext;&lt;br /&gt;import org.apache.axis2.engine.AxisConfiguration;&lt;br /&gt;import org.apache.axis2.engine.ListenerManager;&lt;br /&gt;import org.apache.axis2.addressing.EndpointReference;&lt;br /&gt;import org.apache.axis2.AxisFault;&lt;br /&gt;import org.apache.log4j.*;&lt;br /&gt;import org.osgi.service.component.ComponentContext;&lt;br /&gt;import org.osgi.framework.BundleContext;&lt;br /&gt;import org.wso2.carbon.utils.ConfigurationContextService;&lt;br /&gt;import org.wso2.carbon.utils.NetworkUtils;&lt;br /&gt;import org.wso2.carbon.eventing.broker.services.EventBrokerService;&lt;br /&gt;&lt;br /&gt;import java.net.SocketException;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* @scr.component name="org.wso2.carbon.health.service" immediate="true"&lt;br /&gt;* @scr.reference name="configuration.context.service"&lt;br /&gt;* interface="org.wso2.carbon.utils.ConfigurationContextService" cardinality="1..1"&lt;br /&gt;* policy="dynamic" bind="setConfigurationContextService" unbind="unsetConfigurationContextService"&lt;br /&gt;* @scr.reference name="listener.manager.service"&lt;br /&gt;* interface="org.apache.axis2.engine.ListenerManager" cardinality="0..1" policy="dynamic"&lt;br /&gt;* bind="setListenerManager" unbind="unsetListenerManager"&lt;br /&gt;* @scr.reference name="eventbroker.service"&lt;br /&gt;* interface="org.wso2.carbon.eventing.broker.services.EventBrokerService"&lt;br /&gt;* cardinality="1..1" policy="dynamic" target="(name=HealthMonitorEventBroker)"&lt;br /&gt;* bind="setHealthMonitorEventBrokerService" unbind="unsetHealthMonitorEventBrokerService"&lt;br /&gt;*/&lt;br /&gt;public class HealthMonitorEventingServiceComponent {&lt;br /&gt;  private static Log log = LogFactory.getLog(HealthMonitorEventingServiceComponent.class);&lt;br /&gt;&lt;br /&gt;  private boolean configurationDone = false;&lt;br /&gt;&lt;br /&gt;  private ConfigurationContextService configurationContextService = null;&lt;br /&gt;&lt;br /&gt;  private ListenerManager listenerManager = null;&lt;br /&gt;&lt;br /&gt;  private boolean initialized = false;&lt;br /&gt;&lt;br /&gt;  private static EventBrokerService healthMonitorEventBrokerService = null;&lt;br /&gt;&lt;br /&gt;  private String endpoint = null;&lt;br /&gt;&lt;br /&gt;  private static BundleContext bundleContext = null;&lt;br /&gt;&lt;br /&gt;  static Logger logger = Logger.getLogger(HealthMonitorEventingServiceComponent.class);&lt;br /&gt;&lt;br /&gt;  Logger rootLogger = LogManager.getRootLogger();&lt;br /&gt;&lt;br /&gt;  protected void activate(ComponentContext context) {&lt;br /&gt;      bundleContext = context.getBundleContext();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;   public static BundleContext getBundleContext() {&lt;br /&gt;      return bundleContext;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  private void initializeAppender() {&lt;br /&gt;      if (listenerManager == null || healthMonitorEventBrokerService == null) {&lt;br /&gt;          return;&lt;br /&gt;      }&lt;br /&gt;      System.out.println("Carbon Health Monitor started!");&lt;br /&gt;&lt;br /&gt;      rootLogger.addAppender(new JiraAppender());&lt;br /&gt;      log.info("Jira appender added to the root logger");&lt;br /&gt;      // Setting level of root logger&lt;br /&gt;      //rootLogger.setLevel(Level.DEBUG);&lt;br /&gt;&lt;br /&gt;      addAppenders();&lt;br /&gt;      rootLogger.error("This log message is used to trigger the JiraAppender");&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public void addAppenders() {&lt;br /&gt;      SimpleLayout layout = new SimpleLayout();&lt;br /&gt;      FileAppender appender = null;&lt;br /&gt;      try {&lt;br /&gt;          appender = new FileAppender(layout, "/tmp/output1.txt", false);&lt;br /&gt;      } catch (Exception e) {&lt;br /&gt;          logger.error(e);&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      rootLogger.addAppender(appender);&lt;br /&gt;      logger.debug("DEBUG message 2");&lt;br /&gt;      logger.debug("DEBUG message 3");&lt;br /&gt;      log.info("Appender added to the logger");&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  protected void deactivate(ComponentContext context) {&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  protected void setConfigurationContextService(ConfigurationContextService configurationContextService) {&lt;br /&gt;      this.configurationContextService  = configurationContextService;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  protected void unsetConfigurationContextService(ConfigurationContextService configurationContextService) {&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  protected void setHealthMonitorEventBrokerService(EventBrokerService healthMonitorEventBrokerService) {&lt;br /&gt;      this.healthMonitorEventBrokerService = healthMonitorEventBrokerService;&lt;br /&gt;      initializeAppender();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  protected void unsetHealthMonitorEventBrokerService(EventBrokerService healthMonitorEventBrokerService) {&lt;br /&gt;      this.healthMonitorEventBrokerService = null;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  protected void setListenerManager(ListenerManager listenerManager) {&lt;br /&gt;      this.listenerManager = listenerManager;&lt;br /&gt;      initialize();&lt;br /&gt;      initializeAppender();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  protected void unsetListenerManager(ListenerManager listenerManager) {&lt;br /&gt;      this.listenerManager = null;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  private void initialize() {&lt;br /&gt;      ConfigurationContext serverConfigurationContext = configurationContextService.getServerConfigContext();&lt;br /&gt;      if (!configurationDone &amp;amp;&amp;amp; listenerManager != null) {&lt;br /&gt;          String host = null;&lt;br /&gt;          try {&lt;br /&gt;              host = NetworkUtils.getLocalHostname();&lt;br /&gt;          } catch (SocketException e) { }&lt;br /&gt;          if (serverConfigurationContext != null) {&lt;br /&gt;              AxisConfiguration config = serverConfigurationContext.getAxisConfiguration();&lt;br /&gt;              if (config != null &amp;amp;&amp;amp; config.getTransportIn("http") != null &amp;amp;&amp;amp;&lt;br /&gt;                      config.getTransportIn("http").getReceiver() != null) {&lt;br /&gt;                  try {&lt;br /&gt;                      EndpointReference[] eprArray = config.getTransportIn("http")&lt;br /&gt;                              .getReceiver().getEPRsForService("HealthMonitorEventingService",&lt;br /&gt;                                      host);&lt;br /&gt;                      if (eprArray != null &amp;amp;&amp;amp; eprArray[0] != null) {&lt;br /&gt;                          endpoint = eprArray[0].getAddress();&lt;br /&gt;                      }&lt;br /&gt;                  } catch (AxisFault e) { }&lt;br /&gt;              }&lt;br /&gt;          }&lt;br /&gt;          configurationDone = true;&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public static EventBrokerService getHealthMonitorEventBrokerService() {&lt;br /&gt;      return healthMonitorEventBrokerService;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;2). Generating Events.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;OMFactory fac = OMAbstractFactory.getOMFactory();&lt;br /&gt;Event&amp;lt;OMElement&amp;gt; event = new Event&amp;lt;OMElement&amp;gt;(zipElement);     &lt;br /&gt;event.setTopic("/mail-sending/mail");&lt;br /&gt;OMElement topic = EventBrokerUtils.buildTopic(fac,event);&lt;br /&gt;EventBrokerUtils.generateEvent(event.getMessage(), topic, HealthMonitorEventingServiceComponent.getHealthMonitorEventBrokerService());&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;3). The services.xml for the service.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;&amp;lt;serviceGroup&amp;gt;&lt;br /&gt;  &amp;lt;service name="HealthMonitorEventingService" targetNamespace="http://eventing.registry.carbon.wso2.org"&amp;gt;&lt;br /&gt;      &amp;lt;transports&amp;gt;&lt;br /&gt;          &amp;lt;transport&amp;gt;http&amp;lt;/transport&amp;gt;&lt;br /&gt;      &amp;lt;/transports&amp;gt;&lt;br /&gt;      &amp;lt;description&amp;gt;&lt;br /&gt;          Health Monitor Eventing Service&lt;br /&gt;      &amp;lt;/description&amp;gt;&lt;br /&gt;      &amp;lt;messageReceivers&amp;gt;&lt;br /&gt;          &amp;lt;messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"&lt;br /&gt;              class="org.wso2.carbon.eventing.broker.receivers.CarbonEventingMessageReceiver"/&amp;gt;&lt;br /&gt;          &amp;lt;messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"&lt;br /&gt;              class="org.wso2.carbon.eventing.broker.receivers.CarbonEventingMessageReceiver"/&amp;gt;&lt;br /&gt;      &amp;lt;/messageReceivers&amp;gt;&lt;br /&gt;      &amp;lt;parameter name="enableSubscribe" locked="true"&amp;gt;true&amp;lt;/parameter&amp;gt;&lt;br /&gt;      &amp;lt;operation name="Subscribe" mep="http://www.w3.org/ns/wsdl/in-out"&amp;gt;&lt;br /&gt;          &amp;lt;actionMapping&amp;gt;http://schemas.xmlsoap.org/ws/2004/08/eventing/Subscribe&amp;lt;/actionMapping&amp;gt;&lt;br /&gt;      &amp;lt;/operation&amp;gt;&lt;br /&gt;      &amp;lt;parameter name="enableRenew" locked="true"&amp;gt;false&amp;lt;/parameter&amp;gt;&lt;br /&gt;      &amp;lt;!--operation name="Renew" mep="http://www.w3.org/ns/wsdl/in-out"&amp;gt;&lt;br /&gt;          &amp;lt;actionMapping&amp;gt;http://schemas.xmlsoap.org/ws/2004/08/eventing/Renew&amp;lt;/actionMapping&amp;gt;&lt;br /&gt;      &amp;lt;/operation--&amp;gt;&lt;br /&gt;      &amp;lt;parameter name="enableUnsubscribe" locked="true"&amp;gt;false&amp;lt;/parameter&amp;gt;&lt;br /&gt;      &amp;lt;!--operation name="Unsubscribe" mep="http://www.w3.org/ns/wsdl/in-out"&amp;gt;&lt;br /&gt;          &amp;lt;actionMapping&amp;gt;http://schemas.xmlsoap.org/ws/2004/08/eventing/Unsubscribe&amp;lt;/actionMapping&amp;gt;&lt;br /&gt;      &amp;lt;/operation--&amp;gt;&lt;br /&gt;      &amp;lt;parameter name="enableGetStatus" locked="true"&amp;gt;false&amp;lt;/parameter&amp;gt;&lt;br /&gt;      &amp;lt;!--operation name="GetStatus" mep="http://www.w3.org/ns/wsdl/in-out"&amp;gt;&lt;br /&gt;          &amp;lt;actionMapping&amp;gt;http://schemas.xmlsoap.org/ws/2004/08/eventing/GetStatus&amp;lt;/actionMapping&amp;gt;&lt;br /&gt;      &amp;lt;/operation--&amp;gt;&lt;br /&gt;      &amp;lt;operation name="Publish" mep="http://www.w3.org/ns/wsdl/in-out"&amp;gt;&lt;br /&gt;          &amp;lt;actionMapping&amp;gt;http://ws.apache.org/ws/2007/05/eventing-extended/Publish&amp;lt;/actionMapping&amp;gt;&lt;br /&gt;      &amp;lt;/operation&amp;gt;&lt;br /&gt;&lt;br /&gt;      &amp;lt;parameter name="eventBrokerInstance" locked="true"&amp;gt;HealthMonitorEventBroker&amp;lt;/parameter&amp;gt;&lt;br /&gt;  &amp;lt;/service&amp;gt;&lt;br /&gt;  &amp;lt;parameter name="hiddenService" locked="true"&amp;gt;true&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/serviceGroup&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;4). Event Broker configuration&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;&amp;lt;eventBroker xmlns="http://wso2.org/ns/2009/09/eventing"&amp;gt;&lt;br /&gt;  &amp;lt;eventStream name="HealthMonitorEventBroker"&amp;gt;&lt;br /&gt;      &amp;lt;subscriptionManager class="org.wso2.carbon.eventing.impl.EmbeddedRegistryBasedSubscriptionManager"&amp;gt;&lt;br /&gt;          &amp;lt;parameter name="topicHeaderName"&amp;gt;topic&amp;lt;/parameter&amp;gt;&lt;br /&gt;          &amp;lt;parameter name="topicHeaderNS"&amp;gt;http://wso2.org/ns/2009/09/eventing/notify&amp;lt;/parameter&amp;gt;&lt;br /&gt;          &amp;lt;parameter name="subscriptionStoragePath"&amp;gt;/carbon/eventing/registry&amp;lt;/parameter&amp;gt;&lt;br /&gt;      &amp;lt;/subscriptionManager&amp;gt;&lt;br /&gt;      &amp;lt;!-- Uncomment to to RemoteRegistryBasedSubscriptionManager --&amp;gt;&lt;br /&gt;      &amp;lt;!--subscriptionManager class="org.wso2.carbon.eventing.impl.RemoteRegistryBasedSubscriptionManager"&amp;gt;&lt;br /&gt;          &amp;lt;parameter name="topicHeaderName"&amp;gt;topic&amp;lt;/parameter&amp;gt;&lt;br /&gt;          &amp;lt;parameter name="topicHeaderNS"&amp;gt;http://wso2.org/ns/2009/09/eventing/notify&amp;lt;/parameter&amp;gt;&lt;br /&gt;          &amp;lt;parameter name="subscriptionStoragePath"&amp;gt;/carbon/eventing/registry&amp;lt;/parameter&amp;gt;&lt;br /&gt;          &amp;lt;parameter name="registryURL"&amp;gt;http://remote-ip:port/registry/&amp;lt;/parameter&amp;gt;&lt;br /&gt;          &amp;lt;parameter name="username"&amp;gt;username&amp;lt;/parameter&amp;gt;&lt;br /&gt;          &amp;lt;parameter name="password"&amp;gt;password&amp;lt;/parameter&amp;gt;&lt;br /&gt;      &amp;lt;/subscriptionManager--&amp;gt;&lt;br /&gt;      &amp;lt;!--&amp;lt;eventDispatcher&amp;gt;org.wso2.carbon.registry.eventing.RegistryEventDispatcher&amp;lt;/eventDispatcher&amp;gt;--&amp;gt;&lt;br /&gt;      &amp;lt;eventDispatcher&amp;gt;org.wso2.carbon.eventing.broker.CarbonEventDispatcher&amp;lt;/eventDispatcher&amp;gt;&lt;br /&gt;      &amp;lt;notificationManager class="org.wso2.carbon.eventing.broker.CarbonNotificationManager"&amp;gt;&lt;br /&gt;          &amp;lt;parameter name="minSpareThreads"&amp;gt;25&amp;lt;/parameter&amp;gt;&lt;br /&gt;          &amp;lt;parameter name="maxThreads"&amp;gt;150&amp;lt;/parameter&amp;gt;&lt;br /&gt;          &amp;lt;parameter name="maxQueuedRequests"&amp;gt;100&amp;lt;/parameter&amp;gt;&lt;br /&gt;          &amp;lt;!-- Keep Alive time in nano seconds --&amp;gt;&lt;br /&gt;          &amp;lt;parameter name="keepAliveTime"&amp;gt;1000&amp;lt;/parameter&amp;gt;&lt;br /&gt;          &amp;lt;!-- Specify path of security policy file to enable security. --&amp;gt;&lt;br /&gt;          &amp;lt;!--parameter name="securityPolicy"&amp;gt;policypath&amp;lt;/parameter--&amp;gt;&lt;br /&gt;&lt;br /&gt;          &amp;lt;!-- Parameters specific to the Registry Event Broker configuration --&amp;gt;&lt;br /&gt;          &amp;lt;!-- Set this as false to disable displaying of registry URL in notification e-mails --&amp;gt;&lt;br /&gt;          &amp;lt;parameter name="showRegistryURL" locked="true"&amp;gt;true&amp;lt;/parameter&amp;gt;&lt;br /&gt;      &amp;lt;/notificationManager&amp;gt;&lt;br /&gt;  &amp;lt;/eventStream&amp;gt;&lt;br /&gt;&amp;lt;/eventBroker&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I have used the above method to generate email notifications within the Carbon Health Monitor component which I developed. More info on Health Monitor component will be discussed later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-7034821976204959919?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/7034821976204959919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=7034821976204959919' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/7034821976204959919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/7034821976204959919'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/04/using-event-broker-in-wso2-carbon-to.html' title='Using Event Broker in WSO2 Carbon to generate Events'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-4574003314445278752</id><published>2010-04-02T18:30:00.000-07:00</published><updated>2010-04-02T18:32:44.180-07:00</updated><title type='text'>Convert String to a InputStream</title><content type='html'>&lt;div style="text-align: justify;"&gt;Following code snippet show how to $subject.&lt;br /&gt;&lt;/div&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;import java.io.UnsupportedEncodingException;&lt;br /&gt;import java.io.ByteArrayInputStream;&lt;br /&gt;import java.io.InputStream;&lt;br /&gt;&lt;br /&gt;public class StringSample {&lt;br /&gt;       public static void main(String[] args) {&lt;br /&gt;           String textInput = "Convert String to InputStream";&lt;br /&gt;           try {&lt;br /&gt;               InputStream is = new ByteArrayInputStream(textInput.getBytes("UTF-8"));&lt;br /&gt;           } catch (UnsupportedEncodingException e) {&lt;br /&gt;               e.printStackTrace();&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-4574003314445278752?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/4574003314445278752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=4574003314445278752' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/4574003314445278752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/4574003314445278752'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/04/convert-string-to-inputstream.html' title='Convert String to a InputStream'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-5310036497808068680</id><published>2010-04-02T17:36:00.000-07:00</published><updated>2010-04-02T17:40:01.935-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Programmetically add Log4J Appenders</title><content type='html'>Following code snippet shows how to programmetically add log4j Appenders to your java code.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;import org.apache.log4j.ConsoleAppender;&lt;br /&gt;import org.apache.log4j.FileAppender;&lt;br /&gt;import org.apache.log4j.Level;&lt;br /&gt;import org.apache.log4j.Logger;&lt;br /&gt;import org.apache.log4j.PatternLayout;&lt;br /&gt;import org.apache.log4j.SimpleLayout;&lt;br /&gt;&lt;br /&gt;public class SampleLoggingAppender {&lt;br /&gt;    static Logger logger = Logger.getLogger(SampleLoggingAppender.class);&lt;br /&gt;&lt;br /&gt;    public static void main(String args[]) {&lt;br /&gt;        SimpleLayout layout = new SimpleLayout();&lt;br /&gt;        FileAppender fileAppender = null;&lt;br /&gt;        try {&lt;br /&gt;            fileAppender = new FileAppender(layout, "log.txt", false);&lt;br /&gt;        } catch (Exception ignored) {&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        ConsoleAppender consoleAppender = new ConsoleAppender(new PatternLayout());&lt;br /&gt;&lt;br /&gt;        logger.addAppender(fileAppender);&lt;br /&gt;        logger.addAppender(consoleAppender);&lt;br /&gt;        logger.setLevel(Level.DEBUG);&lt;br /&gt;&lt;br /&gt;        logger.debug("DEBUG");&lt;br /&gt;        logger.info("INFO");&lt;br /&gt;        logger.warn("WARN");&lt;br /&gt;        logger.error("ERROR");&lt;br /&gt;        logger.fatal("FATAL");&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-5310036497808068680?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/5310036497808068680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=5310036497808068680' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/5310036497808068680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/5310036497808068680'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/04/programmetically-add-log4j-appenders.html' title='Programmetically add Log4J Appenders'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-8922209816556873818</id><published>2010-03-28T19:57:00.000-07:00</published><updated>2010-04-02T17:45:41.862-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><title type='text'>Transport Statistics Component for WSO2 ESB</title><content type='html'>&lt;div style="text-align: justify;"&gt;Transport Statistics component shows statistics related to Transports and it will be available with the WSO2 Carbon Iridium (version 3.0.0) release. It displays the Transports which are implementing&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;  the interface &lt;span style="font-style: italic;"&gt;org.apache.axis2.transport.base.ManagementSupport&lt;/span&gt;. These transport statistics include bytes received, bytes sent, faults receiving, faults sending,last reset time, max size received, max size sent, messages received, messages sent, metrics window, min size received, min size sent, queue size, timeouts receiving, timeouts sending.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;    &lt;span style="font-weight: bold;"&gt;Viewing Transport Statistics&lt;/span&gt;&lt;br /&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;        In the navigator, under Monitor, click &lt;strong style="font-weight: normal;"&gt;Transport Statistics&lt;/strong&gt;. The Transport Statistics page appears.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FP-C7_Sg888/S7AZg6ye8FI/AAAAAAAAAGA/h7zmZ9eJgLE/s1600/transport-statistics.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 153px;" src="http://4.bp.blogspot.com/_FP-C7_Sg888/S7AZg6ye8FI/AAAAAAAAAGA/h7zmZ9eJgLE/s400/transport-statistics.jpg" alt="" id="BLOGGER_PHOTO_ID_5453887202073178194" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Figure 1: Transport Statistics &lt;/span&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;        The entry page lists down all the exposed Tranports which have implemented the ManagementSupport interface (Figure 1). The graph gives an aggregated view of the bytes received/ bytes sent vs time for all transports.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;        Click on a link to view the relevant statistics which relates to a transport (Figure 2). The graph gives a drilled down view of the bytes received/ bytes sent vs time for a specific transport.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;            Each link will take you to a new page that displays the transport statistics exposed by JMX. These data are the data which is shown in the jconsole and we are giving an aggregated view of the transport stats.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FP-C7_Sg888/S7AZ-8KAB5I/AAAAAAAAAGI/wtYqhb0sBMY/s1600/transport-statistics-http.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 218px;" src="http://2.bp.blogspot.com/_FP-C7_Sg888/S7AZ-8KAB5I/AAAAAAAAAGI/wtYqhb0sBMY/s400/transport-statistics-http.jpg" alt="" id="BLOGGER_PHOTO_ID_5453887717836326802" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Figure 2: Transport Statistics for HTTP transport&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;        These transport statistics include bytes received, bytes sent, faults receiving, faults sending, last reset time, max size received, max size sent, messages received, messages sent, metrics window, min size received, min size sent, queue size, timeouts receiving, timeouts sending.&lt;/li&gt;&lt;/ul&gt;This is the first component that I developed for WSO2 ESB. During the development stages of this component I had the chance of learning Ajax and applying them to this component, which is showing a screenshot of the statistics at a given point of time.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://svn.wso2.org/repos/wso2/branches/carbon/3.0.0/components/transport-statistics"&gt;https://svn.wso2.org/repos/wso2/branches/carbon/3.0.0/components/transport-statistics&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-8922209816556873818?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/8922209816556873818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=8922209816556873818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8922209816556873818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8922209816556873818'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/03/transport-statistics-component-for-wso2.html' title='Transport Statistics Component for WSO2 ESB'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FP-C7_Sg888/S7AZg6ye8FI/AAAAAAAAAGA/h7zmZ9eJgLE/s72-c/transport-statistics.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-1924969726811968208</id><published>2010-03-27T08:54:00.000-07:00</published><updated>2010-03-27T08:58:08.244-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='Registry'/><title type='text'>Restore a Registry Resource stored in a file to WSO2 Registry</title><content type='html'>&lt;div style="text-align: justify;"&gt;Following code snippet shows, how to programmetically restore a Registry Resourece written in to a file, back to WSO2 Registry using &lt;a href="http://wso2.org/project/registry/3.0.2/docs/samples_guide.html#Exporting/importing%20a%20file%20to%20Remote%20registry"&gt;RemoteRegistry&lt;/a&gt;. This is a follow-up to an earlier &lt;a href="http://heshans.blogspot.com/2010/03/backup-wso2-registry-resource-to-file.html"&gt;blogpost&lt;/a&gt;.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;import org.wso2.carbon.registry.app.RemoteRegistry;&lt;br /&gt;import org.wso2.carbon.registry.core.exceptions.RegistryException;&lt;br /&gt;&lt;br /&gt;import java.net.URL;&lt;br /&gt;import java.net.MalformedURLException;&lt;br /&gt;import java.io.FileWriter;&lt;br /&gt;import java.io.FileReader;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;&lt;br /&gt;public class RemoteRegistrySampleTest {&lt;br /&gt;  public static void main(String[] args) {&lt;br /&gt;      System.setProperty("javax.net.ssl.trustStore", "CARBON_HOME/resources/security/client-truststore.jks");&lt;br /&gt;      System.setProperty("javax.net.ssl.trustStorePassword", "wso2carbon");&lt;br /&gt;      System.setProperty("javax.net.ssl.trustStoreType", "JKS");&lt;br /&gt;&lt;br /&gt;      RemoteRegistry esb2xRemoteRegistry = null;&lt;br /&gt;      try {&lt;br /&gt;          esb2xRemoteRegistry = new RemoteRegistry(new URL("https://localhost:9443/registry"),&lt;br /&gt;                  "admin", "admin");&lt;br /&gt;          esb2xRemoteRegistry.restore("/esb-resources", new FileReader("/home/heshan/Dev/wso2_heshan/temp/registry.xml"));&lt;br /&gt;      } catch (RegistryException e) {&lt;br /&gt;          e.printStackTrace();&lt;br /&gt;      } catch (MalformedURLException e) {&lt;br /&gt;          e.printStackTrace();&lt;br /&gt;      } catch (IOException e) {&lt;br /&gt;          e.printStackTrace();&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-1924969726811968208?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/1924969726811968208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=1924969726811968208' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/1924969726811968208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/1924969726811968208'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/03/restore-registry-resource-stored-in.html' title='Restore a Registry Resource stored in a file to WSO2 Registry'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-8045506455224479777</id><published>2010-03-27T07:26:00.000-07:00</published><updated>2010-03-27T08:58:14.848-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='Registry'/><title type='text'>Backup WSO2 Registry Resource to a file</title><content type='html'>&lt;div style="text-align: justify;"&gt;Following code snippet shows, how to programmetically backup WSO2 Registry Resource to a file using &lt;a href="http://wso2.org/project/registry/3.0.2/docs/samples_guide.html#Exporting/importing%20a%20file%20to%20Remote%20registry"&gt;RemoteRegistry&lt;/a&gt;.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;import org.wso2.carbon.registry.app.RemoteRegistry;&lt;br /&gt;import org.wso2.carbon.registry.core.exceptions.RegistryException;&lt;br /&gt;&lt;br /&gt;import java.net.URL;&lt;br /&gt;import java.net.MalformedURLException;&lt;br /&gt;import java.io.FileWriter;&lt;br /&gt;import java.io.FileReader;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;&lt;br /&gt;public class RemoteRegistrySampleTest {&lt;br /&gt;  public static void main(String[] args) {&lt;br /&gt;      System.setProperty("javax.net.ssl.trustStore", "CARBON_HOME/resources/security/client-truststore.jks");&lt;br /&gt;      System.setProperty("javax.net.ssl.trustStorePassword", "wso2carbon");&lt;br /&gt;      System.setProperty("javax.net.ssl.trustStoreType", "JKS");&lt;br /&gt;    &lt;br /&gt;      RemoteRegistry esb2xRemoteRegistry = null;&lt;br /&gt;      try {&lt;br /&gt;          esb2xRemoteRegistry = new RemoteRegistry(new URL("https://localhost:9443/registry"),&lt;br /&gt;                  "admin", "admin");&lt;br /&gt;          esb2xRemoteRegistry.dump("/esb-resources", new FileWriter("/home/heshan/Dev/wso2_heshan/temp/registry.xml"));&lt;br /&gt;      } catch (RegistryException e) {&lt;br /&gt;          e.printStackTrace();&lt;br /&gt;      } catch (MalformedURLException e) {&lt;br /&gt;          e.printStackTrace();&lt;br /&gt;      } catch (IOException e) {&lt;br /&gt;          e.printStackTrace();&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-8045506455224479777?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/8045506455224479777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=8045506455224479777' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8045506455224479777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8045506455224479777'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/03/backup-wso2-registry-resource-to-file.html' title='Backup WSO2 Registry Resource to a file'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-7256100539958394128</id><published>2010-03-02T01:08:00.000-08:00</published><updated>2010-03-02T01:17:09.734-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Remove Line Breaks From a Java String</title><content type='html'>&lt;div style="text-align: justify;"&gt;Following code snippet shows how to remove line termination characters from a String.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;import java.util.regex.*;&lt;br /&gt;&lt;br /&gt;public class ClassA {&lt;br /&gt;   public static void main(String args []) {&lt;br /&gt;   String inputText = "sdfsdfsf\nsdfsdfsd";&lt;br /&gt;   String inputText2 = "var trpListenerGr\naphDivId = #trpLi\nstenerGraph2\n";&lt;br /&gt;   RemoveLineTerminationCharacterss(inputText);&lt;br /&gt;   System.out.println("-------------------------------");&lt;br /&gt;   RemoveLineTerminationCharacterss(inputText2);&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   public static String RemoveLineTerminationCharacterss(String inputText){&lt;br /&gt;   Pattern p;&lt;br /&gt;   Matcher m;&lt;br /&gt;   System.out.println(" Input Text : " + inputText);&lt;br /&gt;   p = Pattern.compile("\n");&lt;br /&gt;   m = p.matcher(inputText);&lt;br /&gt;   String str = m.replaceAll("");&lt;br /&gt;   System.out.println(" OUtput Text: " + str);&lt;br /&gt;   return str;&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-7256100539958394128?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/7256100539958394128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=7256100539958394128' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/7256100539958394128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/7256100539958394128'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/03/remove-line-breaks-from-java-string.html' title='Remove Line Breaks From a Java String'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-2136072239540050140</id><published>2010-02-21T22:31:00.000-08:00</published><updated>2010-02-21T23:57:58.234-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><title type='text'>WSO2 SOA Workshop NYC</title><content type='html'>&lt;div style="text-align: justify;"&gt;The full-day interactive workshop will show you how to build your own solutions with industry acclaimed best practices and patterns. It will also discuss real SOA deployment issues such as security, interoperability and moving to the Cloud.&lt;br /&gt;&lt;br /&gt;Paul Fremantle, Founder and CTO, WSO2 and Asanka Abeysinghe, Lead Solutions Architect will be presenting at the workshop.&lt;br /&gt;&lt;br /&gt;For more details and to register visit:&lt;br /&gt;&lt;a href="http://wso2.com/events/2010-feb-nyc-soa-workshop/"&gt;http://wso2.com/events/2010-feb-nyc-soa-workshop/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-2136072239540050140?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/2136072239540050140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=2136072239540050140' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/2136072239540050140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/2136072239540050140'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/02/wso2-soa-workshop-nyc.html' title='WSO2 SOA Workshop NYC'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-1504712392493771801</id><published>2010-02-21T22:17:00.000-08:00</published><updated>2010-02-21T22:22:21.519-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><title type='text'>Convert the SOAP message to a plain text mail</title><content type='html'>&lt;span&gt;How to convert a SOAP to a plain text mail using an Enterprise Service Bus (ESB).&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;SCENARIO:&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Imagine a scenario where you are using the mail transport in WSO2 ESB. You need to convert the SOAP message to a plain text mail(without any XML in it). Read the full article &lt;a href="http://wso2.org/library/knowledge-base/use-mail-transport-esb-convert-soap-message-plain-text-mail"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-1504712392493771801?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/1504712392493771801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=1504712392493771801' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/1504712392493771801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/1504712392493771801'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/02/convert-soap-message-to-plain-text-mail.html' title='Convert the SOAP message to a plain text mail'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-9089554434893299910</id><published>2010-02-02T22:15:00.000-08:00</published><updated>2010-02-02T22:21:40.914-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><title type='text'>WSO2 Enterprise Service Bus 2.1.3 Released!</title><content type='html'>&lt;p style="text-align: justify;"&gt;The WSO2 ESB team is pleased to announce the release of version 2.1.3 of the Open Source Enterprise Service Bus (ESB). This is an enhanced and improved release of the WSO2 ESB 2.1.2 which went out on November 2009.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;WSO2 ESB is a lightweight and easy-to-use Open Source Enterprise Service Bus (ESB) available under the &lt;a href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank"&gt;Apache Software License v2.0&lt;/a&gt;. WSO2 ESB allows administrators to simply and easily configure message routing, intermediation, transformation, logging, task scheduling, load balancing, failover routing, event brokering, etc.. The runtime has been designed to be completely asynchronous, non-blocking and streaming based on the &lt;a href="http://synapse.apache.org/" target="_blank"&gt;Apache Synapse&lt;/a&gt; core.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;WSO2 ESB 2.1.3 is developed on top of the revolutionary &lt;a href="http://wso2.org/projects/carbon" target="_blank"&gt;Carbon platform&lt;/a&gt; (Middleware a' la carte), and is based on the OSGi framework to achieve the better modularity for your SOA architecture. This also contains a lots of new features and many other optional components to customize the behavior of the server. Further, if you do not want any of the built in features, you can uninstall those features without any trouble. In other words, this ESB can be customized to your SOA needs.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;You can download this distribution from &lt;a href="http://wso2.org/downloads/esb" target="_blank"&gt;http://wso2.org/downloads/esb&lt;/a&gt; and give it a try.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h3 style="text-align: justify;"&gt;How to Run &lt;/h3&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;ol style="text-align: justify;" type="1"&gt;&lt;li&gt;Extract the downloaded zip&lt;/li&gt;&lt;li&gt;Go to the bin directory in the extracted folder&lt;/li&gt;&lt;li&gt;Run the wso2server.sh or wso2server.bat as appropriate&lt;/li&gt;&lt;li&gt;Point your browser to the URL &lt;a href="https://localhost:9443/carbon" target="_blank"&gt;https://localhost:9443/carbon&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Use "admin", "admin" as the username and password to login as an admin and create a user account&lt;/li&gt;&lt;li&gt;Assign the required permissions to the user through a role&lt;/li&gt;&lt;li&gt;If you need to start the OSGi console with the server use the property -DosgiConsole when starting the server. The INSTALL.txt file found on the installation directory will give you a comprehensive set of options and properties that can be passed into the startup script&lt;/li&gt;&lt;li&gt;Samples configurations can be started by the wso2esb-samples script passing the sample number with the -sn option, please have a look at the samples guide for more information, on running samples&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h3 style="text-align: justify;"&gt;New Features of WSO2 ESB 2.1.3&lt;/h3&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;This ESB release is based on the award winning WSO2 Carbon "Middleware a' la carte", an OSGi based SOA platform, version 2.0.3 by WSO2 Inc.&lt;/li&gt;&lt;li&gt;HTTP binary relaying support for ultra fast mediation via the ESB&lt;/li&gt;&lt;li&gt;New mediation statistics viewer&lt;/li&gt;&lt;li&gt;API for accessing mediation statistics at runtime&lt;/li&gt;&lt;li&gt;Enhanced remote registry support&lt;/li&gt;&lt;li&gt;Ability to edit dynamic sequences saved in the registry from the UI editor&lt;/li&gt;&lt;li&gt;Rule based mediation powered by Drools&lt;/li&gt;&lt;li&gt;Fine grained autherization for services via the Entitlement mediator&lt;/li&gt;&lt;li&gt;Enhanced WS-Eventing support and Event Sources making it an even broker&lt;/li&gt;&lt;li&gt;Enhanced AJAX based sequence, endpoint and proxy service editors&lt;/li&gt;&lt;li&gt;Enhanced permission model with the user management&lt;/li&gt;&lt;li&gt;Enhanced REST/GET and other HTTP method support&lt;/li&gt;&lt;li&gt;P2 based OSGi provisioning support, for optional features like service management, runtime governance and so on..&lt;/li&gt;&lt;li&gt;Many bug fixes, UI enhancements and usability improvements&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h3 style="text-align: justify;"&gt;Key Features of WSO2 ESB&lt;/h3&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Proxy services - facilitating synchronous/asynchronous transport, interface (WSDL/Schema/Policy), message format (SOAP 1.1/1.2, POX/REST, Text, Binary), QoS (WS-Addressing/WS-Security/WS-&lt;wbr&gt;RM) and optimization switching (MTOM/SwA).&lt;/li&gt;&lt;li&gt;Non-blocking HTTP/S transports based on Apache HttpCore for ultrafast execution and support for thousands of connections at high concurreny with constant memory usage.&lt;/li&gt;&lt;li&gt;Built in Registry/Repository, facilitating dynamic updating and reloading of the configuration and associated resources (e.g. XSLTs, XSD, WSDL, Policies, JS, Configurations ..)&lt;/li&gt;&lt;li&gt;Easily extendable via custom Java class (mediator and command)/Spring mediators, or BSF Scripting languages (Javascript, Ruby, Groovy, etc.)&lt;/li&gt;&lt;li&gt;Built in support for scheduling tasks using the Quartz scheduler.&lt;/li&gt;&lt;li&gt;Load-balancing (with or without sticky sessions)/Fail-over, and clustered Throttling and Caching support&lt;/li&gt;&lt;li&gt;WS-Security, WS-Reliable Messaging, Caching &amp;amp; Throttling configurable via (message/operation/service level) WS-Policies&lt;/li&gt;&lt;li&gt;Lightweight, XML and Web services centric messaging model&lt;/li&gt;&lt;li&gt; Support for industrial standards (Hessian binary web service protocol/ Financial Information eXchange protocol and optional Helth Level-7 protocol)&lt;/li&gt;&lt;li&gt;Enhanced support for the VFS(File/FTP/SFTP)/JMS/Mail transports with optional TCP/UDP transports and transport switching for any of the above transports&lt;/li&gt;&lt;li&gt;Support for message splitting &amp;amp; aggregation using the EIP and service callouts&lt;/li&gt;&lt;li&gt;Database lookup &amp;amp; store support with DBMediators with reusable database connection pools&lt;/li&gt;&lt;li&gt;WS-Eventing support with event sources and event brokering&lt;/li&gt;&lt;li&gt;Rule based mediation of the messages using the Drools rule engine&lt;/li&gt;&lt;li&gt;Transactions support via the JMS transport and Transaction mediator for database mediators&lt;/li&gt;&lt;li&gt;Internationalized GUI management console with user/permission management for configuration development and monitoring support with statistics, configurable logging and tracing&lt;/li&gt;&lt;li&gt;JMX monitoring support and JMX management capabilities like, Gracefull/Forcefull shutdown/restart&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h3 style="text-align: justify;"&gt;Get Involved&lt;/h3&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt; Help us improve this product by reporting any issues you many have: &lt;a href="http://www.wso2.org/jira/browse/ESBJAVA" target="_blank"&gt;WSO2 ESB JIRA&lt;/a&gt;. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt; You can also watch how they are resolved, and comment on the progress. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h3 style="text-align: justify;"&gt;Contact Us&lt;/h3&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt; Get in touch with the product team via the mailing lists: &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt; Developer List : &lt;a href="mailto:esb-java-dev@wso2.org" target="_blank"&gt;esb-java-dev@wso2.org&lt;/a&gt; | &lt;a href="mailto:esb-java-dev-request@wso2.org?subject=subscribe" target="_blank"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://wso2.org/mailarchive/esb-java-dev/" target="_blank"&gt;Mail Archive&lt;/a&gt;&lt;/li&gt;&lt;li&gt; User List : &lt;a href="mailto:esb-java-user@wso2.org" target="_blank"&gt;esb-java-user@wso2.org&lt;/a&gt; | &lt;a href="mailto:esb-java-user-request@wso2.org?subject=subscribe" target="_blank"&gt;Subscribe&lt;/a&gt; | &lt;a href="http://wso2.org/mailarchive/esb-java-user/" target="_blank"&gt;Mail Archive&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;To subscribe to the above mailing lists see &lt;a href="http://wso2.org/mail" target="_blank"&gt;http://wso2.org/mail &lt;/a&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Alternatively, questions can also be raised in the forum: &lt;a href="http://wso2.org/forum/187" target="_blank"&gt; http://wso2.org/forum/187&lt;/a&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;h3 style="text-align: justify;"&gt;Support&lt;/h3&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;We are committed to ensuring that your enterprise middleware deployment is completely supported from evaluation to production. Our unique approach ensures that all support leverages our open development methodology and is provided by the very same engineers who build the technology.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;For more details and to take advantage of this unique opportunity please visit &lt;a href="http://wso2.com/support" target="_blank"&gt;http://wso2.com/support&lt;/a&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;For more information about WSO2 ESB please see &lt;a href="http://wso2.com/products/enterprise-service-bus/" target="_blank"&gt; http://wso2.com/products/&lt;wbr&gt;enterprise-service-bus&lt;/a&gt; or visit the WSO2 Oxygen Tank developer portal for addition resources. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;Thank You!&lt;br /&gt;The WSO2 ESB team&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-9089554434893299910?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/9089554434893299910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=9089554434893299910' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/9089554434893299910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/9089554434893299910'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/02/wso2-enterprise-service-bus-213.html' title='WSO2 Enterprise Service Bus 2.1.3 Released!'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-5014570709058183309</id><published>2010-01-21T21:37:00.000-08:00</published><updated>2010-01-21T22:20:23.043-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='FOSS'/><title type='text'>How to apply a patch</title><content type='html'>1). Take the svn diff of the changes you made and save it to a file.&lt;br /&gt;&lt;pre class="brush:js"&gt;$svn diff &gt; ~/Desktop/carbon.patch021&lt;/pre&gt;&lt;br /&gt;2). Apply the saved patch to the source.&lt;br /&gt;&lt;pre class="brush:js"&gt;$patch -p 0 &lt; ~/Desktop/carbon.patch021&lt;/pre&gt;&lt;br /&gt;3). Commit the changes.&lt;br /&gt;&lt;pre class="brush:js"&gt;$svn commit&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-5014570709058183309?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/5014570709058183309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=5014570709058183309' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/5014570709058183309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/5014570709058183309'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/01/how-to-apply-patch.html' title='How to apply a patch'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-2846492153052854767</id><published>2010-01-20T03:48:00.000-08:00</published><updated>2010-02-11T03:59:25.143-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='RMI'/><category scheme='http://www.blogger.com/atom/ns#' term='JMX'/><category scheme='http://www.blogger.com/atom/ns#' term='MBean'/><title type='text'>Access JMX MBean information through RMI</title><content type='html'>This is a follow up to my earlier &lt;a href="http://heshans.blogspot.com/2010/01/programmetically-access-jmx-mbean.html"&gt;post&lt;/a&gt;.&lt;br /&gt;&lt;pre class="brush:js"&gt;import org.apache.commons.logging.Log;&lt;br /&gt;import org.apache.commons.logging.LogFactory;&lt;br /&gt;&lt;br /&gt;import javax.management.remote.JMXServiceURL;&lt;br /&gt;import javax.management.remote.JMXConnector;&lt;br /&gt;import javax.management.remote.JMXConnectorFactory;&lt;br /&gt;import javax.management.*;&lt;br /&gt;import javax.management.openmbean.CompositeData;&lt;br /&gt;import java.lang.management.ManagementFactory;&lt;br /&gt;import java.net.MalformedURLException;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.util.Set;&lt;br /&gt;&lt;br /&gt;public class JmxReport {&lt;br /&gt;private static final Log log = LogFactory.getLog(JmxReport.class);&lt;br /&gt;&lt;br /&gt;public static void logJmxInfo() {&lt;br /&gt;   // Operating System MXBean&lt;br /&gt;   log.info("Operating system architecture : " + ManagementFactory.getOperatingSystemMXBean().getArch());&lt;br /&gt;   log.info("Available processors          : " + ManagementFactory.getOperatingSystemMXBean().getAvailableProcessors());&lt;br /&gt;   log.info("Operating system name         : " + ManagementFactory.getOperatingSystemMXBean().getName());&lt;br /&gt;   log.info("System load average           : " + ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage());&lt;br /&gt;   log.info("Operating system version      : " + ManagementFactory.getOperatingSystemMXBean().getVersion());&lt;br /&gt;&lt;br /&gt;   // Memory MXBean&lt;br /&gt;   log.info("Heap memory usage             : " + ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().toString());&lt;br /&gt;   log.info("Non-heap memory usage         : " + ManagementFactory.getMemoryMXBean().getNonHeapMemoryUsage().toString());&lt;br /&gt;&lt;br /&gt;   // Class loading MXBean&lt;br /&gt;   log.info("Loaded class count            : " + ManagementFactory.getClassLoadingMXBean().getLoadedClassCount());&lt;br /&gt;   log.info("Total loaded class count      : " + ManagementFactory.getClassLoadingMXBean().getTotalLoadedClassCount());&lt;br /&gt;   log.info("Unloaded class count          : " + ManagementFactory.getClassLoadingMXBean().getUnloadedClassCount());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static void getJmxStatisticsViaRmi() {&lt;br /&gt;   try {&lt;br /&gt;       String jmxAgentName = "org.apache.synapse";&lt;br /&gt;       MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();&lt;br /&gt;&lt;br /&gt;       JMXConnector c = JMXConnectorFactory.newJMXConnector(createConnectionURL("heshan-laptop", 1099), null/*map*/);&lt;br /&gt;       c.connect();&lt;br /&gt;       Object o = c.getMBeanServerConnection().getAttribute(new ObjectName("java.lang:type=Memory"), "HeapMemoryUsage");&lt;br /&gt;       CompositeData cd = (CompositeData) o;&lt;br /&gt;       System.out.println(cd.get("committed"));&lt;br /&gt;&lt;br /&gt;       Object object2 = c.getMBeanServerConnection().getObjectInstance(new ObjectName("org.apache.synapse:Type=Transport,ConnectorName=nio-http-listener"));&lt;br /&gt;       Object lastResetTime = c.getMBeanServerConnection().getAttribute(new ObjectName("org.apache.synapse:Type=Transport,ConnectorName=nio-http-listener"), "LastResetTime");&lt;br /&gt;       System.out.println("lastResetTime : " + lastResetTime.toString());&lt;br /&gt;&lt;br /&gt;       ObjectName objName = new ObjectName("org.apache.synapse:Type=Transport,ConnectorName=nio-http-listener");&lt;br /&gt;       Set set2 = mbs.queryNames(objName, null);&lt;br /&gt;       for (Object o2 : set2) {&lt;br /&gt;           log.info("  :: " + o2.toString());&lt;br /&gt;       }&lt;br /&gt;   } catch (MalformedObjectNameException e) {&lt;br /&gt;       e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.&lt;br /&gt;   } catch (InstanceNotFoundException e) {&lt;br /&gt;       e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.&lt;br /&gt;   } catch (MalformedURLException e) {&lt;br /&gt;       e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.&lt;br /&gt;   } catch (IOException e) {&lt;br /&gt;       e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.&lt;br /&gt;   } catch (ReflectionException e) {&lt;br /&gt;       e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.&lt;br /&gt;   } catch (AttributeNotFoundException e) {&lt;br /&gt;       e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.&lt;br /&gt;   } catch (MBeanException e) {&lt;br /&gt;       e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private static JMXServiceURL createConnectionURL(String host, int port) throws MalformedURLException {&lt;br /&gt;   JMXServiceURL serviceURL = new JMXServiceURL("rmi", "", 0, "/jndi/rmi://" + host + ":" + port + "/synapse");&lt;br /&gt;/* To monitor JMX info of Carbon Platform need to enable jmx port @ carbon.xml&lt;br /&gt;   The link is service:jmx:rmi:///jndi/rmi://10.100.1.143:9999/server &lt;br /&gt;*/&lt;br /&gt;   return serviceURL;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static void main(String args[]) {&lt;br /&gt;   getJmxStatisticsViaRmi();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-2846492153052854767?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/2846492153052854767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=2846492153052854767' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/2846492153052854767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/2846492153052854767'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/01/access-jmx-mbean-information-through.html' title='Access JMX MBean information through RMI'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-8269986801919827067</id><published>2010-01-20T03:22:00.001-08:00</published><updated>2010-01-20T03:51:18.455-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='JMX'/><category scheme='http://www.blogger.com/atom/ns#' term='MBean'/><title type='text'>Programmetically access JMX MBean information</title><content type='html'>&lt;pre class="brush:js"&gt;&lt;br /&gt;import org.apache.commons.logging.Log;&lt;br /&gt;import org.apache.commons.logging.LogFactory;&lt;br /&gt;import java.lang.management.ManagementFactory;&lt;br /&gt;&lt;br /&gt;public class JmxReport {&lt;br /&gt;private static final Log log = LogFactory.getLog(JmxReport.class);&lt;br /&gt;&lt;br /&gt;public static void logJmxInfo() {&lt;br /&gt;    // Operating System MXBean&lt;br /&gt;    log.info("Operating system architecture : " + ManagementFactory.getOperatingSystemMXBean().getArch() );&lt;br /&gt;    log.info("Available processors          : " + ManagementFactory.getOperatingSystemMXBean().getAvailableProcessors() );&lt;br /&gt;    log.info("Operating system name         : " + ManagementFactory.getOperatingSystemMXBean().getName() );&lt;br /&gt;    log.info("System load average           : " + ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage() );&lt;br /&gt;    log.info("Operating system version      : " + ManagementFactory.getOperatingSystemMXBean().getVersion() );&lt;br /&gt;&lt;br /&gt;    // Memory MXBean&lt;br /&gt;    log.info("Heap memory usage             : " + ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().toString() );&lt;br /&gt;    log.info("Non-heap memory usage         : " + ManagementFactory.getMemoryMXBean().getNonHeapMemoryUsage().toString() );&lt;br /&gt;&lt;br /&gt;    // Class loading MXBean&lt;br /&gt;    log.info("Loaded class count            : " + ManagementFactory.getClassLoadingMXBean().getLoadedClassCount() );&lt;br /&gt;    log.info("Total loaded class count      : " + ManagementFactory.getClassLoadingMXBean().getTotalLoadedClassCount() );&lt;br /&gt;    log.info("Unloaded class count          : " + ManagementFactory.getClassLoadingMXBean().getUnloadedClassCount() );&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static void main(String args[]) {&lt;br /&gt;    logJmxInfo();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-8269986801919827067?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/8269986801919827067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=8269986801919827067' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8269986801919827067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8269986801919827067'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/01/programmetically-access-jmx-mbean.html' title='Programmetically access JMX MBean information'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-3965475157480459476</id><published>2010-01-20T02:41:00.000-08:00</published><updated>2010-01-21T01:10:20.516-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Resolving permission issue with Tomcat</title><content type='html'>When you download and start running catalins.sh, you might get following error.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;The BASEDIR environment variable is not defined correctly&lt;br /&gt;This environment variable is needed to run this program&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;To resolve this;&lt;br /&gt;1) Check $CATALINA_HOME and $JAVA_HOME set properly.&lt;br /&gt;&lt;br /&gt;2) Check whether the relevant files in $CATALINA_HOME/bin have necessary permissions required for execution.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;$ chmod u+x catalina.sh&lt;br /&gt;$ chmod +x ./setclasspath.sh&lt;br /&gt;$ chmod +x ./startup.sh&lt;br /&gt;$ chmod +x ./shutdown.sh&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-3965475157480459476?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/3965475157480459476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=3965475157480459476' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/3965475157480459476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/3965475157480459476'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2010/01/resolving-permission-issue-with-tomcat.html' title='Resolving permission issue with Tomcat'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-9006514858959176751</id><published>2009-12-10T05:18:00.000-08:00</published><updated>2009-12-10T07:29:58.309-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>My 500LKR haircut</title><content type='html'>&lt;div style="text-align: justify;"&gt;This incident took place on Monday. Although it is not that much of a significant incident I thought of writing a blogpost because of the funny nature of it. On Monday, I thought of getting a haircut. I was having a chat with my buddy Pandula before going to the Saloon. When I mentioned about the haircut, he asked "hey man, are you still going to that shitty place to get an haircut. You should increase your standard of living cos now that you are employed and ....." he went on preaching. In my defense this so called "shitty Saloon" was the one which I have been going to for the last 5 years after moving to Borella. Although it did not have many luxurious facilities, I could get a haircut+head massage for 140/= (including the 20/= tip).&lt;br /&gt;&lt;br /&gt;After Pandula's comment I was a bit embarrassed and thought of going to a better Saloon. After going in I told the barber the way in which I need my hair to be trimmed. He did it. At the end of the haircut I asked the barber how much is for the haircut. He said 150/=. I thought "Somebody have to pay for these fancy lights and equipment" and said "ok cool". Then I told him to give me a head &lt;span class="__mozilla-findbar-search" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;"&gt;massag&lt;/span&gt;e(a statement which I would regret later).&lt;br /&gt;&lt;br /&gt;This bugger gave me a head &lt;span class="__mozilla-findbar-search" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;"&gt;massag&lt;/span&gt;e for 20 minutes. Normally in my old place the barber would give it for 5 mins. I thought that this guy was having some short term memory loss in understanding time durations. After everything was done, I asked him how much for the haircut? He said 500/=. My first reaction was that I heard it wrong and I asked the same question again to get the same answer back. Then I asked "Damn.... you charged 350/= for a head &lt;span class="__mozilla-findbar-search" style="padding: 0pt; background-color: yellow; color: black; display: inline; font-size: inherit;"&gt;massag&lt;/span&gt;e?". Although I had 2000/= with me at that time; under any circumstance I would not pay for a haircut that much.&lt;br /&gt;&lt;br /&gt;I told him "I am having 300/= with me right now and out of it I have to buy a dinner packet for 100/=. I can only give you 200/=." He had no other option but to accept my proposition. [IMO barber had another extreme option. He could have asked me to cut hair of the customers until he recovers my charge (just like people are asked to wash plates in "siwari", when they are unable to pay for the food that they have eaten :)). I guess he did not have faith in me - having a pair of scissors on my hand ]. Therefore I gave him 200/= and got myself out of that place. That was the last time that I would step on that place.&lt;br /&gt;&lt;br /&gt;Ironically the Saloon's name was "Sayonara" :) meaning 'goodbye'. 'siy-oh-nah-rah' would be the best matching name that anybody could come up with, for a Saloon like that :D&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-9006514858959176751?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/9006514858959176751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=9006514858959176751' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/9006514858959176751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/9006514858959176751'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/12/my-500lkr-haircut.html' title='My 500LKR haircut'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-8900946750998387299</id><published>2009-11-23T22:17:00.000-08:00</published><updated>2010-10-08T02:36:28.340-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Cloud Computing'/><title type='text'>WSO2 Cloud Platform</title><content type='html'>Last week, WSO2 launched their &lt;a href="http://wso2.com/cloud/"&gt;Cloud Platform&lt;/a&gt;, for extending SOA into cloud computing.&lt;br /&gt;&lt;br /&gt;&lt;img style="visibility: hidden; width: 0px; height: 0px;" src="http://counters.gigya.com/wildfire/IMP/CXNID=2000002.0NXC/bT*xJmx*PTEyNTkwNDM*MjY5NTMmcHQ9MTI1OTA*MzQzMjk4NSZwPTEwMTkxJmQ9c3NfZW1iZWQmZz*yJm89MWFhNjU3OWVlODRhNGY5MTg4YzJhNWIwMjIzNjc2YmYmb2Y9MA==.gif" border="0" height="0" width="0" /&gt;&lt;div style="width: 425px; text-align: left;" id="__ss_2511160"&gt;&lt;a style="margin: 12px 0pt 3px; font: 14px Helvetica,Arial,Sans-serif; display: block; text-decoration: underline;" href="http://www.slideshare.net/sanjiva/wso2-cloud-public-2009-11-16" title="Wso2 Cloud Public 2009 11 16"&gt;Wso2 Cloud Public 2009 11 16&lt;/a&gt;&lt;object style="margin: 0px;" height="355" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=wso2-cloud-public-2009-11-16-091116095441-phpapp02&amp;amp;stripped_title=wso2-cloud-public-2009-11-16"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=wso2-cloud-public-2009-11-16-091116095441-phpapp02&amp;amp;stripped_title=wso2-cloud-public-2009-11-16" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;"&gt;View more &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/"&gt;documents&lt;/a&gt; from &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/sanjiva"&gt;Sanjiva Weerawarana&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-8900946750998387299?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/8900946750998387299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=8900946750998387299' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8900946750998387299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8900946750998387299'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/11/wso2-cloud-platform.html' title='WSO2 Cloud Platform'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-742946608472406156</id><published>2009-11-23T22:06:00.000-08:00</published><updated>2009-11-23T22:11:26.285-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Apache Asia Roadshow 2009</title><content type='html'>&lt;div style="text-align: justify;"&gt;Apache Asia Roadshow 2009 will hit Colombo from the 3&lt;sup&gt;rd&lt;/sup&gt; - 5&lt;sup&gt;th&lt;/sup&gt; of December. You can register for the event &lt;a href="http://www.foss.lk/events/apacheasia09/"&gt;here&lt;/a&gt;. Don't miss out this opportunity.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://apacheasia09.foss.lk/"&gt;&lt;img src="http://apacheasia09.foss.lk/img/apacheasia09_banner.jpg" alt="apacheasia2009 3rd and 4th December @ HNB Towers" title="apacheasia2009 3rd and 4th December @ HNB Towers" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-742946608472406156?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/742946608472406156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=742946608472406156' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/742946608472406156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/742946608472406156'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/11/apache-asia-roadshow-2009.html' title='Apache Asia Roadshow 2009'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-2418385886958206321</id><published>2009-11-23T22:02:00.000-08:00</published><updated>2010-10-08T02:36:32.869-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud Computing'/><title type='text'>Cloud Computing</title><content type='html'>Here's a very interesting video on cloud computing&lt;br /&gt;&lt;br /&gt;&lt;object height="340" width="560"&gt;&lt;param name="movie" value="http://www.youtube.com/v/okqLxzWS5R4&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/okqLxzWS5R4&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="340" width="560"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-2418385886958206321?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/2418385886958206321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=2418385886958206321' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/2418385886958206321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/2418385886958206321'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/11/cloud-computing.html' title='Cloud Computing'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-6752060265319604766</id><published>2009-11-05T01:54:00.000-08:00</published><updated>2009-12-10T05:18:00.068-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><title type='text'>Use mail transport in ESB to convert the SOAP message to a plain text mail</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Scenario:&lt;/span&gt;&lt;br /&gt;     Imagine a scenario where you are using the mail transport in ESB. You need to convert the SOAP message to a plain text mail(without any XML in it). This blogpost is written to address it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How To:&lt;/span&gt;&lt;br /&gt;Following steps will guide you to get your scenario up and running.&lt;br /&gt;&lt;br /&gt;1) Uncomment the mail TransportSender and TransportReceiver from axis2.xml&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;&amp;lt;transportSender name="mailto" class="org.apache.axis2.transport.mail.MailTransportSender"&amp;gt;&lt;br /&gt;   &amp;lt;parameter name="mail.smtp.host"&amp;gt;smtp.gmail.com&amp;lt;/parameter&amp;gt;&lt;br /&gt;   &amp;lt;parameter name="mail.smtp.port"&amp;gt;587&amp;lt;/parameter&amp;gt;&lt;br /&gt;   &amp;lt;parameter name="mail.smtp.starttls.enable"&amp;gt;true&amp;lt;/parameter&amp;gt;&lt;br /&gt;   &amp;lt;parameter name="mail.smtp.auth"&amp;gt;true&amp;lt;/parameter&amp;gt;&lt;br /&gt;   &amp;lt;parameter name="mail.smtp.user"&amp;gt;synapse.demo.0&amp;lt;/parameter&amp;gt;&lt;br /&gt;   &amp;lt;parameter name="mail.smtp.password"&amp;gt;mailpassword&amp;lt;/parameter&amp;gt;&lt;br /&gt;   &amp;lt;parameter name="mail.smtp.from"&amp;gt;synapse.demo.0@gmail.com&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/transportSender&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;transportReceiver name="mailto" class="org.apache.axis2.transport.mail.MailTransportListener"&amp;gt;&lt;br /&gt;&amp;lt;/transportReceiver&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2) Add the following line to axis2.xml's MessageFormatters.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;&amp;lt;messageFormatter contentType="text/plain" class="org.apache.axis2.format.PlainTextFormatter"/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;3) Build the SimpleStockQuote service (which is residing inside the samples). Run sample axis2Server.&lt;br /&gt;&lt;br /&gt;4) Use the attached proxy configuration.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;&amp;lt;!-- Using the mail transport --&amp;gt;&lt;br /&gt;&amp;lt;definitions xmlns="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt; &amp;lt;proxy name="StockQuoteProxy" transports="mailto"&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;parameter name="transport.mail.Address"&amp;gt;synapse.demo.1@gmail.com&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="transport.mail.Protocol"&amp;gt;pop3&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="transport.PollInterval"&amp;gt;5&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="mail.pop3.host"&amp;gt;pop.gmail.com&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="mail.pop3.port"&amp;gt;995&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="mail.pop3.user"&amp;gt;synapse.demo.1&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="mail.pop3.password"&amp;gt;mailpassword&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="mail.pop3.socketFactory.class"&amp;gt;javax.net.ssl.SSLSocketFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="mail.pop3.socketFactory.fallback"&amp;gt;false&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="mail.pop3.socketFactory.port"&amp;gt;995&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="transport.mail.ContentType"&amp;gt;application/xml&amp;lt;/parameter&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;target&amp;gt;&lt;br /&gt;         &amp;lt;inSequence&amp;gt;&lt;br /&gt;             &amp;lt;property name="senderAddress" expression="get-property('transport', 'From')"/&amp;gt;&lt;br /&gt;             &amp;lt;log level="full"&amp;gt;&lt;br /&gt;                 &amp;lt;property name="Sender Address" expression="get-property('senderAddress')"/&amp;gt;&lt;br /&gt;             &amp;lt;/log&amp;gt;&lt;br /&gt;&lt;br /&gt;             &amp;lt;send&amp;gt;&lt;br /&gt;                 &amp;lt;endpoint&amp;gt;&lt;br /&gt;                     &amp;lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/&amp;gt;&lt;br /&gt;                 &amp;lt;/endpoint&amp;gt;&lt;br /&gt;             &amp;lt;/send&amp;gt;&lt;br /&gt;         &amp;lt;/inSequence&amp;gt;&lt;br /&gt;         &amp;lt;outSequence&amp;gt;&lt;br /&gt;             &amp;lt;property name="Subject" value="Custom Subject for Response" scope="transport"/&amp;gt;&lt;br /&gt;       &amp;lt;property name="messageType" value="text/plain" scope="axis2-client"/&amp;gt;&lt;br /&gt;&amp;lt;script language="js"&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;               mc.setPayloadXML(&amp;lt;ns:text xmlns:ns="http://ws.apache.org/commons/ns/payload"&amp;gt;Plain text received!&amp;lt;/ns:text&amp;gt;);&lt;br /&gt;    ]]&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;             &amp;lt;header name="To" expression="fn:concat('mailto:', get-property('senderAddress'))"/&amp;gt;&lt;br /&gt;             &amp;lt;log level="full"&amp;gt;&lt;br /&gt;                 &amp;lt;property name="message" value="Response message"/&amp;gt;&lt;br /&gt;                 &amp;lt;property name="Sender Address" expression="get-property('senderAddress')"/&amp;gt;&lt;br /&gt;             &amp;lt;/log&amp;gt;&lt;br /&gt;             &amp;lt;send/&amp;gt;&lt;br /&gt;         &amp;lt;/outSequence&amp;gt;&lt;br /&gt;     &amp;lt;/target&amp;gt;&lt;br /&gt;     &amp;lt;publishWSDL uri="file:repository/samples/resources/proxy/sample_proxy_1.wsdl"/&amp;gt;&lt;br /&gt; &amp;lt;/proxy&amp;gt;&lt;br /&gt;&amp;lt;/definitions&amp;gt;&lt;br /&gt;&lt;/pre&gt;5) Send an email to synapse.demo.1@gmail.com&lt;br /&gt;&lt;br /&gt;6) You will receive the response in plain text.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-6752060265319604766?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/6752060265319604766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=6752060265319604766' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/6752060265319604766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/6752060265319604766'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/11/use-mail-transport-in-esb-to-convert.html' title='Use mail transport in ESB to convert the SOAP message to a plain text mail'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-3729783420138374828</id><published>2009-10-21T01:27:00.000-07:00</published><updated>2009-10-21T01:33:21.697-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='publications'/><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='articles'/><title type='text'>Exposing a non-secured service with security using ESB</title><content type='html'>&lt;div style="text-align: justify;"&gt;This &lt;a href="http://wso2.org/library/knowledge-base/exposing-non-secured-service-security-using-esb"&gt;article&lt;/a&gt; explains how to expose a non-secure service as a secured service using WSO2 ESB. The unsecured service is SimpleStockQuoteService. The strategy taken up is to secure SimpleStockQuoteService throught a secured proxy. A proxy service is written to enable username token authentication and logging of messages. Steps specified in the article demonstrates how to get this scenario up and running. [Read the &lt;a href="http://wso2.org/library/knowledge-base/exposing-non-secured-service-security-using-esb"&gt;full&lt;/a&gt; article for more info]&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-3729783420138374828?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/3729783420138374828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=3729783420138374828' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/3729783420138374828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/3729783420138374828'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/10/exposing-non-secured-service-with.html' title='Exposing a non-secured service with security using ESB'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-4550059280943879759</id><published>2009-10-11T21:21:00.000-07:00</published><updated>2009-10-12T04:21:31.869-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='publications'/><category scheme='http://www.blogger.com/atom/ns#' term='articles'/><title type='text'>My article on IBM Developer Works</title><content type='html'>&lt;div style="text-align: justify;"&gt;It was one of my dreams to publish an article in IBM dW. Last week one of my articles got &lt;a href="http://www.ibm.com/developerworks/web/library/wa-jython/"&gt;published&lt;/a&gt; in the IBM developerWorks. A special thank goes out to Chris Walden (Web Development Editor) of  developerWorks who made this happen.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-4550059280943879759?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/4550059280943879759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=4550059280943879759' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/4550059280943879759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/4550059280943879759'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/10/my-article-on-ibm-developer-works.html' title='My article on IBM Developer Works'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-7684153542652154709</id><published>2009-10-03T05:26:00.000-07:00</published><updated>2009-10-07T09:33:08.287-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Basketball'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><title type='text'>Basketball @ WSO2 : How to Survive</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FP-C7_Sg888/SsdSGjgu0JI/AAAAAAAAAEQ/IciIpvuUq5Y/s1600-h/basketball.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 320px;" src="http://2.bp.blogspot.com/_FP-C7_Sg888/SsdSGjgu0JI/AAAAAAAAAEQ/IciIpvuUq5Y/s320/basketball.jpg" alt="" id="BLOGGER_PHOTO_ID_5388365751737307282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;It's been a while since I wrote a blogpost that relates to sports. Since annual basketball tournament at wso2 is coming up next week, I thought it would be the perfect time to write a blogpost on WSO2 basketball. The ideas &amp;amp; views expressed below can be a KnowledgeBase for anyone joining wso2 or newbie who wants to play basketball @ wso2.&lt;br /&gt;&lt;br /&gt;Wso2 folks dont have a permanent basketball court to play basketball. Instead they have transformed the car park into a basketball court. It is car-park by day and basketball court by night. We have portable baskeball posts, so we move em to the car-park in the evening. The court is not having the ideal dimensions of a standard basketball court; it is due to the limited space available in the car park.&lt;br /&gt;&lt;br /&gt;We started playing basketball @ wso2 around 1 year back and we followed it up with a inter-house basketball tournament, which was a &lt;a href="http://www.asankama.com/2008/10/it-was-grand-final.html"&gt;blast.&lt;/a&gt; It was a very successful event and everyone &lt;a href="http://heshans.blogspot.com/2008/10/internship-wso2.html"&gt;enjoyed&lt;/a&gt; it a lot(apart from the people who got injured while playing lol). Now 1 year has elapsed since the introduction of basketball to wso2 and IMO I say that we are playing a different flavor of basketball.&lt;br /&gt;&lt;br /&gt;Basketball is having several flavors ranging from Streetball to Slamball. Wso2's basketball has evolved into a unique flavor apart from these. I'd say it is a hybrid of both basketball and rugby :D. I'd like to call it &lt;span style="font-weight: bold;"&gt;RugBBall&lt;/span&gt;. Since I said that this would be a KB item, following are some tips to be successful(or survive lol) @ basketball court, during practice sessions.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You should be able to &lt;span style="font-weight: bold;"&gt;tolerate&lt;/span&gt; elbow shots and slaps, cos these arn't fouls :)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Dont ever &lt;span style="font-weight: bold;"&gt;argue&lt;/span&gt; with guys on "whether it was a foul or not". You could never win that argument :). Therefore it's better to carry on with the game without arguing.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt; After a practice session you'd feel like if you were scratched by a kitten and tackled by a NFL &lt;span style="font-weight: bold;"&gt;linebacker&lt;/span&gt; lol. &lt;/li&gt;&lt;/ul&gt;Those are the fun facts to know before you enter into the bb court.&lt;br /&gt;&lt;br /&gt;I will follow this post up with a pre-tournament analysis of the wso2's inter-house basketball teams. So stay tuned ;) .&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-7684153542652154709?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/7684153542652154709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=7684153542652154709' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/7684153542652154709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/7684153542652154709'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/10/basketball-wso2-how-to-survive.html' title='Basketball @ WSO2 : How to Survive'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_FP-C7_Sg888/SsdSGjgu0JI/AAAAAAAAAEQ/IciIpvuUq5Y/s72-c/basketball.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-9007789239155107648</id><published>2009-09-10T23:13:00.000-07:00</published><updated>2009-09-10T23:21:02.917-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Create ZIP archieve from multiple files</title><content type='html'>Following code snippet shows how to create a zip archieve from multiple files.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:js"&gt;import java.util.zip.*;&lt;br /&gt;import java.util.Iterator;&lt;br /&gt;import java.util.List;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;public class ZipDemo {&lt;br /&gt;    static int BUFFER_SIZE = 1024;&lt;br /&gt;    static String zipArchieveName = "allfiles.zip";&lt;br /&gt;&lt;br /&gt;    public static void main(String args[]) {&lt;br /&gt;        try {&lt;br /&gt;            // Reference to the file we will be adding to the zipfile&lt;br /&gt;            BufferedInputStream origin = null;&lt;br /&gt;&lt;br /&gt;            // Reference to zip file&lt;br /&gt;            FileOutputStream dest = new FileOutputStream(zipArchieveName);&lt;br /&gt;&lt;br /&gt;            // Wrap our destination zipfile with a ZipOutputStream&lt;br /&gt;            ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(dest));&lt;br /&gt;&lt;br /&gt;            // Create a byte[] buffer that we will read data from the source&lt;br /&gt;            // files into and then transfer it to the zip file&lt;br /&gt;            byte[] data = new byte[BUFFER_SIZE];&lt;br /&gt;&lt;br /&gt;            List files = new ArrayList();&lt;br /&gt;            files.add("/tmp/systemInfo.txt");&lt;br /&gt;            files.add("/tmp/osgiInfo.txt");&lt;br /&gt;            files.add("/tmp/errorInfo.txt");&lt;br /&gt;&lt;br /&gt;            // Iterate over all of the files in list&lt;br /&gt;            for (Iterator i = files.iterator(); i.hasNext();) {&lt;br /&gt;                // Get a BufferedInputStream that we can use to read the source file&lt;br /&gt;                String filename = (String) i.next();&lt;br /&gt;                System.out.println("Adding: " + filename);&lt;br /&gt;                FileInputStream fi = new FileInputStream(filename);&lt;br /&gt;                origin = new BufferedInputStream(fi, BUFFER_SIZE);&lt;br /&gt;&lt;br /&gt;                // Setup the entry in the zip file&lt;br /&gt;                ZipEntry entry = new ZipEntry(filename);&lt;br /&gt;                out.putNextEntry(entry);&lt;br /&gt;&lt;br /&gt;                // Read data from the source file and write it out to the zip file&lt;br /&gt;                int count;&lt;br /&gt;                while ((count = origin.read(data, 0, BUFFER_SIZE)) != -1) {&lt;br /&gt;                    out.write(data, 0, count);&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                // Close the source file&lt;br /&gt;                origin.close();&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            // Close the zip file&lt;br /&gt;            out.close();&lt;br /&gt;        }&lt;br /&gt;        catch (Exception e) {&lt;br /&gt;            e.printStackTrace();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-9007789239155107648?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/9007789239155107648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=9007789239155107648' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/9007789239155107648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/9007789239155107648'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/09/create-zip-archieve-from-multiple-files.html' title='Create ZIP archieve from multiple files'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-5704199764981029199</id><published>2009-08-31T23:11:00.000-07:00</published><updated>2009-09-01T01:40:01.843-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='log4j'/><title type='text'>How to add a Log4j Appender to WSO2 Carbon</title><content type='html'>1) Write a java class and extend AppenderSkeleton. Add the logic to the append(LoggingEvent e) method.&lt;br /&gt;&lt;pre class="brush:js"&gt;public class JiraAppender extends AppenderSkeleton {&lt;br /&gt;    protected void append(LoggingEvent loggingEvent) {&lt;br /&gt;        if (loggingEvent.getLevel().toString().equalsIgnoreCase("INFO")) {&lt;br /&gt;            System.out.println("INFO invoked!");&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public boolean requiresLayout() {&lt;br /&gt;        return false; &lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void close() {&lt;br /&gt;    }&lt;br /&gt;} &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;2) Modify the log4j.properties file located at&lt;br /&gt;&lt;pre class="brush:js"&gt;/carbon-platform-2.0.1/carbondistribution/carbon-home/lib/log4j.properties &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    a) Add the following entry to the log4j.properties file.&lt;br /&gt;&lt;pre class="brush:js"&gt;# CARBON_JIRA is set to be a MemoryAppender using a PatternLayout.&lt;br /&gt;log4j.appender.CARBON_JIRA=org.wso2.carbon.utils.JiraAppender&lt;br /&gt;log4j.appender.CARBON_JIRA.layout=org.apache.log4j.PatternLayout&lt;br /&gt;log4j.appender.CARBON_JIRA.layout.ConversionPattern=[%d] %5p - %x %m%n&lt;br /&gt;log4j.appender.CARBON_JIRA.threshold=DEBUG&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    b) Update the log4j.properties file with the following entry.&lt;br /&gt;&lt;pre class="brush:js"&gt;log4j.rootLogger=INFO, CARBON_CONSOLE, CARBON_LOGFILE, CARBON_MEMORY, CARBON_SYS_LOG, CARBON_JIRA&lt;br /&gt;&lt;br /&gt;log4j.logger.org.apache.axis2.wsdl.codegen.writer.PrettyPrinter=ERROR, CARBON_LOGFILE, CARBON_MEMORY, CARBON_JIRA&lt;br /&gt;log4j.logger.org.apache.axis2.clustering=DEBUG, CARBON_CONSOLE, CARBON_LOGFILE, CARBON_JIRA&lt;br /&gt;log4j.logger.org.apache=INFO, CARBON_LOGFILE, CARBON_MEMORY, CARBON_JIRA&lt;br /&gt;log4j.logger.org.apache.catalina=WARN&lt;br /&gt;log4j.logger.org.apache.tiles=WARN&lt;br /&gt;log4j.logger.org.apache.coyote=WARN&lt;br /&gt;log4j.logger.org.hibernate=ERROR, CARBON_LOGFILE, CARBON_MEMORY, CARBON_JIRA&lt;br /&gt;log4j.logger.org.mortbay=ERROR, CARBON_LOGFILE, CARBON_MEMORY, CARBON_JIRA&lt;br /&gt;log4j.logger.net.sf=ERROR&lt;br /&gt;log4j.logger.org.wso2=INFO&lt;br /&gt;log4j.logger.org.apache.axis2.enterprise=FATAL, CARBON_LOGFILE, CARBON_MEMORY, CARBON_JIRA&lt;br /&gt;log4j.logger.de.hunsicker.jalopy.io=FATAL, CARBON_LOGFILE, CARBON_MEMORY, CARBON_JIRA&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-5704199764981029199?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/5704199764981029199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=5704199764981029199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/5704199764981029199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/5704199764981029199'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/08/how-to-add-log4j-appender-to-wso2.html' title='How to add a Log4j Appender to WSO2 Carbon'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-5381432806151828804</id><published>2009-08-25T23:02:00.001-07:00</published><updated>2009-08-25T23:02:30.857-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Carbon'/><title type='text'>WSO2 Carbon Articles</title><content type='html'>Following are a list of useful articles on WSO2 Carbon.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wso2.org/library/articles/getting-started-wso2-carbon"&gt;Getting Started with WSO2 Carbon &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wso2.org/library/articles/stuff-works-wso2-carbon"&gt;How Stuff Works – WSO2 Carbon &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-5381432806151828804?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/5381432806151828804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=5381432806151828804' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/5381432806151828804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/5381432806151828804'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/08/wso2-carbon-articles_25.html' title='WSO2 Carbon Articles'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-2825323771787599345</id><published>2009-08-24T05:03:00.000-07:00</published><updated>2009-08-25T03:37:23.033-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><title type='text'>OSGi Tutorials</title><content type='html'>Following are a list of OSGi tutorials which I found useful.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://wso2.org/library/tutorials/develop-osgi-bundles-using-maven-bundle-plugin"&gt;How to build OSGi bundles using Maven Bundle Plugin - Part1 &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wso2.org/files/introduction_to_osgi.pdf"&gt;Introduction to OSGI&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://felix.apache.org/site/apache-felix-osgi-tutorial.html"&gt;Apache Felix OSGi Tutorial&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.theserverside.com/tt/articles/article.tss?l=OSGiforBeginners"&gt;OSGi for Beginners&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.infoq.com/presentations/colyer-server-side-osgi"&gt;Server Side OSGi&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-03-2008/jw-03-osgi1.html"&gt;Hello, OSGi, Part 1: Bundles for beginners&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-04-2008/jw-04-osgi2.html"&gt;Hello, OSGi, Part 2: Introduction to Spring Dynamic Modules&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-06-2008/jw-06-osgi3.html"&gt;Hello, OSGi, Part 3: Take it to the server side&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-2825323771787599345?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/2825323771787599345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=2825323771787599345' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/2825323771787599345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/2825323771787599345'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/08/osgi-tutorials.html' title='OSGi Tutorials'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-8989305745390559803</id><published>2009-08-23T23:26:00.000-07:00</published><updated>2009-08-24T01:19:34.973-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><title type='text'>Building OSGi bundles using Maven Bundle Plugin</title><content type='html'>&lt;div style="text-align: justify;"&gt;I came across a good &lt;a href="http://wso2.org/library/tutorials/develop-osgi-bundles-using-maven-bundle-plugin"&gt;article&lt;/a&gt; by &lt;a href="http://tech.jayasoma.org/"&gt;Sameera&lt;/a&gt; on "How to build OSGi bundles using Maven Bundle Plugin". It gives detailed infromation on how to use maven bundle plugin to generate OSGi bundles. In this blogpost, I will demonstrate how a sample can be run. If you are hungry for more information read the above article.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;1) Download and extract the &lt;a href="http://wso2.org/files/maven_bundle_plugin_samples_0.zip"&gt;samples&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;2) Build the sample01&lt;br /&gt;&lt;pre class="brush:js"&gt;mvn clean install&lt;/pre&gt;3) Download Equinox.&lt;br /&gt;eg: &lt;a href="http://www.eclipse.org/downloads/download.php?file=/equinox/drops/R-3.5-200906111540/org.eclipse.osgi_3.5.0.v20090520.jar"&gt;org.eclipse.osgi_3.5.0.v20090520.jar&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4) Run the jar file using following command.&lt;br /&gt;&lt;pre class="brush:js"&gt;java -jar org.eclipse.osgi_3.5.0.v20090520.jar -console&lt;/pre&gt;5) In the command prompt execute following command.&lt;br /&gt;&lt;pre class="brush:js"&gt;osgi&gt; ss&lt;br /&gt;Framework is launched.&lt;br /&gt;&lt;br /&gt;id    State       Bundle&lt;br /&gt;0    ACTIVE      org.eclipse.osgi_3.5.0.v20090520&lt;/pre&gt;6) Install the bundle&lt;br /&gt;&lt;pre class="brush:js"&gt;osgi&gt;  install file:/home/heshan/Documents/Work/OSGi/maven_bundle_plugin_samples_0/sample01/target/sample01-1.0.0.jar&lt;br /&gt;Bundle id is 1&lt;br /&gt;&lt;br /&gt;osgi&gt; ss&lt;br /&gt;Framework is launched.&lt;br /&gt;&lt;br /&gt;id    State       Bundle&lt;br /&gt;0    ACTIVE      org.eclipse.osgi_3.5.0.v20090520&lt;br /&gt;1    ACTIVE      org.wso2.mbp.sample01_1.0.0&lt;/pre&gt;7) Use the following commands to start and stop the bundles.&lt;br /&gt;&lt;pre class="brush:js"&gt;osgi&gt; start 1&lt;br /&gt;Hello World!!!&lt;br /&gt;&lt;br /&gt;osgi&gt; stop 1&lt;br /&gt;Goodbye World!!!&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-8989305745390559803?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/8989305745390559803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=8989305745390559803' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8989305745390559803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8989305745390559803'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/08/building-osgi-bundles-using-maven.html' title='Building OSGi bundles using Maven Bundle Plugin'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-748030781047933786</id><published>2009-08-18T23:14:00.000-07:00</published><updated>2009-08-18T23:17:35.925-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><category scheme='http://www.blogger.com/atom/ns#' term='Carbon'/><title type='text'>Building WSO2 Carbon from source</title><content type='html'>You can use following steps to successfully build, WSO2 Carbon from source;&lt;br /&gt;&lt;br /&gt;1. Checkout &lt;a href="https://svn.wso2.org/repos/wso2/trunk/commons/"&gt;commons&lt;/a&gt;. Then build caching, eventing, throttle, xkms modules.&lt;br /&gt;&lt;br /&gt;2. Build &lt;a href="https://svn.wso2.org/repos/wso2/trunk/carbon/"&gt;carbon&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;3. Build &lt;a href="https://svn.wso2.org/repos/wso2/trunk/carbon-orbit/"&gt;carbon-orbit&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;4. Build &lt;a href="https://svn.wso2.org/repos/wso2/branches/carbon-platform/2.1.0/synapse"&gt;synapse&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;5. Build &lt;a href="https://wso2.org/repos/wso2/trunk/wsf/javascript/rhino"&gt;rhino&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;6. Build &lt;a href="https://svn.wso2.org/repos/wso2/trunk/carbon-components/"&gt;carbon-components&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-748030781047933786?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/748030781047933786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=748030781047933786' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/748030781047933786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/748030781047933786'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/08/building-wso2-carbon-from-source.html' title='Building WSO2 Carbon from source'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-6810144319182462378</id><published>2009-08-17T10:07:00.000-07:00</published><updated>2009-08-17T10:14:20.435-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2'/><title type='text'>Second "First Day" @ WSO2</title><content type='html'>&lt;div style="text-align: justify;"&gt;Today was my first day at WSO2. I joined as a Software Engineer. This was in fact my second "first day" at WSO2. My first "first day" was in February 2008, when I joined WSO2 as an undergraduate intern.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-6810144319182462378?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/6810144319182462378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=6810144319182462378' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/6810144319182462378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/6810144319182462378'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/08/second-first-day-wso2.html' title='Second &quot;First Day&quot; @ WSO2'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-74825307461251803</id><published>2009-08-16T11:45:00.000-07:00</published><updated>2009-08-16T12:11:38.402-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UCSC'/><title type='text'>Good Bye UCSC</title><content type='html'>&lt;div style="text-align: justify;"&gt;Past week was my last week at UCSC. I had my final year project defense last week and it was the last commitment that I had towards my university. The  only other thing that we have to   do is organize the &lt;a href="http://ucsc.cmb.ac.lk/rs2009/"&gt;Research Symposium&lt;/a&gt;. It will be held on 25th August.&lt;br /&gt;&lt;br /&gt;UCSC had been my second-home for last 4 years and have some wonderful memories associated with it. It groomed me of becoming the person that I am today and I am forever grateful to University of Colombo and UCSC.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-74825307461251803?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/74825307461251803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=74825307461251803' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/74825307461251803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/74825307461251803'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/08/good-bye-ucsc.html' title='Good Bye UCSC'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-83838792397166337</id><published>2009-08-16T07:06:00.000-07:00</published><updated>2009-08-16T12:10:33.013-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JY'/><category scheme='http://www.blogger.com/atom/ns#' term='jython'/><category scheme='http://www.blogger.com/atom/ns#' term='WSF/Jython'/><category scheme='http://www.blogger.com/atom/ns#' term='Axis2'/><category scheme='http://www.blogger.com/atom/ns#' term='GSoC'/><title type='text'>GSoC: Experience</title><content type='html'>&lt;div style="text-align: justify;"&gt;This was my second consecutive year as a Google Summer of Code student. During past 3 months I learned a lot of things. I discussed these in an earlier posts. In a nutshell;&lt;br /&gt;&lt;br /&gt;1) I worked with a mentor (Matt Boersma) from a different time zone. This was the first time that I worked with a mentor from a different timezone. Our time difference was nearly 12 hours. We preferred email over chat since it was more conveinent for us.&lt;br /&gt;&lt;br /&gt;2) It was a privilege to work as a summer of code student for Python Software Foundation (PSF). All the people who were mentoring me helped me a lot, ranging from shaping up the application (project proposal) to development.&lt;br /&gt;&lt;br /&gt;3)It was a greatopportunity for me to work with experienced developers.&lt;br /&gt;&lt;br /&gt;I would like to take this opportunity to thank my mentor Matt Boersma and Jython community for helping me to make my project a success. I would also take this opportunity to thank my co-mentors Jim Baker and Frank Wierzbicki.&lt;br /&gt;&lt;br /&gt;I would like to state that it was a privilege and a honor to be selected as a GSoC student for a second time and thank Google for organizing a program like this. I am looking forward to participating in next year's GSoC as a mentor. :)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-83838792397166337?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/83838792397166337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=83838792397166337' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/83838792397166337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/83838792397166337'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/08/gsoc-experience.html' title='GSoC: Experience'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-8390382636800948715</id><published>2009-08-15T10:39:00.000-07:00</published><updated>2009-08-16T11:05:20.472-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JY'/><category scheme='http://www.blogger.com/atom/ns#' term='jython'/><category scheme='http://www.blogger.com/atom/ns#' term='WSF/Jython'/><category scheme='http://www.blogger.com/atom/ns#' term='Axis2'/><category scheme='http://www.blogger.com/atom/ns#' term='GSoC'/><title type='text'>GSoC: Update</title><content type='html'>During the development phase, I came across some problems. This is a follow up to my earlier posts. You can have a look at them &lt;a href="http://heshans.blogspot.com/search/label/GSoC"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;1) One problem is the way the API is designed to define the XML payload. I designed the &lt;a href="http://wso2.org/projects/wsf/jython"&gt;WSF/Jython&lt;/a&gt; API in such a way that it is comparable with the &lt;a href="http://wso2.org/project/wsf/ruby/1.1.0/docs/index.html"&gt;WSF/Ruby&lt;/a&gt; implementation. Therefore WSF/Jython API should adhere to the API specified by WSF/Ruby.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;When generating code using Axis2's code generation framework, you should generate it in a such a way that it should support XML object model(preferably in the case of axis2 - apache axiom). Therefore it would be better if the API supported axiom, inorder to use the code generation part.  Consider the following example.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush:js"&gt;from org.wso2.wsf.jython.jythonwsclient import *&lt;br /&gt;&lt;br /&gt;req_payload_string = "&amp;lt;deduct&amp;gt;&amp;lt;var1&amp;gt;1.8&amp;lt;/var1&amp;gt;&amp;lt;var2&amp;gt;4.87594&amp;lt;/var2&amp;gt;&amp;lt;/deduct&amp;gt;"&lt;br /&gt;LOG_FILE_NAME = "/home/heshan/IdeaProjects/MRclient/src/python_client.log"&lt;br /&gt;END_POINT = "http://localhost:8070/axis2/services/annotationScript/deduct"&lt;br /&gt;&lt;br /&gt;try:&lt;br /&gt;client = WSClient({}, LOG_FILE_NAME)&lt;br /&gt;req_message = WSMessage(req_payload_string, {"to" :END_POINT})&lt;br /&gt;print " Sending OM      : " , req_payload_string&lt;br /&gt;res_message = client.request(req_message)&lt;br /&gt;print " Response Message: " , res_message&lt;br /&gt;&lt;br /&gt;except WSFault, e:&lt;br /&gt;e.printStackTrace();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In above code snippet, the payload is set as a string. i.e.&lt;br /&gt;&lt;pre class="brush:js"&gt;&lt;br /&gt;req_payload_string = "&amp;lt;deduct&amp;gt;&amp;lt;var1&amp;gt;1.8&amp;lt;/var1&amp;gt;&amp;lt;var2&amp;gt;4.87594&amp;lt;/var2&amp;gt;&amp;lt;/deduct&amp;gt;"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;What should be done is to keep the above feature intact with the API and do a feature addition that will support Apache Axiom.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;2) Therefore, the existing WSF/Jython codebase should be modified to support axiom for Jython (should look into this further).&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;3) Modify the existing codebase to include the code generation part. Having said that  there should be more work done to seamlessly integrate this(code-generation part) to WSF/Jython code. More coding have to be done on code generation module for Jython.&lt;br /&gt;&lt;br /&gt;4) In a earlier &lt;a href="http://heshans.blogspot.com/2009/07/gsoc-how-to-integrate-with-existing.html"&gt;post&lt;/a&gt; I said of modifying the &lt;a href="http://wso2.org/library/articles/deploying-python-service-axis2#How%20a%20Python%20Service%20gets%20deployed"&gt;Python deployer&lt;/a&gt; to support Contract First approach. This happens in the server-side code generation. It's a problem that I am still having.&lt;br /&gt;&lt;br /&gt;5) In the same &lt;a href="http://heshans.blogspot.com/2009/07/gsoc-how-to-integrate-with-existing.html"&gt;post&lt;/a&gt; I said that&lt;br /&gt;&lt;blockquote&gt;0nly generate the client code and use the existing WSF/Jython's client API. Then before running the client code you can add the WSF/Jython client-side jar to the class path.&lt;/blockquote&gt;Now it seems like the best option out of the two options mentioned in the above post.&lt;br /&gt;&lt;br /&gt;[The above arguments are my opinions and may subject to change.]&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-8390382636800948715?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/8390382636800948715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=8390382636800948715' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8390382636800948715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8390382636800948715'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/08/gsoc-update.html' title='GSoC: Update'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-187295329122696964</id><published>2009-07-31T09:36:00.000-07:00</published><updated>2009-07-31T09:37:16.588-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='People'/><category scheme='http://www.blogger.com/atom/ns#' term='Videos'/><title type='text'>The Last Lecture: Achieving Your Childhood Dreams</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ji5_MqicxSo&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/ji5_MqicxSo&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-187295329122696964?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/187295329122696964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=187295329122696964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/187295329122696964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/187295329122696964'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/07/last-lecture-achieving-your-childhood.html' title='The Last Lecture: Achieving Your Childhood Dreams'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-7559362789159292023</id><published>2009-07-31T09:24:00.000-07:00</published><updated>2009-07-31T09:32:52.891-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UCSC'/><title type='text'>UCSC Research Symposium</title><content type='html'>&lt;div style="text-align: justify;"&gt;A gallant display of research prowess awaits unveiling as the country’s premiere Computer Science and Information Technology research community stages the biggest event of the year - the &lt;a href="http://ucsc.cmb.ac.lk/rs2009/"&gt;&lt;strong&gt;UCSC Research Symposium 2009&lt;/strong&gt;&lt;/a&gt;. With the memories of the inaugural UCSC Research Symposium in 2008 that revolutionized the undergraduate Computer Science research in Sri Lanka, the University of Colombo School of Computing (UCSC) expands this year’s event into new bounds, embracing cutting-edge research in both quantitative and qualitative disciplines.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Date:&lt;/span&gt;&lt;br /&gt;Tuesday, 25th of August 2009&lt;br /&gt;8.00 AM to 5.00 PM&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Venue:&lt;/span&gt;&lt;br /&gt;Prof V.K. Samaranayake Auditorium,&lt;br /&gt;University of Colombo School of Computing,&lt;br /&gt;Colombo 7,&lt;br /&gt;&lt;div style="font-size: 12px; text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;Sri Lanka&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-7559362789159292023?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/7559362789159292023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=7559362789159292023' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/7559362789159292023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/7559362789159292023'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/07/ucsc-research-symposium.html' title='UCSC Research Symposium'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-1305013774520549939</id><published>2009-07-10T21:04:00.000-07:00</published><updated>2009-07-10T21:32:29.154-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JY'/><category scheme='http://www.blogger.com/atom/ns#' term='jython'/><category scheme='http://www.blogger.com/atom/ns#' term='WSF/Jython'/><category scheme='http://www.blogger.com/atom/ns#' term='Axis2'/><category scheme='http://www.blogger.com/atom/ns#' term='GSoC'/><title type='text'>GSoC: How to integrate with existing code base</title><content type='html'>&lt;div style="text-align: justify;"&gt;This post will contain my arguments on "How to integrate &lt;a href="http://heshans.blogspot.com/2009/06/jython-extension-for-apache-axis2.html"&gt;this&lt;/a&gt; project to the existing &lt;a href="http://wso2.org/projects/wsf/jython"&gt;WSF/Jython&lt;/a&gt; code base". This is a followup to my &lt;a href="http://heshans.blogspot.com/2009/07/gsoc-problems-faced-during-development.html"&gt;last&lt;/a&gt; post.&lt;br /&gt;&lt;br /&gt;1. Modify the &lt;a href="http://wso2.org/library/articles/deploying-python-service-axis2#How%20a%20Python%20Service%20gets%20deployed"&gt;Python deployer&lt;/a&gt; to support Contract First approach.&lt;br /&gt;&lt;br /&gt;2. To support Contract First approach you need to be able to generate a skeleton and a &lt;a href="http://wso2.org/library/articles/deploying-python-service-axis2#Message%20Receiver"&gt;message receiver&lt;/a&gt; for your service. The generic message receiver that I  have already written  may not work because it works only on a limited schema structure.&lt;br /&gt;&lt;br /&gt;3. Another way to look at the above argument(2) may be; only generate the client code and use the existing WSF/Jython's client API. Then  before running the client code you can add the WSF/Jython client-side jar to the class path.&lt;br /&gt;&lt;br /&gt;The above arguments are my opinion(for now) on integrating the gsoc code to existing code base. The above arguments may subject to change.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-1305013774520549939?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/1305013774520549939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=1305013774520549939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/1305013774520549939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/1305013774520549939'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/07/gsoc-how-to-integrate-with-existing.html' title='GSoC: How to integrate with existing code base'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-1343438312895462882</id><published>2009-07-05T07:32:00.000-07:00</published><updated>2009-07-07T09:49:10.507-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JY'/><category scheme='http://www.blogger.com/atom/ns#' term='jython'/><category scheme='http://www.blogger.com/atom/ns#' term='WSF/Jython'/><category scheme='http://www.blogger.com/atom/ns#' term='Axis2'/><category scheme='http://www.blogger.com/atom/ns#' term='GSoC'/><title type='text'>GSOC: Problems faced during development</title><content type='html'>&lt;div style="text-align: justify;"&gt;Earlier I said that I would be writing a blog post on the problems which I encountered during the development phase of my &lt;a href="http://heshans.blogspot.com/2009/06/jython-extension-for-apache-axis2.html"&gt;GSoC project&lt;/a&gt;. Here I am compiling them to a list. Some points in the list may not directly be problems but important things which came across during the process.&lt;br /&gt;&lt;br /&gt;1. Had a problem with building axis2. This was overcome when I found a &lt;a href="http://heshans.blogspot.com/2009/06/building-axis2.html"&gt;workaround&lt;/a&gt; for this. (This was a hard issue to regenerate because this will only happen occasionally.)&lt;br /&gt;&lt;br /&gt;2. There were lot of dependencies inside axis2's code generation framework. Some dependencies were not set by the build script. Therefore had to manually add the dependencies and run the code. When it gives a compilation error stating a dependency is not there, had to set the dependencies. This took some time :).&lt;br /&gt;&lt;br /&gt;3. Had to take some time to understand the existing code base and the architecture of the code generation framework.&lt;br /&gt;&lt;br /&gt;4. Learned to work with XSLTs.&lt;br /&gt;&lt;br /&gt;5.  Another important point to note is that the &lt;a href="http://wso2.org/projects/wsf/jython"&gt;WSF/Jython&lt;/a&gt; distribution, now needs some additional libraries to successfully run. You may have wondered "why is this happening?". As you may already know WSF/Jython is built on top of Apache Axis2. The new releases of Axis2 are having more dependencies towards other liblaries/jars (eg. wsdl4j, etc). Since I no longer work for WSO2, I do not have the access writes to change the build script for WSF/Jython. As soon as I get there, I would remember to revise the build script. Until then you could do a small workaround:)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ws.apache.org/axis2/download/1_5/download.cgi"&gt;Download&lt;/a&gt; Axis2 &lt;span style="font-style: italic;"&gt;standard binary distribution&lt;/span&gt;. Then extract it. Add the jars which are residing in the &lt;span style="font-style: italic;"&gt;lib&lt;/span&gt; folder, to the classpath. Then you could carry on with your work.&lt;br /&gt;&lt;br /&gt;6. How to integrate this project to the existing WSF/Jython development. (I will present my arguments on this on a new post)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-1343438312895462882?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/1343438312895462882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=1343438312895462882' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/1343438312895462882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/1343438312895462882'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/07/gsoc-problems-faced-during-development.html' title='GSOC: Problems faced during development'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-3322424268986596799</id><published>2009-06-29T22:29:00.000-07:00</published><updated>2009-06-29T22:48:02.616-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='People'/><category scheme='http://www.blogger.com/atom/ns#' term='Sri Lanka'/><title type='text'>Mr. Lakshman Kadiragamar's Lesson</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_FP-C7_Sg888/SkmjsC-IK1I/AAAAAAAAAEI/tHF6nE9JIEg/s1600-h/image001.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 229px; height: 320px;" src="http://4.bp.blogspot.com/_FP-C7_Sg888/SkmjsC-IK1I/AAAAAAAAAEI/tHF6nE9JIEg/s320/image001.gif" alt="" id="BLOGGER_PHOTO_ID_5352989609213569874" border="0" /&gt;&lt;/a&gt;In 2005, almost fifty years after he left Oxford, Mr. &lt;a href="http://en.wikipedia.org/wiki/Lakshman_Kadirgamar"&gt;Lakshman Kadiragamar&lt;/a&gt;'s portrait was unveiled at the Oxford Union. This was a great honour bestowed by the Oxford Union on only 15 others in its 183 year history.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Mr Kadirgamar had this to say about that event;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;'......I would like to, if I may, to assume that I could share the honour with the people of my country, Sri Lanka . I had my schooling there, my first university was there, I went to Law College there and by the time I came to Oxford as a postgraduate student, well, I was relatively a matured person. Oxford was the icing on the cake … but the cake was baked at home ......(applause) .'&lt;/blockquote&gt;&lt;br /&gt;This is indeed true. People appreciate only the icing on the cake not where it was baked first.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-3322424268986596799?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/3322424268986596799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=3322424268986596799' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/3322424268986596799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/3322424268986596799'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/06/mr-lakshman-kadiragamars-lesson.html' title='Mr. Lakshman Kadiragamar&apos;s Lesson'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_FP-C7_Sg888/SkmjsC-IK1I/AAAAAAAAAEI/tHF6nE9JIEg/s72-c/image001.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-1417380992646204889</id><published>2009-06-27T01:29:00.000-07:00</published><updated>2009-07-07T09:49:28.341-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JY'/><category scheme='http://www.blogger.com/atom/ns#' term='jython'/><category scheme='http://www.blogger.com/atom/ns#' term='Axis2'/><category scheme='http://www.blogger.com/atom/ns#' term='GSoC'/><title type='text'>Design for Jython Extension for Axis2</title><content type='html'>&lt;div style="text-align: justify;"&gt;In a earlier &lt;a href="http://heshans.blogspot.com/2009/06/jython-extension-for-apache-axis2.html"&gt;post&lt;/a&gt; I said that I am coming up with a Jython extension for Axis2. This will be a code generation tool for jython. This will use existing &lt;a href="http://heshans.blogspot.com/2009/06/axis2-code-generator.html"&gt;infrastructure&lt;/a&gt; in Axis2 to support Contract First Web services in Jython. What I am planning to do is to integrate this code generation tool into &lt;a href="http://wso2.org/projects/wsf/jython"&gt;WSF/Jython&lt;/a&gt;. Then WSF/Jython will be able to support both, contract-first and code-first approaches. Thus, making the life easier for the Jython developer  :).&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FP-C7_Sg888/SkXdwudw8oI/AAAAAAAAAD4/77pFp7MhkWE/s1600-h/codegen2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 101px;" src="http://2.bp.blogspot.com/_FP-C7_Sg888/SkXdwudw8oI/AAAAAAAAAD4/77pFp7MhkWE/s320/codegen2.JPG" alt="" id="BLOGGER_PHOTO_ID_5351927561376035458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The code generation engine calls the extensions one by one and then calls a component what is known as the Emitter. Emitter is the actual component that does the significant bit of work in the code generation process. Emitters are usually language dependent and hence one language has one emitter associated with it. Therefore there should be an emitter to support Jython  code generation. This simple yet powerful architecture is shown in the  above illustration.&lt;br /&gt;&lt;br /&gt;The Emitter processes the WSDL and builds a object model. The object model is simply an XML file which contains the object model of the WSDL with respect  to Axis2 &lt;a href="http://ws.apache.org/axis2/1_0/Axis2ArchitectureGuide.html#bmInfoMod"&gt;information model&lt;/a&gt; (ie.  axis service, axis operation, axis message, etc). The template is a XSLT file which contains information on how the code should be generated. Then the built object model is parsed against the template to build the jython source code.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-1417380992646204889?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/1417380992646204889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=1417380992646204889' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/1417380992646204889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/1417380992646204889'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/06/design-for-jython-extension-for-axis2.html' title='Design for Jython Extension for Axis2'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_FP-C7_Sg888/SkXdwudw8oI/AAAAAAAAAD4/77pFp7MhkWE/s72-c/codegen2.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-3374431016214100847</id><published>2009-06-27T01:01:00.000-07:00</published><updated>2009-07-07T09:50:04.697-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JY'/><category scheme='http://www.blogger.com/atom/ns#' term='Axis2'/><category scheme='http://www.blogger.com/atom/ns#' term='GSoC'/><title type='text'>wsdl2java Code Generation</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a href="http://ws.apache.org/axis2/"&gt;Axis2&lt;/a&gt;'s wsdl2java code generation &lt;a href="http://ws.apache.org/axis2/tools/1_4_1/CodegenToolReference.html"&gt;tool&lt;/a&gt; can be used to auto-generate programming language code for a given WSDL file. It can either generate code to invoke a Web service, or it can auto-generate the skeleton code that will adhere to the specification described within the WSDL file so that the generated code can be deployed as a Web service.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-3374431016214100847?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/3374431016214100847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=3374431016214100847' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/3374431016214100847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/3374431016214100847'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/06/wsdl2java-code-generation.html' title='wsdl2java Code Generation'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-6909305416594417480</id><published>2009-06-27T00:46:00.000-07:00</published><updated>2009-06-27T08:07:03.987-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sri Lanka'/><category scheme='http://www.blogger.com/atom/ns#' term='Videos'/><title type='text'>$HOME = Small Miracle</title><content type='html'>My $HOME sweet home - Sri Lanka :).&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/MT0e3Lw9_lc&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/MT0e3Lw9_lc&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-6909305416594417480?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/6909305416594417480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=6909305416594417480' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/6909305416594417480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/6909305416594417480'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/06/home-small-miracle.html' title='$HOME = Small Miracle'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-8295358816618784596</id><published>2009-06-26T23:57:00.000-07:00</published><updated>2009-07-07T09:50:11.912-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JY'/><category scheme='http://www.blogger.com/atom/ns#' term='Axis2'/><category scheme='http://www.blogger.com/atom/ns#' term='GSoC'/><title type='text'>Axis2 Code Generator</title><content type='html'>This is a follow up to my earlier &lt;a href="http://heshans.blogspot.com/2009/06/jython-extension-for-apache-axis2.html"&gt;post&lt;/a&gt;. What I am planning to do is to come up with a mechanism to generate jython code for a given WSDL. For this purpose I am planning to use Axis2's Code Generation module.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;When you consider a  SOAP processing engine, one of the key value additions will be code generation based on WSDL. It is normally considered as a tool and importance of it can be seen as;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;User convenience - Code generation tool helps users, to use the framework in easy and efficient way.&lt;/li&gt;&lt;li&gt;Make use of the framework to it's full potential.&lt;/li&gt;&lt;/ol&gt;Now let's have a look at the architecture of Axis2 Code generator.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FP-C7_Sg888/SkXLs50L5hI/AAAAAAAAADw/HXSU3batfCQ/s1600-h/codegen1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 95px;" src="http://2.bp.blogspot.com/_FP-C7_Sg888/SkXLs50L5hI/AAAAAAAAADw/HXSU3batfCQ/s400/codegen1.JPG" alt="" id="BLOGGER_PHOTO_ID_5351907704494089746" border="0" /&gt;&lt;/a&gt;The tool's architecture is pretty straight forward. The core processes the WSDL and builds a object model. Then the built object model is parsed against the template to build the source code.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-8295358816618784596?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/8295358816618784596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=8295358816618784596' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8295358816618784596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/8295358816618784596'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/06/axis2-code-generator.html' title='Axis2 Code Generator'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_FP-C7_Sg888/SkXLs50L5hI/AAAAAAAAADw/HXSU3batfCQ/s72-c/codegen1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-257661962723057736</id><published>2009-06-26T22:59:00.001-07:00</published><updated>2009-06-27T13:31:35.999-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='People'/><category scheme='http://www.blogger.com/atom/ns#' term='Videos'/><title type='text'>King of Pop - MJ</title><content type='html'>&lt;div style="text-align: justify;"&gt;Michael Jackson &lt;a href="http://www.washingtonpost.com/wp-dyn/content/story/2009/06/25/ST2009062503486.html"&gt;died&lt;/a&gt; yesterday. He was considered the King of Pop and a megastar of music industry. Despite all accusations, he is one of those people who really made a difference. RIP MJ.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/cC1TTz2bMmM&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/cC1TTz2bMmM&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-257661962723057736?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/257661962723057736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=257661962723057736' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/257661962723057736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/257661962723057736'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/06/king-of-pop-mj.html' title='King of Pop - MJ'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6087794019829505601.post-3632727754254466916</id><published>2009-06-25T07:16:00.000-07:00</published><updated>2009-07-07T09:50:21.321-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JY'/><category scheme='http://www.blogger.com/atom/ns#' term='Axis2'/><category scheme='http://www.blogger.com/atom/ns#' term='GSoC'/><title type='text'>Building Axis2</title><content type='html'>&lt;div style="text-align: justify;"&gt;This is a bug (I think) which I came across a couple of times, while building Axis2. To overcome this you have to follow 2 simple instructions ;). For the completeness of this blog post, I will direct you through he complete build process.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;1. First checkout the source.&lt;br /&gt;&lt;blockquote&gt;svn co http://svn.apache.org/repos/asf/webservices/axis2/trunk/java&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;2. Build the project from the source. Do not skip the tests, when you do a fresh build.&lt;br /&gt;&lt;blockquote&gt;mvn clean install&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;NOTE:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;           Now is the tricky part. If you are not getting build errors, then no problems at all :). If you start getting build errors related to plugins, then do the following to overcome it.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;1. First build the axis2-aar-maven-plugin.&lt;br /&gt;&lt;br /&gt;2. Then build the axis2-mar-maven-plugin.&lt;br /&gt;&lt;br /&gt;3. Afterwards, build axis2. This should pretty much overcome the build error :).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6087794019829505601-3632727754254466916?l=heshans.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://heshans.blogspot.com/feeds/3632727754254466916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6087794019829505601&amp;postID=3632727754254466916' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/3632727754254466916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6087794019829505601/posts/default/3632727754254466916'/><link rel='alternate' type='text/html' href='http://heshans.blogspot.com/2009/06/building-axis2.html' title='Building Axis2'/><author><name>Heshan Suriyaarachchi</name><uri>http://www.blogger.com/profile/07333563024142418173</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-V_lB0OdWL38/TWAB6hP6tzI/AAAAAAAAAIM/uJzHDMjb6DE/s220/profile.jpg'/></author><thr:total>0</thr:total
