<?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-8648017967226408418</id><updated>2012-01-20T02:12:47.033+05:30</updated><category term='llvm nightly tester'/><category term='gsoc'/><category term='thread dumps'/><category term='javascript'/><category term='CMake'/><category term='perl'/><category term='JBoss messeging'/><category term='civil war'/><category term='CSG'/><category term='UI'/><category term='mvn'/><category term='endpints'/><category term='high CPU usage'/><category term='vimrc'/><category term='LLVM'/><category term='Qpid'/><category term='POX'/><category term='datasources'/><category term='linear algebra'/><category term='Sri Lanka'/><category term='WS-RM'/><category term='JMB'/><category term='Informix database'/><category term='JMS ExceptionListener'/><category term='reboot() call'/><category term='AMQP'/><category term='JMS'/><category term='vim'/><category term='RFC-6167'/><category term='c++'/><category term='NFA'/><category term='strators'/><category term='medition'/><category term='ESB QandA'/><category term='IBM JDK'/><category term='carbon components'/><category term='ant'/><category term='MOM'/><category term='mysql'/><category term='Transaction mediator'/><category term='system programming'/><category term='REST'/><category term='WSO2 ESB'/><category term='sftp'/><category term='MSMQ transport'/><category term='xinted'/><category term='jms failover'/><category term='synapse'/><category term='swig'/><category term='MSMQ'/><category term='ActiveMQ'/><category term='JTA'/><category term='utf-8'/><category term='ssh'/><category term='XML'/><category term='messeginig'/><category term='Iridium'/><category term='cloud'/><category term='Java'/><category term='CIFS'/><category term='Fast Infoset'/><category term='c'/><category term='Transactions'/><category term='JMs transaction'/><category term='DBLookup mediator'/><category term='carbon'/><category term='mediator'/><category term='JMX'/><category term='XPath'/><category term='unix'/><category term='axis2/c'/><category term='SIGPLAN award'/><category term='samba'/><category term='mathematics'/><category term='Web Logic'/><category term='Haiti eathquake'/><category term='article'/><category term='llvm-gcc'/><category term='release'/><category term='JBOSS'/><category term='parser'/><category term='Basic Authetication'/><category term='bit wise operators'/><category term='wso2'/><category term='compiler'/><category term='svn'/><category term='spider monkey'/><category term='VFS transport'/><title type='text'>rajika's web log</title><subtitle type='html'>hello there!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>89</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-598586362037178734</id><published>2011-11-11T16:08:00.001+05:30</published><updated>2011-11-11T16:10:56.769+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='system programming'/><category scheme='http://www.blogger.com/atom/ns#' term='c'/><title type='text'>A Stream Input-Output System</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;a href="http://cm.bell-labs.com/cm/cs/who/dmr/st.html"&gt;A Stream Input-Output System&lt;/a&gt; by &lt;span class="Apple-style-span" style="background-color: white; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;i&gt;Dennis M. Ritchie.&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: black; font-family: 'Times New Roman'; font-size: small; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;This is one of the best papers that I have read so far.&amp;nbsp; &lt;i&gt;&lt;br /&gt;&lt;/i&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/8648017967226408418-598586362037178734?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/598586362037178734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2011/11/stream-input-output-system.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/598586362037178734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/598586362037178734'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2011/11/stream-input-output-system.html' title='A Stream Input-Output System'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-5036133086271752861</id><published>2011-10-13T09:57:00.001+05:30</published><updated>2011-10-13T09:57:29.070+05:30</updated><title type='text'>RIP DMR</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-N4vz2qHTJls/TpZocmzfl-I/AAAAAAAAAE4/jfyUOUdAj8Q/s1600/225px-Dennis_MacAlistair_Ritchie_.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-N4vz2qHTJls/TpZocmzfl-I/AAAAAAAAAE4/jfyUOUdAj8Q/s1600/225px-Dennis_MacAlistair_Ritchie_.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: white; color: black; font-family: sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;(September 9, 1941 — October 12, 2011)&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/8648017967226408418-5036133086271752861?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/5036133086271752861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2011/10/rip-dmr.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5036133086271752861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5036133086271752861'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2011/10/rip-dmr.html' title='RIP DMR'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-N4vz2qHTJls/TpZocmzfl-I/AAAAAAAAAE4/jfyUOUdAj8Q/s72-c/225px-Dennis_MacAlistair_Ritchie_.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-8447091720472469857</id><published>2011-09-11T15:25:00.001+05:30</published><updated>2011-09-11T15:25:45.775+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='JMS'/><title type='text'>Caching JMS objects in WSO2 ESB's JMS transport</title><content type='html'>For high performance deployment of WSO2 ESB's JMS transport you can configure the option to cache the JMS objects ( producers/consumers, sessions, connections etc..) in WSO2 ESB. Following is the configuration that you need to add for axis2.xml in WSO2 ESB for configuring the caching of JMS objects for JMS sender. &lt;pre style="background-color:#FBF5EF;border:1px dashed#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:3px;text-align:left;width:680px;"&gt;&lt;br /&gt; &amp;lt;transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender"&amp;gt;&lt;br /&gt;        &amp;lt;parameter name="default" locked="false"&amp;gt;&lt;br /&gt;            &amp;lt;parameter name="java.naming.factory.initial" locked="false"&amp;gt;org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;            &amp;lt;parameter name="java.naming.provider.url" locked="false"&amp;gt;tcp://localhost:61616&amp;lt;/parameter&amp;gt;&lt;br /&gt;            &amp;lt;parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false"&amp;gt;QueueConnectionFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;            &amp;lt;parameter name="transport.jms.ConnectionFactoryType" locked="false"&amp;gt;queue&amp;lt;/parameter&amp;gt;&lt;br /&gt;            &amp;lt;parameter name="transport.jms.CacheLevel" locked="false"&amp;gt;producer&amp;lt;/parameter&amp;gt;&lt;br /&gt;            &amp;lt;parameter name="transport.jms.Destination" locked="false"&amp;gt;dynamicQueues/SimpleStockQuoteService&amp;lt;/parameter&amp;gt;&lt;br /&gt;            &amp;lt;parameter name="transport.jms.DestinationType" locked="false"&amp;gt;queue&amp;lt;/parameter&amp;gt;&lt;br /&gt;        &amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/transportSender&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;But this has a limitation where all the JMS endpoint will share the same destination queue, which is not what we need in most cases. So what we need to do is to define connection factory per JMS endpoint basis and make use of that JMS connection factory definition in the JMS endpoint as follows. &lt;pre style="background-color:#FBF5EF;border:1px dashed#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:3px;text-align:left;width:680px;"&gt;&lt;br /&gt;     &amp;lt;address uri="jms:/?transport.jms.ConnectionFactory=default"/&gt;&lt;br /&gt;&lt;/pre&gt;The strange /? combination is required because the JMS uri parameter passing logic assume the availability of ? in the JMS uri. This shows one more thing. How you can define a separate connection factory definition and use it in the JMS endpoint rather than embedding every parameter in the JMS url itself. As you may probably guess, you can cache the JMS objects for JMS listener side as well. But by default it's enabled.  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-8447091720472469857?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/8447091720472469857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2011/09/caching-jms-objects-in-wso2-esbs-jms.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/8447091720472469857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/8447091720472469857'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2011/09/caching-jms-objects-in-wso2-esbs-jms.html' title='Caching JMS objects in WSO2 ESB&apos;s JMS transport'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-2349710770188400344</id><published>2011-08-11T08:25:00.006+05:30</published><updated>2011-08-11T12:31:51.185+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='JMS'/><category scheme='http://www.blogger.com/atom/ns#' term='RFC-6167'/><title type='text'>RFC-6167 notes</title><content type='html'>This post outline some key points of the &lt;a href="http://www.rfc-editor.org/rfc/rfc6167.txt"&gt;RFC-6167&lt;/a&gt;. This specification defines a new URI scheme for JMS objects ( such as ConnectionFactories, Queues and Topics). Following are some of the key points.&lt;br /&gt;&lt;br /&gt;1. The name of the URI Scheme is &lt;span style="font-weight: bold;"&gt;"jms"&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;2. Syntax of a JMS URI looks like below.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;jms-uri = "jms:" jms-variant ":" jms-dest&lt;br /&gt;     [ "?" param *( "&amp;amp;" param ) ]&lt;br /&gt;  jms-variant = segment-nz-nc&lt;br /&gt;  jms-dest = segment-nz ; specific meaning per variant&lt;br /&gt;  param = param-name "=" param-value&lt;br /&gt;  param-name = 1*(unreserved / pct-encoded)&lt;br /&gt;  param-value = *(unreserved / pct-encoded)&lt;br /&gt;  segment-nz-nc = &amp;lt;as defined in RFC 3986&amp;gt;&lt;br /&gt;  path-rootless = &amp;lt;as defined in RFC 3986&amp;gt;&lt;br /&gt;  unreserved = &amp;lt;as defined in RFC 3986&amp;gt;&lt;br /&gt;  pct-encoded = &amp;lt;as defined in RFC 3986&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;3. RFC-6168 only defines how to address JMS resources and DO NOT specify actions to be taken on those resources. Those operations are normally defined by the JMS API.&lt;br /&gt;&lt;br /&gt;4. &lt;span style="font-weight: bold;"&gt;&amp;lt;jms-variant&amp;gt;&lt;/span&gt; can be either &lt;span style="font-weight: bold;"&gt;jndi&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;queue&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;topic&lt;/span&gt; or a vendor specific type(example : vnd.example.ex).&lt;br /&gt;&lt;br /&gt;5. All the terminals that result from &lt;span style="font-weight: bold;"&gt;&amp;lt;jms-variant&amp;gt;&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;&amp;lt;jms-dest&amp;gt;&lt;/span&gt; are &lt;span style="font-weight: bold;"&gt;case sensitive&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;6. Parameter can appear in any order and name of a parameter SHOULD NOT appear more than once. If same parameter appear more than once only the last parameter value should be considered.&lt;br /&gt;&lt;br /&gt;7. Each variant can have query parameters specific to that variation. All such variant-specific parameters SHOULD use the name of the variant as the prefix to the parameter.&lt;br /&gt;Example: Vendor specific jms-variant - &lt;span style="font-weight: bold;"&gt;vnd.example.ex&lt;/span&gt; and for a parameter called &lt;span style="font-weight: bold;"&gt;Parameter&lt;/span&gt;, it should name as &lt;span style="font-weight: bold;"&gt;vnd.example.exParameter&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;8. Parameters that apply across multiple variants MUST NOT have a name that starts with the name of any known variants.&lt;br /&gt;&lt;br /&gt;9. Examples URI.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;jms:jndi:REQ_QUEUE?jndiURL=file:/C:/JMSAdmin&lt;br /&gt;&amp;amp;jndiInitialContextFactory=com.sun.jndi.fscontext.RefFSContextFactory&lt;br /&gt;&amp;amp;jndiConnectionFactoryName=CONNFACT&lt;br /&gt;&amp;amp;replyToName=RESP_QUEUE&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;jms:jndi:REQ_QUEUE?jndiURL=file:/C:/JMSAdmin&lt;br /&gt;&amp;amp;jndiInitialContextFactory=com.sun.jndi.fscontext.RefFSContextFactory&lt;br /&gt;&amp;amp;jndiConnectionFactoryName=CONNFACT&lt;br /&gt;&amp;amp;jndi-com.example.jndi.someParameter=someValue&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;jms:topic:REQ_QUEUE?timeToLive=1000&lt;br /&gt;&amp;amp;priority=2&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;10. &lt;span style="font-weight: bold;"&gt;Shared parameters&lt;/span&gt;. Parameters which are available for all jms-variant are called shared parameters.  These parameters are corresponds to various JMS headers that comes in the JMS message.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;deliveryMode(JMSDeliveryMode header) - PERSISTENT | NON_PERSISTENT&lt;/li&gt;&lt;li&gt;timeToLive - lifetime in milliseconds&lt;br /&gt;&lt;/li&gt;&lt;li&gt;priority(JMSPriority) - a value between 0 and 9(inclusive)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;replyToName(JMSReplyTo)/topicRelyToName - the queue name of the reply message and if using a topic variant should use topicReplyToName&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;11. The JNDI-specific parameters SHOULD only be processed when the URI variant is "jndi".&lt;br /&gt;&lt;ul&gt;&lt;li&gt;jndiInitialContextFactory - Fully qualified Java class name of the "InitialContextFactory" implementation class to use.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;jndiURL - Specify the JNDI provider URL.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;12. Additional JNDI parameters should be prefix with &lt;span style="font-weight: bold;"&gt;jndi-&lt;/span&gt;.&lt;br /&gt;Ex: If the JNDI provider needs a parameter called &lt;span style="font-weight: bold;"&gt;com.example.jndi.someParameter&lt;/span&gt; and it should be provided in the URI as:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;jndi-com.example.jndi.someParameter=someValue&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;13. A JMS URI MUST NOT specify both &lt;span style="font-weight: bold;"&gt;replyToName&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;topicReplyToName.&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;14. Characters &lt;span style="font-weight: bold;"&gt;"?"&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;"&amp;amp;"&lt;/span&gt; MUST BE encoded&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;when they appear within &lt;jms-dest&gt; section or in a query parameters. &lt;/jms-dest&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;15.&lt;/span&gt;&lt;span&gt; The character&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; ":" &lt;/span&gt;&lt;span&gt;SHOULD BE escaped when appearing in the &amp;lt;jms-dest&amp;gt; portion of the syntax.&lt;br /&gt;&lt;/jms-dest&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-2349710770188400344?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/2349710770188400344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2011/08/rfc-6167-notes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/2349710770188400344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/2349710770188400344'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2011/08/rfc-6167-notes.html' title='RFC-6167 notes'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-7814656050564485985</id><published>2011-08-03T16:29:00.004+05:30</published><updated>2011-08-05T15:05:57.042+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='high CPU usage'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='thread dumps'/><title type='text'>Debugging high CPU consumption Java problem using thread dumps</title><content type='html'>I was trying to locate a problematic stack trace of a Java application which caused the CPU to go 100%. The best friend when come to debugging un-ordered CPU utilization of Java program in thread dumps. Here how you do this. &lt;br /&gt;&lt;br /&gt;1. Locate the thread which eats up the CPU. &lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;ps -C java -L -o pcpu,cpu,nice,state,cputime,pid,tid | less&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Note that this assume the only Java process that runs on the system is the process that you want to debug. &lt;br /&gt;&lt;br /&gt;This will out put something like below in Fedora Linux.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;%CPU CPU  NI S     TIME   PID   TID&lt;br /&gt; 0.1   -   0 S 00:00:00  8016  8016&lt;br /&gt; 2.1   -   0 S 00:00:00  8016  8048&lt;br /&gt; 1.1   -   0 S 00:00:00  8016  8049&lt;br /&gt; 1.1   -   0 S 00:00:00  8016  8050&lt;br /&gt; 1.0   -   0 S 00:00:00  8016  8051&lt;br /&gt; 0.0   -   0 S 00:00:00  8016  8052&lt;br /&gt; 0.0   -   0 S 00:00:00  8016  8053&lt;br /&gt; 0.0   -   0 S 00:00:00  8016  8054&lt;br /&gt;14.1   -   0 S 00:00:06  8016  8055&lt;br /&gt;11.3   -   0 S 00:00:04  8016  8056&lt;br /&gt; 0.0   -   0 S 00:00:00  8016  8057&lt;br /&gt; 0.0   -   0 S 00:00:00  8016  8085&lt;br /&gt; 0.0   -   0 S 00:00:00  8016  8086&lt;br /&gt; 0.0   -   0 S 00:00:00  8016  8087&lt;br /&gt; 2.3   -   0 S 00:00:00  8016  8088&lt;br /&gt;25.4   -   0 S 00:00:09  8016  8090&lt;br /&gt;11.2   -   0 S 00:00:04  8016  8091&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;With the information above you can conclude that the thread number(TID) of the problematic thread is 8090.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Update:&lt;/span&gt; You can sort the threads in a process according to their usage using following. &lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;ps -mp &lt;span style="font-style:italic;"&gt;&amp;lt;pid&amp;gt;&lt;/span&gt; -o THREAD&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;USER     %CPU PRI SCNT WCHAN  USER SYSTEM&lt;br /&gt;rajika    3.2   -    - -         -      -&lt;br /&gt;rajika    0.0  19    - futex_    -      -&lt;br /&gt;rajika    0.2  19    - futex_    -      -&lt;br /&gt;rajika    0.0  19    - futex_    -      -&lt;br /&gt;rajika    0.0  19    - futex_    -      -&lt;br /&gt;rajika    0.1  19    - futex_    -      -&lt;br /&gt;rajika    0.0  19    - futex_    -      -&lt;br /&gt;rajika    0.0  19    - futex_    -      -&lt;br /&gt;rajika    0.0  19    - futex_    -      -&lt;br /&gt;rajika    0.0  19    - futex_    -      -&lt;br /&gt;rajika    0.0  19    - futex_    -      -&lt;br /&gt;rajika    0.0  19    - sk_wai    -      -&lt;br /&gt;rajika    0.3  19    - futex_    -      -&lt;br /&gt;rajika    0.4  19    - futex_    -      -&lt;br /&gt;&lt;/pre&gt; &lt;br /&gt;&lt;br /&gt;2. Get a thread dump of the application&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;ps ax | grep java&lt;br /&gt;kill -3 java-process-number&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;3. Convert the value in #1(8090) into it's hexadecimal value and locate the problematic stack trace using that value in the thread dump. The value that you need to look into is the &lt;b&gt;nid&lt;/b&gt; value in the stack. &lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;"[ThreadPool Manager] - Idle Thread" daemon prio=10 tid=0x00007f516c066800 nid=0x1a8f in Object.wait() [0x00007f51d85b9000]&lt;br /&gt;   java.lang.Thread.State: WAITING (on object monitor)&lt;br /&gt; at java.lang.Object.wait(Native Method)&lt;br /&gt; - waiting on &lt;0x00007f51b44b4610&gt; (a org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor)&lt;br /&gt; at java.lang.Object.wait(Object.java:485)&lt;br /&gt; at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:106)&lt;br /&gt; - locked &lt;0x00007f51b44b4610&gt; (a org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. Once you know where to look in the source (#3) you can look into the source of the high CPU utilization problems&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-7814656050564485985?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/7814656050564485985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2011/08/debugging-high-cpu-consumption-java.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7814656050564485985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7814656050564485985'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2011/08/debugging-high-cpu-consumption-java.html' title='Debugging high CPU consumption Java problem using thread dumps'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-3066891781574140740</id><published>2011-05-16T09:50:00.002+05:30</published><updated>2011-05-16T10:20:42.719+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WS-RM'/><title type='text'>Short tutorial on WS-RM</title><content type='html'>WS-Reliable Messaging( or WS-RM for short) is specification that defines reliable message delivery of between components. &lt;br /&gt;&lt;br /&gt;When a WS-RM client talks to a WS-RM enable server there are three messages that goes between them. First the client requests the server with a WS-RM create sequence first try to create a sequence by sending a message with CreateSequence element. This is to initiate a WS-RM session and the request looks like below (note the SOAP body). &lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&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/"&amp;gt; &lt;br /&gt;      &amp;lt;soapenv:Header&amp;gt; &lt;br /&gt;         &amp;lt;wsa:To xmlns:wsa="http://www.w3.org/2005/08/addressing"&amp;gt;http://localhost:8281/services/StockQuoteProxy&amp;lt;/wsa:To&amp;gt; &lt;br /&gt;         &amp;lt;wsa:MessageID xmlns:wsa="http://www.w3.org/2005/08/addressing"&amp;gt;urn:uuid:F6BE3F51CABFB86C131305006461276&amp;lt;/wsa:MessageID&amp;gt; &lt;br /&gt;         &amp;lt;wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing"&amp;gt;http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence&amp;lt;/wsa:Action&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;wsrm:CreateSequence xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"&amp;gt; &lt;br /&gt;            &amp;lt;wsrm:AcksTo&amp;gt; &lt;br /&gt;               &amp;lt;wsa:Address xmlns:wsa="http://www.w3.org/2005/08/addressing"&amp;gt;http://www.w3.org/2005/08/addressing/anonymous&amp;lt;/wsa:Address&amp;gt; &lt;br /&gt;            &amp;lt;/wsrm:AcksTo&amp;gt; &lt;br /&gt;            &amp;lt;wsrm:Offer&amp;gt; &lt;br /&gt;               &amp;lt;wsrm:Identifier&amp;gt;urn:uuid:C9C5EC706B1630B02F70948019826771537414401&amp;lt;/wsrm:Identifier&amp;gt; &lt;br /&gt;            &amp;lt;/wsrm:Offer&amp;gt; &lt;br /&gt;         &amp;lt;/wsrm:CreateSequence&amp;gt; &lt;br /&gt;      &amp;lt;/soapenv:Body&amp;gt; &lt;br /&gt;   &amp;lt;/soapenv:Envelope&amp;gt; &lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Once the WS-RM enabled server receive this request he responds with a create sequence response which looks like below.&lt;br /&gt; &lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&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/"&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:8FBBE3295CC69847831305006465945&amp;lt;/wsa:MessageID&amp;gt; &lt;br /&gt;         &amp;lt;wsa:Action&amp;gt;http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequenceResponse&amp;lt;/wsa:Action&amp;gt; &lt;br /&gt;         &amp;lt;wsa:RelatesTo&amp;gt;urn:uuid:F6BE3F51CABFB86C131305006461276&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;wsrm:CreateSequenceResponse xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"&amp;gt; &lt;br /&gt;            &amp;lt;wsrm:Identifier&amp;gt;urn:uuid:8FBBE3295CC69847831305006465893&amp;lt;/wsrm:Identifier&amp;gt; &lt;br /&gt;            &amp;lt;wsrm:Accept&amp;gt; &lt;br /&gt;               &amp;lt;wsrm:AcksTo&amp;gt; &lt;br /&gt;                  &amp;lt;wsa:Address xmlns:wsa="http://www.w3.org/2005/08/addressing"&amp;gt;http://localhost:8281/services/StockQuoteProxy&amp;lt;/wsa:Address&amp;gt; &lt;br /&gt;               &amp;lt;/wsrm:AcksTo&amp;gt; &lt;br /&gt;            &amp;lt;/wsrm:Accept&amp;gt; &lt;br /&gt;         &amp;lt;/wsrm:CreateSequenceResponse&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;br /&gt;Once the sequence is established, client sends the request to the server with the pre-negotiated sequence ID. &lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&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/"&amp;gt; &lt;br /&gt;      &amp;lt;soapenv:Header&amp;gt; &lt;br /&gt;         &amp;lt;wsa:To xmlns:wsa="http://www.w3.org/2005/08/addressing"&amp;gt;http://localhost:8281/services/StockQuoteProxy&amp;lt;/wsa:To&amp;gt; &lt;br /&gt;         &amp;lt;wsa:FaultTo xmlns:wsa="http://www.w3.org/2005/08/addressing"&amp;gt; &lt;br /&gt;            &amp;lt;wsa:Address&amp;gt;http://www.w3.org/2005/08/addressing/anonymous&amp;lt;/wsa:Address&amp;gt; &lt;br /&gt;         &amp;lt;/wsa:FaultTo&amp;gt; &lt;br /&gt;         &amp;lt;wsa:MessageID xmlns:wsa="http://www.w3.org/2005/08/addressing"&amp;gt;urn:uuid:F6BE3F51CABFB86C131305006461045&amp;lt;/wsa:MessageID&amp;gt; &lt;br /&gt;         &amp;lt;wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing"&amp;gt;urn:getQuote&amp;lt;/wsa:Action&amp;gt; &lt;br /&gt;         &amp;lt;wsrm:Sequence xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm" soapenv:mustUnderstand="1"&amp;gt; &lt;br /&gt;            &amp;lt;wsrm:Identifier&amp;gt;urn:uuid:8FBBE3295CC69847831305006465893&amp;lt;/wsrm:Identifier&amp;gt; &lt;br /&gt;            &amp;lt;wsrm:MessageNumber&amp;gt;1&amp;lt;/wsrm:MessageNumber&amp;gt; &lt;br /&gt;            &amp;lt;wsrm:LastMessage /&amp;gt; &lt;br /&gt;         &amp;lt;/wsrm:Sequence&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;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;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; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Client keeps on sending above message till the server responds with a valid response message with 200 OK HTTP header. If the server is not ready with a response, it will respond with 202 Accepted HTTP header for all requests. Once the server is ready with a response it will send the response message with sequence ID as follows. &lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;HTTP/1.1 200 OK &lt;br /&gt;Content-Type: text/xml; charset=UTF-8 &lt;br /&gt;Date: Tue, 10 May 2011 05:47:48 GMT &lt;br /&gt;Transfer-Encoding: chunked &lt;br /&gt;&lt;br /&gt;85a &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&amp;gt; &lt;br /&gt;         &amp;lt;wsa:FaultTo xmlns:wsa="http://www.w3.org/2005/08/addressing"&amp;gt; &lt;br /&gt;            &amp;lt;wsa:Address&amp;gt;http://www.w3.org/2005/08/addressing/anonymous&amp;lt;/wsa:Address&amp;gt; &lt;br /&gt;         &amp;lt;/wsa:FaultTo&amp;gt; &lt;br /&gt;         &amp;lt;wsa:MessageID xmlns:wsa="http://www.w3.org/2005/08/addressing"&amp;gt;urn:uuid:CD6DD195597E970CCC7102452795842-1496332077&amp;lt;/wsa:MessageID&amp;gt; &lt;br /&gt;         &amp;lt;wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing"&amp;gt;//services.samples/SimpleStockQuoteServicePortType/getQuoteResponse&amp;lt;/wsa:Action&amp;gt; &lt;br /&gt;         &amp;lt;wsa:RelatesTo xmlns:wsa="http://www.w3.org/2005/08/addressing"&amp;gt;urn:uuid:F6BE3F51CABFB86C131305006461045&amp;lt;/wsa:RelatesTo&amp;gt; &lt;br /&gt;         &amp;lt;wsrm:Sequence xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm" soapenv:mustUnderstand="1"&amp;gt; &lt;br /&gt;            &amp;lt;wsrm:Identifier&amp;gt;urn:uuid:C9C5EC706B1630B02F70948019826771537414401&amp;lt;/wsrm:Identifier&amp;gt; &lt;br /&gt;            &amp;lt;wsrm:MessageNumber&amp;gt;1&amp;lt;/wsrm:MessageNumber&amp;gt; &lt;br /&gt;            &amp;lt;wsrm:LastMessage /&amp;gt; &lt;br /&gt;         &amp;lt;/wsrm:Sequence&amp;gt; &lt;br /&gt;         &amp;lt;wsrm:SequenceAcknowledgement xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm" soapenv:mustUnderstand="0"&amp;gt; &lt;br /&gt;            &amp;lt;wsrm:Identifier&amp;gt;urn:uuid:8FBBE3295CC69847831305006465893&amp;lt;/wsrm:Identifier&amp;gt; &lt;br /&gt;            &amp;lt;wsrm:AcknowledgementRange Lower="1" Upper="1" /&amp;gt; &lt;br /&gt;         &amp;lt;/wsrm:SequenceAcknowledgement&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;ns:getQuoteResponse xmlns:ns="http://services.samples"&amp;gt; &lt;br /&gt;            &amp;lt;ns:return xmlns:ax21="http://services.samples/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ax21:GetQuoteResponse"&amp;gt; &lt;br /&gt;               &amp;lt;ax21:change&amp;gt;-2.6700218511136207&amp;lt;/ax21:change&amp;gt; &lt;br /&gt;               &amp;lt;ax21:earnings&amp;gt;-8.794748965262057&amp;lt;/ax21:earnings&amp;gt; &lt;br /&gt;               &amp;lt;ax21:high&amp;gt;-187.17305566079403&amp;lt;/ax21:high&amp;gt; &lt;br /&gt;               &amp;lt;ax21:last&amp;gt;187.8527959982049&amp;lt;/ax21:last&amp;gt; &lt;br /&gt;               &amp;lt;ax21:lastTradeTimestamp&amp;gt;Tue May 10 11:17:47 IST 2011&amp;lt;/ax21:lastTradeTimestamp&amp;gt; &lt;br /&gt;               &amp;lt;ax21:low&amp;gt;194.26444313628625&amp;lt;/ax21:low&amp;gt; &lt;br /&gt;               &amp;lt;ax21:marketCap&amp;gt;4.0781086886418656E7&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;196.0840596773702&amp;lt;/ax21:open&amp;gt; &lt;br /&gt;               &amp;lt;ax21:peRatio&amp;gt;-17.81582827663666&amp;lt;/ax21:peRatio&amp;gt; &lt;br /&gt;               &amp;lt;ax21:percentageChange&amp;gt;1.4459782819162954&amp;lt;/ax21:percentageChange&amp;gt; &lt;br /&gt;               &amp;lt;ax21:prevClose&amp;gt;-184.65158740663455&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;18332&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;&lt;br /&gt;&lt;/pre&gt; &lt;br /&gt;&lt;br /&gt;Note the http status code. &lt;br /&gt;&lt;br /&gt;Now both client and the server are done with the actual message exchange. Then client sends a request(terminate sequence) to terminate the sequence as follows:&lt;br /&gt; &lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&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/"&amp;gt; &lt;br /&gt;      &amp;lt;soapenv:Header&amp;gt; &lt;br /&gt;         &amp;lt;wsa:To xmlns:wsa="http://www.w3.org/2005/08/addressing"&amp;gt;http://localhost:8281/services/StockQuoteProxy&amp;lt;/wsa:To&amp;gt; &lt;br /&gt;         &amp;lt;wsa:MessageID xmlns:wsa="http://www.w3.org/2005/08/addressing"&amp;gt;urn:uuid:F6BE3F51CABFB86C131305006468790&amp;lt;/wsa:MessageID&amp;gt; &lt;br /&gt;         &amp;lt;wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing"&amp;gt;http://schemas.xmlsoap.org/ws/2005/02/rm/TerminateSequence&amp;lt;/wsa:Action&amp;gt; &lt;br /&gt;         &amp;lt;wsrm:SequenceAcknowledgement xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm" soapenv:mustUnderstand="0"&amp;gt; &lt;br /&gt;            &amp;lt;wsrm:Identifier&amp;gt;urn:uuid:C9C5EC706B1630B02F70948019826771537414401&amp;lt;/wsrm:Identifier&amp;gt; &lt;br /&gt;            &amp;lt;wsrm:AcknowledgementRange Lower="1" Upper="1" /&amp;gt; &lt;br /&gt;         &amp;lt;/wsrm:SequenceAcknowledgement&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;wsrm:TerminateSequence xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"&amp;gt; &lt;br /&gt;            &amp;lt;wsrm:Identifier&amp;gt;urn:uuid:8FBBE3295CC69847831305006465893&amp;lt;/wsrm:Identifier&amp;gt; &lt;br /&gt;         &amp;lt;/wsrm:TerminateSequence&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;br /&gt;Server responds to the sequence termination message, accepting to terminate the sequence as follows.&lt;br /&gt; &lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&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/"&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:ReplyTo&amp;gt; &lt;br /&gt;            &amp;lt;wsa:Address&amp;gt;http://localhost:8281/services/StockQuoteProxy&amp;lt;/wsa:Address&amp;gt; &lt;br /&gt;         &amp;lt;/wsa:ReplyTo&amp;gt; &lt;br /&gt;         &amp;lt;wsa:MessageID&amp;gt;urn:uuid:8FBBE3295CC69847831305006472014&amp;lt;/wsa:MessageID&amp;gt; &lt;br /&gt;         &amp;lt;wsa:Action&amp;gt;http://schemas.xmlsoap.org/ws/2005/02/rm/TerminateSequence&amp;lt;/wsa:Action&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;wsrm:TerminateSequence xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm"&amp;gt; &lt;br /&gt;            &amp;lt;wsrm:Identifier&amp;gt;urn:uuid:C9C5EC706B1630B02F70948019826771537414401&amp;lt;/wsrm:Identifier&amp;gt; &lt;br /&gt;         &amp;lt;/wsrm:TerminateSequence&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;br /&gt;Note that although each of above messages are separate SOAP messages, in most cases they will be exchanged in a single socket connection as HTTP Keep-Alive header is used. As you have observed these messages go between the client and the server ( and when you monitor you should see three pair of request/response). &lt;br /&gt;&lt;br /&gt;Unlike in WS-Security case when you enable WS-RM for a web service you can't see any WS-RM specific information on the service's WSDL. When you generate clients against a WS-RM enabled service you'll have to enable the required parameters at the client code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-3066891781574140740?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/3066891781574140740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2011/05/short-tutorial-on-ws-rm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/3066891781574140740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/3066891781574140740'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2011/05/short-tutorial-on-ws-rm.html' title='Short tutorial on WS-RM'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-3074440494724459675</id><published>2011-05-03T13:40:00.005+05:30</published><updated>2011-05-03T15:07:01.160+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='JMS ExceptionListener'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='JMS'/><title type='text'>IBM MQ version 6.0 , WSO2 ESB JMS transport and JMS ExceptionListener</title><content type='html'>Recently I came across a client issue where a given patch was not doing what they want. I looked into the problem and here what went wrong and how that was resolved.&lt;br /&gt;&lt;br /&gt;WSO2 ESB has a production ready JMS transport which is used by several customers. One of them use WSO2 ESB 2.0.1 with IBM MQ version 6.0. One day morning an issue was raised that JMS transport was not re-connecting after the broker went offline and comes online.&lt;br /&gt;&lt;br /&gt;Ideally JMS transport should re-connect when the broker become available. Instead of this JMS transport logs the same exception repeatedly. The result is the storage is get filled up with unnecessary logs and the system runs out of space.&lt;br /&gt;JMS transport &lt;a href="http://rajikak.blogspot.com/2011/04/jms-transport-now-supports-re.html"&gt;was improved&lt;/a&gt; to log the exception following the same rate as re-connecting logic. The re-try logic is a simple series which double the previous value, which starts with an initial value of 10 seconds. So the time series will be;&lt;br /&gt;&lt;br /&gt;10, 20, 40, 80, 160 (s) etc..&lt;br /&gt;&lt;br /&gt;This patch which also has the re-connecting logic was tested with following JMS providers and received the given results.&lt;br /&gt;&lt;br /&gt;IBM MQ version 6.0 - Re-connection FAILED.&lt;br /&gt;IBM MQ version 7.0 - Re-connected.&lt;br /&gt;ActiveMQ 5.3.1 - Re-connected.&lt;br /&gt;&lt;br /&gt;When I look around I found that the IBM MQ version 6.0 &lt;a href="http://www-01.ibm.com/support/docview.wss?uid=swg21314744"&gt;has a bug&lt;/a&gt; in the notification mechanism of JMS broker failure. Check the bug report for more information. If you take a look at the section 4.3.8 of JMS specification, that specifies how the broker should notify any connection related problem. IBM MQ version 6.0.0 was lacking with this feature. But they have issued a patch which we can use to patch the IBM MQ JMS client jars.&lt;br /&gt;&lt;br /&gt;Just &lt;a href="http://www-01.ibm.com/support/docview.wss?uid=swg1IY81774"&gt;follow the instructions&lt;/a&gt; and install the upgrade. It's always recommended to upgrade to the newest version ( 6.0.2.5). Once the upgrade is done replace the old MQ client jars(com.ibm.mq.jar, fscontext.jar, com.ibm.mqjms.jar, providerutil.jar, connector.jar, dhbore.jar) with new ones(can be found in $MQ_INSTALL_DIR/Java/lib).&lt;br /&gt;&lt;br /&gt;Once this is done start WSO2 ESB with the following options also given by the patch.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;wso2server.bat -DuseSynapseXML -DactivateExceptionListener=true&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This should avoid the re-connecting problem of JMS transport.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-3074440494724459675?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/3074440494724459675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2011/05/ibm-mq-version-60-wso2-esb-jms.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/3074440494724459675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/3074440494724459675'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2011/05/ibm-mq-version-60-wso2-esb-jms.html' title='IBM MQ version 6.0 , WSO2 ESB JMS transport and JMS ExceptionListener'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-1394479274709655451</id><published>2011-04-20T10:25:00.005+05:30</published><updated>2011-04-20T11:33:17.225+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='JMS'/><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><title type='text'>A JMS proxy which process both SOAP and non-SOAP messages</title><content type='html'>Recently I came across a client issue where the client wants to use the same JMS proxy for accepting SOAP messages and non-SOAP messages(REST) received on a same JMS queue using the same JMS proxy.&lt;br /&gt;&lt;br /&gt;Basically a service exposed on JMS should be able to accept and process both SOAP and REST messages. Following configuration is a sample proxy configuration which is capable of doing this. That assume that the REST(POX) messages comes with the Content-Type &lt;b&gt;application/xm&lt;/b&gt;l. And SOAP messages comes with Content-Type &lt;b&gt;application/soap+xml&lt;/b&gt;. &lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;&amp;lt;proxy name="StockQuoteProxy" transports="jms"&amp;gt;&lt;br /&gt;        &amp;lt;target&amp;gt;&lt;br /&gt;            &amp;lt;inSequence&amp;gt;&lt;br /&gt;                &amp;lt;property action="set" name="OUT_ONLY" value="true"/&amp;gt;&lt;br /&gt;            &amp;lt;/inSequence&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;outSequence&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/conf/sample/resources/proxy/sample_proxy_1.wsdl"/&amp;gt;&lt;br /&gt;        &amp;lt;parameter name="transport.jms.ContentType"&amp;gt;&lt;br /&gt;            &amp;lt;rules&amp;gt;&lt;br /&gt;                &amp;lt;jmsProperty&amp;gt;contentType&amp;lt;/jmsProperty&amp;gt;&lt;br /&gt;                &amp;lt;default&amp;gt;application/xml&amp;lt;/default&amp;gt;&lt;br /&gt;                &amp;lt;jmsProperty&amp;gt;contentType&amp;lt;/jmsProperty&amp;gt;&lt;br /&gt;                &amp;lt;default&amp;gt;application/soap+xml&amp;lt;/default&amp;gt;&lt;br /&gt;            &amp;lt;/rules&amp;gt;&lt;br /&gt;        &amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/proxy&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The JMS transport try to decide the content type from the message using getStringProperty JMS API of JMS message and if fails try to stick to the default Contnet-Type given in the configuration. The name of the content type property can be given in jmsProperty because content-type not a standard in JMS world. &lt;br /&gt;&lt;br /&gt;This is a cool feature if you want to use the same proxy to accept both SOAP and REST messages over JMS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-1394479274709655451?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/1394479274709655451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2011/04/jms-proxy-which-process-both-soap-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/1394479274709655451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/1394479274709655451'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2011/04/jms-proxy-which-process-both-soap-and.html' title='A JMS proxy which process both SOAP and non-SOAP messages'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-5898451506985093643</id><published>2011-04-18T18:06:00.004+05:30</published><updated>2011-04-18T18:16:02.229+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='JMS'/><title type='text'>JMS Error - JNDI lookup of name QueueConnectionFactory returned a x.y.z while a interface javax.jms.ConnectionFactory was expected</title><content type='html'>If you happen to experience this error when working with any WSO2 product you can resolve it by removing the &lt;b&gt;geronimo-jms_1.1_spec-1.1.0.VERSION.jar&lt;/b&gt; from $CARBON_HOME/repository/components/lib. This occurs due the availability of multiple  implementation of javax.jms.* in the system classpath. You'll notice the following familiar stack trace. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed #3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding: 3px;text-align:left;width:680px;"&gt;Caused by: org.apache.axis2.transport.base.BaseTransportException: JNDI lookup of name QueueConnectionFactory returned a org.apache.qpid.client.AMQConnectionFactory while a interface javax.jms.ConnectionFactory was expected&lt;br /&gt; at org.apache.axis2.transport.base.BaseUtils.handleException(BaseUtils.java:166)&lt;br /&gt; at org.apache.axis2.transport.jms.JMSUtils.lookup(JMSUtils.java:522)&lt;br /&gt; at org.apache.axis2.transport.jms.JMSConnectionFactory.&lt;init&gt;(JMSConnectionFactory.java:92)&lt;br /&gt; at org.apache.axis2.transport.jms.JMSConnectionFactoryManager.loadConnectionFactoryDefinitions(JMSConnectionFactoryManager.java:58)&lt;br /&gt; at org.apache.axis2.transport.jms.JMSConnectionFactoryManager.&lt;init&gt;(JMSConnectionFactoryManager.java:45)&lt;br /&gt; at org.apache.axis2.transport.jms.JMSListener.doInit(JMSListener.java:58)&lt;br /&gt; at org.apache.axis2.transport.base.AbstractTransportListenerEx.init(AbstractTransportListenerEx.java:62)&lt;br /&gt; at org.wso2.carbon.core.transports.AbstractTransportService.updateGlobalTransportParameters(AbstractTransportService.java:129)&lt;br /&gt; ... 41 more&lt;br /&gt;&lt;br /&gt;&lt;/init&gt;&lt;/init&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This issue can occur if you are trying any product using with the JMS transport.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-5898451506985093643?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/5898451506985093643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2011/04/jms-error-jndi-lookup-of-name.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5898451506985093643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5898451506985093643'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2011/04/jms-error-jndi-lookup-of-name.html' title='JMS Error - JNDI lookup of name QueueConnectionFactory returned a x.y.z while a interface javax.jms.ConnectionFactory was expected'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-4398516588281889582</id><published>2011-04-05T15:02:00.005+05:30</published><updated>2011-04-05T15:40:51.172+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='JMS'/><category scheme='http://www.blogger.com/atom/ns#' term='jms failover'/><title type='text'>JMS transport now supports re-connecting automatically when the broker is online</title><content type='html'>&lt;div&gt;For some time now, the &lt;a href="http://svn.apache.org/repos/asf/axis/axis2/java/transports/trunk"&gt;JMS transpor&lt;/a&gt;t that's used by &lt;a href="http://wso2.com/products/enterprise-service-bus/"&gt;WSO2 ESB&lt;/a&gt; suffers from a major limitation. That's to log the following stack trace repetitively if the broker goes offline. And worse is that the JMS transport will not re-connect although the broker comes online. The result is the disk will fill up with lots of logs.&lt;/div&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed #3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding: 3px;text-align:left;width:680px;"&gt;2011-04-05 10:08:45,830 [-] [jms-Worker-18] ERROR ServiceTaskManager Error acquiring a JMS connection to : QueueConnectionFactory using JNDI properties : {java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory, java.naming.provider.url=&lt;a href="tcp://localhost:61616,"&gt;tcp://localhost:61616,&lt;/a&gt; interface=SimpleStockQuoteServicePortType, transport.jms.ConnectionFactoryType=queue, serviceType=proxy}&lt;div&gt;javax.jms.JMSException: Could not connect to broker URL: &lt;a href="tcp://localhost:61616"&gt;tcp://localhost:61616&lt;/a&gt;. Reason: java.net.ConnectException: Connection refused&lt;br /&gt;at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:35)&lt;br /&gt;at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:280)&lt;br /&gt;at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:224)&lt;br /&gt;at org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:172)&lt;br /&gt;at org.apache.axis2.transport.jms.JMSUtils.createConnection(JMSUtils.java:554)&lt;br /&gt;at org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.createConnection(ServiceTaskManager.java:809)&lt;br /&gt;at org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.getConnection(ServiceTaskManager.java:691)&lt;br /&gt;at org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.receiveMessage(ServiceTaskManager.java:489)&lt;br /&gt;at org.apache.axis2.transport.jms.ServiceTaskManager$MessageListenerTask.run(ServiceTaskManager.java:414)&lt;br /&gt;at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:173)&lt;br /&gt;at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)&lt;br /&gt;at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)&lt;br /&gt;at java.lang.Thread.run(Thread.java:619)&lt;br /&gt;Caused by: java.net.ConnectException: Connection refused&lt;br /&gt;at java.net.PlainSocketImpl.socketConnect(Native Method)&lt;br /&gt;at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)&lt;br /&gt;at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)&lt;br /&gt;at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)&lt;br /&gt;at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)&lt;br /&gt;at java.net.Socket.connect(Socket.java:525)&lt;br /&gt;at org.apache.activemq.transport.tcp.TcpTransport.connect(TcpTransport.java:435)&lt;br /&gt;at org.apache.activemq.transport.tcp.TcpTransport.doStart(TcpTransport.java:401)&lt;br /&gt;at org.apache.activemq.util.ServiceSupport.start(ServiceSupport.java:53)&lt;br /&gt;at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:57)&lt;br /&gt;at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:57)&lt;br /&gt;at org.apache.activemq.transport.WireFormatNegotiator.start(WireFormatNegotiator.java:72)&lt;br /&gt;at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:57)&lt;br /&gt;at org.apache.activemq.transport.TransportFilter.start(TransportFilter.java:57)&lt;br /&gt;at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:260)&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;I just submitted a &lt;a href="https://issues.apache.org/jira/browse/TRANSPORTS-35"&gt;patch&lt;/a&gt; which let the JMS polling task to re-connect if the JMS broker becomes available.&lt;div&gt;When re-connect you should see the following log.&lt;/div&gt;&lt;div&gt;&lt;b&gt;[2011-04-05 14:57:00,580] INFO - ServiceTaskManager Reconnection attempt : 2 for service :StockQuoteProxy was successful!&lt;/b&gt;&lt;br /&gt;&lt;div&gt;This is a major improvement if you plan to use the JMS transport in production. This improvement will be available with the next release of WSO2 ESB and AS.&lt;br /&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/8648017967226408418-4398516588281889582?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/4398516588281889582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2011/04/jms-transport-now-supports-re.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/4398516588281889582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/4398516588281889582'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2011/04/jms-transport-now-supports-re.html' title='JMS transport now supports re-connecting automatically when the broker is online'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-5755522984259614202</id><published>2011-04-01T16:13:00.004+05:30</published><updated>2011-04-01T23:04:57.966+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='MSMQ transport'/><category scheme='http://www.blogger.com/atom/ns#' term='MSMQ'/><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><title type='text'>GSOC project - Apache Synapse MSMQ adapter</title><content type='html'>&lt;a href="http://code.google.com/soc/"&gt;GSOC 2011&lt;/a&gt; is now on! &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I just filled a &lt;a href="https://issues.apache.org/jira/browse/SYNAPSE-748"&gt;jira&lt;/a&gt; about a possible GSOC project for Apache Synapse. The project is to develop a transport for Apache Synapse to communicate with &lt;a href="http://msdn.microsoft.com/en-us/library/ms711472%28v=vs.85%29.aspx"&gt;MSMQ&lt;/a&gt;. &lt;/div&gt;&lt;div&gt;Once the transport is in place Apache Synapse can act a MSMQ adapter.The basic requirement is to send/receive message to/from Apache Synapse to MSMQ. MSMQ's API are in C/C++ and C# so when we develop the transport we need to write the bridge library to communicate with Synapse Java APIs.&lt;/div&gt;&lt;div&gt;There is an &lt;a href="http://rajikak.blogspot.com/2010/02/experimental-msmq-transport-for-wso2.html"&gt;experimental MSMQ&lt;/a&gt; transport that I wrote sometime back which can also refer for the subject.&lt;/div&gt;&lt;div&gt;If you like to take a part in the program this summer do let know.&lt;/div&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/8648017967226408418-5755522984259614202?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/5755522984259614202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2011/04/gsoc-project-apache-synapse-msmq.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5755522984259614202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5755522984259614202'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2011/04/gsoc-project-apache-synapse-msmq.html' title='GSOC project - Apache Synapse MSMQ adapter'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-3831795019253764151</id><published>2011-03-24T15:56:00.009+05:30</published><updated>2011-03-24T18:33:52.258+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='system programming'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='reboot() call'/><title type='text'>Linux reboot() system call and LINUX_REBOOT_MAGIC2 argument</title><content type='html'>If you look at the reboot() system call in Linux it has the following signature.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;int reboot(int magic, int magic2, int cmd, void *arg);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can try the &lt;a href="http://linux.die.net/man/2/reboot"&gt;man page of reboot()&lt;/a&gt; system call in the online man page using, &lt;b&gt;man 2 reboot&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;The second argument can be one of the following magic numbers. &lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;LINUX_REBOOT_MAGIC2  - 672274793(0x28121969)&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;LINUX_REBOOT_MAGIC2A - 85072278(0x5121996)&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;LINUX_REBOOT_MAGIC2B - 369367448(0x16041998)&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;LINUX_REBOOT_MAGIC2C - 537993216(0x20112000) &lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;These magic numbers has something very interesting. If you look into the hexadecimal values you can see a set of dates.&lt;/div&gt;&lt;div&gt;Internet suggests that these are the birth dates of famous Linux kernel developer Linus Torvalds and his three daughters.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-3831795019253764151?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/3831795019253764151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2011/03/linux-reboot-system-call-and.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/3831795019253764151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/3831795019253764151'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2011/03/linux-reboot-system-call-and.html' title='Linux reboot() system call and LINUX_REBOOT_MAGIC2 argument'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-712578897924663742</id><published>2011-03-09T08:11:00.003+05:30</published><updated>2011-03-09T08:12:18.887+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='system programming'/><title type='text'>Advice to systems researchers</title><content type='html'>If you one of the programmers who is enjoying writing systems software, &lt;a href="http://www.cs.utexas.edu/users/dahlin/advice.html"&gt;this advice&lt;/a&gt; collection will find useful to you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-712578897924663742?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/712578897924663742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2011/03/advice-to-systems-researchers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/712578897924663742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/712578897924663742'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2011/03/advice-to-systems-researchers.html' title='Advice to systems researchers'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-5345106467119265512</id><published>2011-03-03T17:51:00.005+05:30</published><updated>2011-03-03T17:58:30.834+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='carbon components'/><category scheme='http://www.blogger.com/atom/ns#' term='CSG'/><title type='text'>Cloud Services Gateway ( CSG) user interfaces</title><content type='html'>I have finished the UI for new CSG component and I am putting up some of them here. &lt;br /&gt;&lt;br /&gt;1. Adding a new CSG server &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-p-j0CwrWU3w/TW-IAbwKrxI/AAAAAAAAAEY/vW55D_gJ-hE/s1600/server-list.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 136px;" src="http://1.bp.blogspot.com/-p-j0CwrWU3w/TW-IAbwKrxI/AAAAAAAAAEY/vW55D_gJ-hE/s400/server-list.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5579828004366495506" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. New CSG server information&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-lD8DlV74L70/TW-IMAEcPTI/AAAAAAAAAEg/143hdi3ENx8/s1600/add-server.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 199px;" src="http://2.bp.blogspot.com/-lD8DlV74L70/TW-IMAEcPTI/AAAAAAAAAEg/143hdi3ENx8/s400/add-server.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5579828203093769522" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Publish a service to CSG server&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-4ckjUKcjRtY/TW-IYC_ZC_I/AAAAAAAAAEo/E1VnSGXmAV8/s1600/add-server-select.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 211px;" src="http://3.bp.blogspot.com/-4ckjUKcjRtY/TW-IYC_ZC_I/AAAAAAAAAEo/E1VnSGXmAV8/s400/add-server-select.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5579828410036325362" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4. Un publish from a CSG server &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-oEVZTExcHhc/TW-Ing6rjUI/AAAAAAAAAEw/8wUhbC0r_34/s1600/unpublish.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 210px;" src="http://3.bp.blogspot.com/-oEVZTExcHhc/TW-Ing6rjUI/AAAAAAAAAEw/8wUhbC0r_34/s400/unpublish.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5579828675767668034" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-5345106467119265512?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/5345106467119265512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2011/03/cloud-services-gateway-csg-user.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5345106467119265512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5345106467119265512'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2011/03/cloud-services-gateway-csg-user.html' title='Cloud Services Gateway ( CSG) user interfaces'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-p-j0CwrWU3w/TW-IAbwKrxI/AAAAAAAAAEY/vW55D_gJ-hE/s72-c/server-list.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-1193357467873097966</id><published>2011-01-27T19:20:00.005+05:30</published><updated>2011-01-27T19:32:23.259+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='JMS'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='CSG'/><title type='text'>Cloud Services Gateway ( CSG)</title><content type='html'>Cloud Services Gateway or &lt;b&gt;&lt;a href="http://wso2.com/cloud/connectors/services-gateway/"&gt;CSG&lt;/a&gt;&lt;/b&gt; for short provides a very useful feature in a cloud deployment. This component let you to expose a private service to public in a securely manner! &lt;div&gt;I am in the process of re-writing the component according to its new architecture based on the following JMS model. &lt;/div&gt;&lt;div&gt;&lt;b&gt;Refer the diagram.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;A service (S) which is behind a firewall need to expose to public. Once a user say publish service S, CSG-agent will deploy that service in JMS transport. This will create a queue Q1 on Message broker (MB, which runs out side the firewall). And also a JMS proxy(P) will be deployed in ESB. This proxy will have a JMS endpoint for Q1. The ESB and MB will be out side the firewall. The JMS connections will be secured JMS connections. MB can live as a standalone component or within ESB ( so that they'll communicate using an in-VM link).  An external client will see the JMS proxy(P) and will communicate with that. That proxy in turns will communicate with the actual service S.&lt;/div&gt;&lt;br /&gt;If the service is two-way MEP, a reply queue also created(Q2) when use say publish S. The reply queue information will be passed to the JMS proxy P so that it'll be a two way JMS proxy( will send the message to JMS destination (Q1) will read the reply from another JMS destination(Q2)). An external client will interact with the proxy P. A dashed line show the reply path in the diagram.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;The secured JMS connections will use the same Carbon credentials so that we can mange secured JMS connections using the Carbon credentials.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hha64Sbr4OI/TUF5VeD1lTI/AAAAAAAAAEM/lED7HYH8hWY/s1600/flow.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 219px;" src="http://2.bp.blogspot.com/_hha64Sbr4OI/TUF5VeD1lTI/AAAAAAAAAEM/lED7HYH8hWY/s400/flow.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5566864024160015666" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;The benefit that a user will get through this is the user only have to add the CSG server configuration at CSG agent. Qpid broker component uses the same authentication model as Carbon so a user do not need to configure separate credentials for a user.&lt;br /&gt;&lt;br /&gt;I got the proposed JMS model to work and I am in the process of integrating &lt;a href="https://svn.wso2.org/repos/wso2/trunk/carbon/components/csg"&gt;CSG&lt;/a&gt; with the &lt;a href="https://svn.wso2.org/repos/wso2/trunk/carbon/components/qpid"&gt;Qpid&lt;/a&gt; component as the JMS provider. Note that we have a Qpid component which can start with in the Carbon itself. I am planning to finish this work soon.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-1193357467873097966?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/1193357467873097966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2011/01/cloud-services-gateway-csg.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/1193357467873097966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/1193357467873097966'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2011/01/cloud-services-gateway-csg.html' title='Cloud Services Gateway ( CSG)'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_hha64Sbr4OI/TUF5VeD1lTI/AAAAAAAAAEM/lED7HYH8hWY/s72-c/flow.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-4342567050621020682</id><published>2011-01-26T20:14:00.005+05:30</published><updated>2011-02-02T13:59:50.218+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='JMS'/><category scheme='http://www.blogger.com/atom/ns#' term='Qpid'/><category scheme='http://www.blogger.com/atom/ns#' term='ActiveMQ'/><title type='text'>Configuring JMS transport in WSO2 ESB 4.*.*/WSO2 Carbon 3.2.*</title><content type='html'>Last couple of days I was trying to get the JMS stuffs working with WSO2 ESB trunk. We are in the process of building the next version of WSO2 ESB, version 4.0.0 (based on Carbon 3.2.0). It seems due to some of the class loading changes that was done most of the JMS stuffs are broken, somehow we are in the process of fixing them. Yesterday and today I was testing with ActiveMQ and Qpid and I am briefing the steps for reference. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;ActiveMQ ( version 5.2.0)&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Configuration for JMS transport sender/listener will remain the same as previous releases. Copy the following jars into $CARBON_HOME/lib/core/WEB-INF/lib folder. &lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;activemq-core-5.2.0.jar&lt;/li&gt;&lt;li&gt;geronimo-j2ee-management_1.0_spec-1.0.jar&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;Qpid ( version 0.9)&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Configuration for JMS transport sender/listener will remain the same as previous releases. Copy the following jars from Qpid into $CARBON_HOME/lib/core/WEB-INF/lib folder. &lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;slf4j-api-1.6.1.jar&lt;/li&gt;&lt;li&gt;slf4j-log4j12-1.6.1.jar&lt;/li&gt;&lt;li&gt;qpid-client-0.9.jar&lt;/li&gt;&lt;li&gt;qpid-common-0.9.jar&lt;/li&gt;&lt;li&gt;mina-core-1.0.1.jar&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Enjoy!&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-4342567050621020682?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/4342567050621020682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2011/01/configuring-jms-transport-in-wso2-esb.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/4342567050621020682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/4342567050621020682'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2011/01/configuring-jms-transport-in-wso2-esb.html' title='Configuring JMS transport in WSO2 ESB 4.*.*/WSO2 Carbon 3.2.*'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-2148096122775053113</id><published>2010-11-15T12:57:00.001+05:30</published><updated>2010-11-15T13:02:52.969+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='strators'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><title type='text'>WSO2 Stratos 1.0.0 Released!</title><content type='html'>Read the full release note &lt;a href="http://wso2.markmail.org/search/list:org.wso2.architecture#query:list%3Aorg.wso2.architecture+page:1+mid:dnveemfiyhtt3n35+state:results"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-2148096122775053113?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/2148096122775053113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/11/wso2-stratos-100-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/2148096122775053113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/2148096122775053113'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/11/wso2-stratos-100-released.html' title='WSO2 Stratos 1.0.0 Released!'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-2541176318279887975</id><published>2010-11-12T13:13:00.006+05:30</published><updated>2010-11-12T13:31:27.209+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='VFS transport'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='sftp'/><title type='text'>WSO2 ESB and SFTP file transfer</title><content type='html'>Here is a sample configuration which you can use to transfer file from a one location to another location in the same SFTP server using ESB's VFS transport. I tested this using ESB 3.0.1.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&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"&lt;br /&gt;                      expression="fn:concat('test-', get-property('transport', 'FILE_PATH'))"&lt;br /&gt;                      scope="default"/&amp;gt;&lt;br /&gt;            &amp;lt;property name="transport.vfs.ReplyFileName"&lt;br /&gt;                      expression="fn:concat(fn:substring-after(get-property('MessageID'), 'urn:uuid:'), '.xml')"&lt;br /&gt;                      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://rajika:rajika123@10.100.1.12/home/rajika/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://rajika:rajika123@10.100.1.12/home/rajika/original&amp;lt;/parameter&amp;gt;&lt;br /&gt; &amp;lt;parameter name="transport.vfs.FileURI"&amp;gt;vfs:sftp://rajika:rajika123@10.100.1.12/home/rajika/in/test.xml&amp;lt;/parameter&amp;gt;&lt;br /&gt; &amp;lt;parameter name="transport.vfs.MoveAfterFailure"&amp;gt;vfs:sftp://rajika:rajika123@10.100.1.12/home/rajika/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;br /&gt;&lt;/pre&gt;We use the excellent &lt;a href="http://www.jcraft.com/jsch/"&gt;JSCH library&lt;/a&gt; as a part of the commons-vfs library in VFS transport. If you want to enable debugging for the underline JSCH library you'll have to implement a small class with the required logic. Following is an example&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&lt;br /&gt;public static class JSchLogger implements Logger {&lt;br /&gt;     public boolean isEnabled(int level) {&lt;br /&gt;         switch (level) {&lt;br /&gt;             case FATAL:&lt;br /&gt;                 return log.isFatalEnabled();&lt;br /&gt;             case ERROR:&lt;br /&gt;                 return log.isErrorEnabled();&lt;br /&gt;             case WARN:&lt;br /&gt;                 return log.isWarnEnabled();&lt;br /&gt;             case INFO:&lt;br /&gt;                 return log.isInfoEnabled();&lt;br /&gt;             default:&lt;br /&gt;                 return log.isDebugEnabled();&lt;br /&gt;         }&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     public void log(int level, String message) {&lt;br /&gt;         switch (level) {&lt;br /&gt;             case FATAL:&lt;br /&gt;                 log.fatal("[JSCH] " + message);&lt;br /&gt;                 break;&lt;br /&gt;             case ERROR:&lt;br /&gt;                 log.error("[JSCH] " + message);&lt;br /&gt;                 break;&lt;br /&gt;             case WARN:&lt;br /&gt;                 log.warn("[JSCH] " + message);&lt;br /&gt;                 break;&lt;br /&gt;             case INFO:&lt;br /&gt;                 log.info("[JSCH] " + message);&lt;br /&gt;                 break;&lt;br /&gt;             default:&lt;br /&gt;                 log.debug("[JSCH] " + message);&lt;br /&gt;         }&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The logger is given by:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;private static final Log log = LogFactory.getLog(SftpClientFactory.class);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And the logger should be set into the JSch.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JSch.setLogger(new JSchLogger());&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I just submitted a patch,&lt;a href="https://issues.apache.org/jira/browse/VFS-341"&gt;VFS-441&lt;/a&gt; for &lt;a href="http://commons.apache.org/vfs/"&gt;commons-vfs&lt;/a&gt; so that we can have this improvement with the next commons-vfs release.&lt;br /&gt;&lt;br /&gt;How ever in the JSCH version 0.1.31 it seems that we have to provide the relative path for the file name where as in version 0.1.41 it accepts the absolute path.&lt;br /&gt;&lt;br /&gt;While testing this you may also need to enable clear text password support for the remote sshd as describe &lt;a href="http://www.coderanch.com/t/107782/tools/Ant-SshExec-task-throwing-JschException"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There is &lt;a href="http://rajikak.blogspot.com/2010/03/public-key-authentication-for-sftp-in.html"&gt;an entry&lt;/a&gt; that I wrote earlier on the same subject.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-2541176318279887975?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/2541176318279887975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/11/wso2-esb-and-sftp-file-transfer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/2541176318279887975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/2541176318279887975'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/11/wso2-esb-and-sftp-file-transfer.html' title='WSO2 ESB and SFTP file transfer'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-4977458727483285442</id><published>2010-10-02T13:44:00.003+05:30</published><updated>2010-10-02T13:48:28.529+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><title type='text'>WSO2 ESB won the gold award in NBQSA 2010</title><content type='html'>&lt;a href="http://wso2.com/products/enterprise-service-bus/"&gt;WSO2 ESB&lt;/a&gt; (the product that I am part of) won the gold award in NBQSA 2010.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-4977458727483285442?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/4977458727483285442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/10/wso2-esb-won-gold-award-in-nbqsa-2010.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/4977458727483285442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/4977458727483285442'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/10/wso2-esb-won-gold-award-in-nbqsa-2010.html' title='WSO2 ESB won the gold award in NBQSA 2010'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-7505372307211340641</id><published>2010-09-29T13:53:00.003+05:30</published><updated>2010-09-29T14:58:02.093+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><title type='text'>Webinar on extending WSO2 ESB</title><content type='html'>WSO2 ESB provided the most of the functionalities that requires to implement the integration scenarios. There are some situations where you will find some requirements that you can't implement with the provided functionality. So in such situations you'll need to extend the functionality of ESB to suite your requirements. &lt;br /&gt;&lt;br /&gt;I'll be conducting a free webinar on &lt;a href="http://wso2.org/library/webinars/2010/09/advanced-wso2-esb-extending-esb"&gt;Extending WSO2 ESB&lt;/a&gt;. The webinar will be on the following time.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. Tuesday, 5th October 2010 9:00 AM - 10:00 AM (GMT)&lt;br /&gt;&lt;br /&gt;2. Tuesday, 5th October 2010 10:00 AM - 11:00 AM (PDT)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We'll also write code in the session.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-7505372307211340641?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/7505372307211340641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/09/webinar-on-extending-wso2-esb.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7505372307211340641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7505372307211340641'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/09/webinar-on-extending-wso2-esb.html' title='Webinar on extending WSO2 ESB'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-2338602652261889247</id><published>2010-09-27T10:00:00.004+05:30</published><updated>2010-09-27T10:06:38.205+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='article'/><category scheme='http://www.blogger.com/atom/ns#' term='Transactions'/><title type='text'>WSO2 ESB transactional use cases</title><content type='html'>I wrote an article for &lt;a href="http://wso2.org/"&gt;WSO2 Oxygen tank&lt;/a&gt; describing few &lt;a href="http://wso2.org/library/articles/2010/05/transactional-esb-esb-transaction-use-cases"&gt;transaction use cases&lt;/a&gt; of WSO2 ESB. If you plan to implement transaction related use cases using &lt;a href="http://wso2.org/projects/esb/java"&gt;WSO2 ESB&lt;/a&gt; you may find it useful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-2338602652261889247?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/2338602652261889247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/09/wso2-esb-transactional-use-cases.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/2338602652261889247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/2338602652261889247'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/09/wso2-esb-transactional-use-cases.html' title='WSO2 ESB transactional use cases'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-5223989245334395222</id><published>2010-09-15T16:09:00.005+05:30</published><updated>2010-09-15T16:16:34.236+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><title type='text'>Updating ESB configuration using a command line tool</title><content type='html'>One thing that users are asking &lt;a href="http://wso2.org/forum/thread/10598"&gt;over and over&lt;/a&gt; is how to update the ESB configuration using a command line tool. Of course you have the option to use the nice management console or directly editing the synapse configuration files resides in $ESB_HOME/repository/cons/synapse-config. But it seems some time you'll need to do this just using a command line client. Here what you need to do. &lt;br /&gt;1. Use authorization admin service to authorize (https://localhost:9443/services/AuthenticationAdmin?wsdl)&lt;br /&gt;2. Once authorized use synapse-config-admin service(https://localhost:9443/services/ConfigServiceAdmin?wsdl) to update the synapse configuration.&lt;br /&gt;&lt;br /&gt;You can easily do this by using a generated client for the WSDLs. Note that to view the each of the WSDLs you'll have to have a running ESB server. &lt;br /&gt;When I have some time I'll put up a small client which is capable of updating the synapse configuration of a remote ESB server.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-5223989245334395222?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/5223989245334395222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/09/updating-esb-configuration-using.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5223989245334395222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5223989245334395222'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/09/updating-esb-configuration-using.html' title='Updating ESB configuration using a command line tool'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-7492060031104917177</id><published>2010-09-09T10:53:00.001+05:30</published><updated>2010-09-09T10:56:43.820+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>The WSO2 Enterprise Service Bus (ESB) 3.0.1 Released!</title><content type='html'>WSO2 ESB team is please to announce the release of WSO2 ESB 3.0.1. This is basically a bug fix release. You can read the full release note &lt;a href="http://wso2.org/project/esb/java/3.0.1/docs/release-notes.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-7492060031104917177?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/7492060031104917177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/09/wso2-enterprise-service-bus-esb-301.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7492060031104917177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7492060031104917177'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/09/wso2-enterprise-service-bus-esb-301.html' title='The WSO2 Enterprise Service Bus (ESB) 3.0.1 Released!'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-7923176005150653731</id><published>2010-08-08T21:38:00.003+05:30</published><updated>2010-08-08T21:59:05.136+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='medition'/><title type='text'>The pre-mediate sequence in ESB</title><content type='html'>ESB has a very special feature. That's ESB configuration let you to define a mandatory sequence which will get executed for each message(request and response) which pass through the ESB. This will come in handy in certain situations in which you want to do some task per each request/reponse.  To achieve this all you need to do is to define a sequence called "pre-mediate" in the configuration.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;&amp;lt;sequence name="pre-mediate"&amp;gt;&lt;br /&gt;  &amp;lt;log level="full"/&amp;gt;&lt;br /&gt;&amp;lt;/sequence&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;When a message comes to ESB it'll first check for any mandatory  sequence and then continue with the normal proxy or message mediation flows.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-7923176005150653731?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/7923176005150653731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/08/pre-mediate-sequence-in-esb.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7923176005150653731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7923176005150653731'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/08/pre-mediate-sequence-in-esb.html' title='The pre-mediate sequence in ESB'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-5791416801416268971</id><published>2010-07-18T10:47:00.003+05:30</published><updated>2010-07-18T10:54:25.058+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB QandA'/><category scheme='http://www.blogger.com/atom/ns#' term='Basic Authetication'/><title type='text'>WSO2 ESB Q&amp;A - #5</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Question: &lt;/span&gt;How to configure WSO2 ESB to talk to an endpoint which requires Basic HTTP authentication ?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Applies To: &lt;/span&gt;WSO2 ESB 3.x.x, WSO2 ESB 2.x.x&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Answer:&lt;/span&gt; Just set the following property in your in sequence with the required credentials.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;property name="Authorization" expression="fn:concat('Basic ', base64Encode('userName:myPassword'))" scope="transport"/&amp;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/8648017967226408418-5791416801416268971?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/5791416801416268971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/07/wso2-esb-q-5.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5791416801416268971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5791416801416268971'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/07/wso2-esb-q-5.html' title='WSO2 ESB Q&amp;A - #5'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-5033619804896042391</id><published>2010-07-15T23:51:00.004+05:30</published><updated>2010-07-15T23:58:51.904+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='xinted'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Starting daytime service on fedora 11</title><content type='html'>I was writing some unix network code in C and one of the clients want to access the daytime server which runs on the port 13. By default this is not enabled in fedora11. So first you need to download and install &lt;a href="http://en.wikipedia.org/wiki/Xinetd"&gt;xinetd&lt;/a&gt; ( is the UNIX dameon which manages your internet services) and add the following daytime server rules to &lt;span style="font-weight:bold;"&gt;/etc/xinetd.conf &lt;/span&gt;, xinetd configuration file.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;service daytime&lt;br /&gt;{&lt;br /&gt;  disable        = no&lt;br /&gt;  type           = INTERNAL&lt;br /&gt;  id             = daytime-stream&lt;br /&gt;  socket_type    = stream&lt;br /&gt;  protocol       = tcp&lt;br /&gt;  user           = root&lt;br /&gt;  wait           = no&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt; &lt;br /&gt;&lt;br /&gt;Then restart the xinted service using &lt;span style="font-weight:bold;"&gt;/etc/xinted restart&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-5033619804896042391?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/5033619804896042391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/07/starting-daytime-service-on-fedora-11.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5033619804896042391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5033619804896042391'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/07/starting-daytime-service-on-fedora-11.html' title='Starting daytime service on fedora 11'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-7038214654313248857</id><published>2010-07-07T22:44:00.002+05:30</published><updated>2010-07-07T22:46:13.774+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='mediator'/><title type='text'>Clone+Aggregate sample</title><content type='html'>It seems that WSO2 ESB sample index doesn't have a sample on Clone+Aggregate mediator pair. So I just put up a sample below. You'll need to deploy two instance of SimpleStockQuoteService to run the sample.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;definitions xmlns:syn="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt;    &amp;lt;proxy name="StockQuoteProxy" 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;clone&amp;gt;&lt;br /&gt;                    &amp;lt;target sequence="request1"/&amp;gt;&lt;br /&gt;                    &amp;lt;target sequence="request2"/&amp;gt;&lt;br /&gt;                &amp;lt;/clone&amp;gt;&lt;br /&gt;            &amp;lt;/inSequence&amp;gt;&lt;br /&gt;            &amp;lt;outSequence&amp;gt;&lt;br /&gt;                &amp;lt;aggregate&amp;gt;&lt;br /&gt;                    &amp;lt;completeCondition&amp;gt;&lt;br /&gt;                        &amp;lt;messageCount min="-1" max="-1"/&amp;gt;&lt;br /&gt;                    &amp;lt;/completeCondition&amp;gt;&lt;br /&gt;                    &amp;lt;onComplete xmlns:m0="http://services.samples" expression="//m0:getQuoteResponse"&amp;gt;&lt;br /&gt;                        &amp;lt;send/&amp;gt;&lt;br /&gt;                    &amp;lt;/onComplete&amp;gt;&lt;br /&gt;                &amp;lt;/aggregate&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;sequence name="request1"&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;/sequence&amp;gt;&lt;br /&gt;    &amp;lt;sequence name="request2"&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:9003/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;/sequence&amp;gt;&lt;br /&gt;&amp;lt;/definitions&amp;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/8648017967226408418-7038214654313248857?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/7038214654313248857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/07/cloneaggregate-sample.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7038214654313248857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7038214654313248857'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/07/cloneaggregate-sample.html' title='Clone+Aggregate sample'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-2315017625919484795</id><published>2010-06-26T19:33:00.001+05:30</published><updated>2010-06-26T19:37:00.199+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='system programming'/><category scheme='http://www.blogger.com/atom/ns#' term='c'/><title type='text'>Process chains and fans</title><content type='html'>&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;&lt;br /&gt;int main(int argc, char *argv[]){&lt;br /&gt; int i, n;&lt;br /&gt; pid_t childpid = 0;&lt;br /&gt;&lt;br /&gt; if(argc != 2){&lt;br /&gt;  fprintf(stderr, "Usage: %s processes\n", argv[0]);&lt;br /&gt;  return 1;&lt;br /&gt; }&lt;br /&gt; n = atoi(argv[1]);&lt;br /&gt; for(i = 0; i &lt; n; i++){&lt;br /&gt;  if(childpid = fork()){&lt;br /&gt;   break;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;&lt;br /&gt;int main(int argc, char *argv[]){&lt;br /&gt; pid_t childpid = 0;&lt;br /&gt; int i, n;&lt;br /&gt;&lt;br /&gt; if(argc != 2){&lt;br /&gt;  fprintf(stderr, "Usage: %s process\n", argv[1]);&lt;br /&gt;  return 1;&lt;br /&gt; }&lt;br /&gt; n = atoi(argv[1]);&lt;br /&gt; for(i = 0; i &lt; n; i++){&lt;br /&gt;  if((childpid = fork()) &lt;= 0){&lt;br /&gt;   break;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; return 0;&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/8648017967226408418-2315017625919484795?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/2315017625919484795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/06/process-chains-and-fans.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/2315017625919484795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/2315017625919484795'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/06/process-chains-and-fans.html' title='Process chains and fans'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-2127410557049938270</id><published>2010-06-22T10:01:00.003+05:30</published><updated>2010-06-22T10:14:04.769+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='JMX'/><title type='text'>Carbon now supports monitoring behind a firewall</title><content type='html'>The carbon which is the underline frame work for WSO2 ESB now can be monitored using a remote JMX client which is behind a firewall.  To facilitate this purpose I have introduced a new property for carbon.xml which you can specify as the remote port. The new configuration looks like below.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;Ports&amp;gt;&lt;br /&gt;       &amp;lt;!-- The JMX Ports --&amp;gt;&lt;br /&gt;       &amp;lt;JMX&amp;gt;&lt;br /&gt;           &amp;lt;!--The port RMI registry is exposed--&amp;gt;&lt;br /&gt;           &amp;lt;!--&amp;lt;RMIRegistryPort&amp;gt;9999&amp;lt;/RMIRegistryPort&amp;gt;--&amp;gt;&lt;br /&gt;           &amp;lt;!--The port RMI server should be exposed--&amp;gt;&lt;br /&gt;           &amp;lt;!--&amp;lt;RMIServerPort&amp;gt;11111&amp;lt;/RMIServerPort&amp;gt;--&amp;gt;&lt;br /&gt;       &amp;lt;/JMX&amp;gt;&lt;br /&gt;&amp;lt;/Ports&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You can also pass this ports at server start up time using the two system properties "com.wso2.rmiserver.port" and "com.sun.management.jmxremote.port" for RMIServer port and the RMIRegistry port respectively.&lt;br /&gt;&lt;br /&gt;Following code fragment is from &lt;a href="http://./src/main/java/org/wso2/carbon/core/init/CarbonServerManager.java"&gt;CarbonServerManager.java&lt;/a&gt; which shows how the JMX url is constructed according to provided port.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;// Create an RMI connector and start it&lt;br /&gt;if (rmiServerPortString != null) {&lt;br /&gt;      int rmiServerPort = Integer.parseInt(rmiServerPortString);&lt;br /&gt;      jmxURL = "service:jmx:rmi://" + NetworkUtils.getLocalHostname() + ":" +&lt;br /&gt;                rmiServerPort + "/jndi/rmi://" + NetworkUtils.getLocalHostname() + ":" +&lt;br /&gt;                            rmiRegistryPort + "/jmxrmi";&lt;br /&gt;} else {&lt;br /&gt;      jmxURL = "service:jmx:rmi:///jndi/rmi://" +&lt;br /&gt;                NetworkUtils.getLocalHostname() + ":" + rmiRegistryPort + "/jmxrmi";&lt;br /&gt;}&lt;br /&gt;JMXServiceURL url = new JMXServiceURL(jmxURL);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;With this improvment you'll be able to monitor any carbon based product using a JMX client which is behind a firewall.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-2127410557049938270?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/2127410557049938270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/06/carbon-now-supports-monitoring-behind.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/2127410557049938270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/2127410557049938270'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/06/carbon-now-supports-monitoring-behind.html' title='Carbon now supports monitoring behind a firewall'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-368218376178589262</id><published>2010-06-21T16:54:00.003+05:30</published><updated>2010-06-21T17:12:47.883+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='JMS'/><category scheme='http://www.blogger.com/atom/ns#' term='JMs transaction'/><title type='text'>More improvements to JMS transport</title><content type='html'>I submitted two patches which adds some improvements to the JMS transport code.&lt;br /&gt;&lt;br /&gt;1. The local JMS transaction improvement.&lt;br /&gt;When using local JMS transactions (with the JMS transport) with Axis2 there was no way to signal the transport to rollback the transaction (session.rollback()) if there is any error in back end. This &lt;a href="https://issues.apache.org/jira/browse/AXIS2-4735"&gt;patch&lt;/a&gt; fix the problem by setting the property&lt;br /&gt;"SET_ROLLBACK_ONLY" upon receiving an error at the message receiver. The transport already has the necessary code to handle the transaction( either to commit or rollback).&lt;br /&gt;&lt;br /&gt;2. Throttling capability for JMS polling task.&lt;br /&gt;In the current implementation of JMS polling it'll immediately re-try polling the queue. In some instance we need to control over this behaviour ( for example for throttling purposes). This &lt;a href="https://issues.apache.org/jira/browse/WSCOMMONS-548"&gt;patch&lt;/a&gt; fix that problem by introducing the following parameter for connection factory. Using this property you can specify the amount of time(in millisecond) that you want to suspend the current polling task. Zero or negative value assume that polling task does not block.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;&amp;lt;parameter name="transport.jms.TaskSuspendDuration" locked="false"&gt;suspending-time-in-millisecond&amp;lt;/parameter&amp;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/8648017967226408418-368218376178589262?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/368218376178589262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/06/more-improvements-to-jms-transport.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/368218376178589262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/368218376178589262'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/06/more-improvements-to-jms-transport.html' title='More improvements to JMS transport'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-6063261755242100265</id><published>2010-06-19T11:45:00.002+05:30</published><updated>2010-06-19T11:46:24.209+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='system programming'/><category scheme='http://www.blogger.com/atom/ns#' term='c'/><category scheme='http://www.blogger.com/atom/ns#' term='bit wise operators'/><title type='text'>Bit Twiddling Hacks</title><content type='html'>Read it &lt;a href="http://graphics.stanford.edu/%7Eseander/bithacks.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-6063261755242100265?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/6063261755242100265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/06/httpgraphicsstanfordeduseanderbithacksh.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/6063261755242100265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/6063261755242100265'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/06/httpgraphicsstanfordeduseanderbithacksh.html' title='Bit Twiddling Hacks'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-8875054528085964370</id><published>2010-06-08T20:18:00.000+05:30</published><updated>2010-06-08T20:19:32.724+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SIGPLAN award'/><category scheme='http://www.blogger.com/atom/ns#' term='LLVM'/><title type='text'>LLVM receives first ever SIGPLAN Software Systems Award</title><content type='html'>Read the full story &lt;a href="http://blog.llvm.org/2010/06/llvm-receives-first-ever-sigplan.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-8875054528085964370?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/8875054528085964370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/06/llvm-receives-first-ever-sigplan.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/8875054528085964370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/8875054528085964370'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/06/llvm-receives-first-ever-sigplan.html' title='LLVM receives first ever SIGPLAN Software Systems Award'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-351247564796857966</id><published>2010-05-22T11:51:00.004+05:30</published><updated>2010-05-22T12:03:37.562+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='AMQP'/><category scheme='http://www.blogger.com/atom/ns#' term='Qpid'/><category scheme='http://www.blogger.com/atom/ns#' term='swig'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>The perl bindings for Apache Qpid C++ clients</title><content type='html'>I am in the process of implementing the perl clients for &lt;a href="http://qpid.apache.org/"&gt;Apache Qpid&lt;/a&gt; which has the &lt;a href="https://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/include/qpid/messaging/"&gt;same API&lt;/a&gt; as the C++ clients. The perl binding will be done using the &lt;a href="http://www.swig.org"&gt;swig&lt;/a&gt; framework. Basically we'll have a set of interface definition files for the &lt;a href="https://svn.apache.org/repos/asf/qpid/trunk/qpid/cpp/include/qpid/messaging/"&gt;C++ clients API&lt;/a&gt; which can use to generate perl clients. Of course we can use the same interface files to generate the other bindings such as Python, TCL, C# etc... Following digram describes the process of building a reusable perl module for perl clients using the swig framework.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hha64Sbr4OI/S_d5stYGH_I/AAAAAAAAAD4/cfwSEEZYQDc/s1600/perl-binidings.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 395px;" src="http://2.bp.blogspot.com/_hha64Sbr4OI/S_d5stYGH_I/AAAAAAAAAD4/cfwSEEZYQDc/s400/perl-binidings.png" alt="" id="BLOGGER_PHOTO_ID_5473977681093992434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'll keep the progress post here. I am going to little bit busy in the coming two months as I have to provide on site development support for one of our clients in Germany. I normally find time to work on Apache Qpid on week ends, which this time I have some plans to travel around Germany. Any way stay tuned.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-351247564796857966?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/351247564796857966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/05/perl-bindings-for-apache-qpid-c-clients.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/351247564796857966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/351247564796857966'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/05/perl-bindings-for-apache-qpid-c-clients.html' title='The perl bindings for Apache Qpid C++ clients'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_hha64Sbr4OI/S_d5stYGH_I/AAAAAAAAAD4/cfwSEEZYQDc/s72-c/perl-binidings.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-8264440717481399619</id><published>2010-05-16T12:33:00.003+05:30</published><updated>2010-05-22T10:34:17.249+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='messeginig'/><category scheme='http://www.blogger.com/atom/ns#' term='JMS'/><category scheme='http://www.blogger.com/atom/ns#' term='carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='MOM'/><title type='text'>The broker component</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Update&lt;/span&gt;: &lt;a href="http://danushka-menikkumbura.blogspot.com/"&gt;Danushka&lt;/a&gt; will be working on this component, so you'll need to hang around his blog to find out more information.&lt;br /&gt;&lt;br /&gt;I am going to start to develop a &lt;span style="font-weight: bold;"&gt;broker component&lt;/span&gt; for &lt;a href="http://wso2.org/projects/carbon"&gt;Carbon&lt;/a&gt;. The primary aim is to provide a persistence and broker functionality across Carbon. Once the task is completed users of Carbon should have an embedded broker such as Apache &lt;a href="http://activemq.apache.org/"&gt;ActiveMQ&lt;/a&gt; which they can consume across the Carbon. In addition to the above main objective there are couple of other thing that can be found interesting.&lt;br /&gt;&lt;br /&gt;1. Allow different broker implementations (for ex: Apache &lt;a href="http://activemq.apache.org/"&gt;ActiveMQ&lt;/a&gt;, &lt;a href="http://qpid.apache.org/"&gt;Qpid/Java&lt;/a&gt;) to be plugged without much effort.&lt;br /&gt;2. Have an embedded broker which runs in the same JVM process(which use an in-VM link) which will increase the performance.&lt;br /&gt;3. Easy to use interface for managing and monitoring brokers.&lt;br /&gt;&lt;br /&gt;I have started a &lt;a href="http://wso2.org/mailarchive/architecture/2010-May/002293.html"&gt;discussion&lt;/a&gt; how I'd like to see this at WSO2's &lt;a href="http://www.blogger.com/architecture-request@wso2.org"&gt;architecture mailing&lt;/a&gt; list.  Basically anybody who is interested in have their own broker implementations plugged into Carbon will have to implement the following interface. This define a common set of operations which use to manage ( for ex: create, destroy) and monitor( for ex: list, query) the broker.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;/**&lt;br /&gt;* The operation associated with the broker component. Interested parties who wish you plug&lt;br /&gt;* their own broker impl. requires to implement this interface.&lt;br /&gt;*/&lt;br /&gt;public interface Broker {&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Initilizes the environment where a broker can starts/creates.&lt;br /&gt;  *&lt;br /&gt;  * @param prop The configuration properties.&lt;br /&gt;  */&lt;br /&gt; public void init(Properties prop);&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Create/Start a new broker instance. The broker will start with a default broker&lt;br /&gt;  * configurations which user can change according to his/her requirements. The broker&lt;br /&gt;  * instance can be created/started in two ways.&lt;br /&gt;  * 1. Using a in-VM link which will result an embedded broker which runs with the same&lt;br /&gt;  * JVM process as the application.&lt;br /&gt;  * 2. A remote broker.&lt;br /&gt;  *&lt;br /&gt;  * @param configFile The broker configuration file.&lt;br /&gt;  */&lt;br /&gt; public void create(File configFile);&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Destroys/Stops a broker instance.&lt;br /&gt;  */&lt;br /&gt; public void destroy();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Lists all available brokers in the specified JMX context.&lt;br /&gt;  *&lt;br /&gt;  * @param jmxContext The jmx context.&lt;br /&gt;  */&lt;br /&gt; public void list(Context jmxContext);&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Returns selected messages in a specified destination&lt;br /&gt;  *&lt;br /&gt;  * @param destination the destination&lt;br /&gt;  * @return Set of messsages.&lt;br /&gt;  */&lt;br /&gt; public Message[] browse(Destination destination);&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Returns useful broker statistics&lt;br /&gt;  *&lt;br /&gt;  * @param brokerName broker name&lt;br /&gt;  * @return Stats. object&lt;br /&gt;  */&lt;br /&gt; public Object bstat(String brokerName);&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Deletes selected destination's messages that matches pattern.&lt;br /&gt;  *&lt;br /&gt;  * @param destination Destination.&lt;br /&gt;  * @param pattern     Match this pattern.&lt;br /&gt;  */&lt;br /&gt; public void purge(Destination destination, Pattern pattern);&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * Returns selected broker component's attributes and statistics&lt;br /&gt;  *&lt;br /&gt;  * @param component Destination.&lt;br /&gt;  * @return The stats. and attributes.&lt;br /&gt;  */&lt;br /&gt; public Object query(Destination component);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I'll post the progress here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-8264440717481399619?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/8264440717481399619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/05/broker-component.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/8264440717481399619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/8264440717481399619'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/05/broker-component.html' title='The broker component'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-8224285996921435413</id><published>2010-05-13T12:04:00.003+05:30</published><updated>2010-05-13T12:32:32.719+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='JMS'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Logic'/><title type='text'>Intergrating WSO2 ESB with WebLogic JMS provider</title><content type='html'>This guide provide the steps and configurations requires to use WSO2 ESB with WebLogic JMS provider.&lt;br /&gt;Recently released WSO2 &lt;a href="http://wso2.org/projects/esb/java"&gt;ESB&lt;/a&gt; 3.0.0 and &lt;a href="www.oracle.com/appserver/weblogic/weblogic-suite.html"&gt;WebLogic&lt;/a&gt; 10.3 server were used.&lt;br /&gt;&lt;br /&gt;You'll need to copy the Weblogic JMS client jars - wlclient.jar and wljmsclient.jar( these jars can be found in $WL_HOME/wlserver_10.3/server/lib) into $ESB_HOME/repository/components/extensions.&lt;br /&gt;&lt;br /&gt;You'll need to have the following JMS transport receiver and the sender configurations in axis2.xml.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener"&amp;gt;&lt;br /&gt; &amp;lt;parameter name="default" locked="false"&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="java.naming.factory.initial"&amp;gt;weblogic.jndi.WLInitialContextFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="java.naming.provider.url"&amp;gt;t3://localhost:7001&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="transport.jms.ConnectionFactoryJNDIName"&amp;gt;weblogic.examples.jms.QueueConnectionFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;  &amp;lt;parameter name="transport.jms.ConnectionFactoryType" locked="false"&amp;gt;queue&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;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender"/gt&amp;amp;;    &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JMS to HTTP protocol switching&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. This is a modified version of the sample #250. The configuration is shown below.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;~  Copyright (c) 2005-2008, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.&lt;br /&gt;~&lt;br /&gt;~  WSO2 Inc. licenses this file to you under the Apache License,&lt;br /&gt;~  Version 2.0 (the "License"); you may not use this file except&lt;br /&gt;~  in compliance with the License.&lt;br /&gt;~  You may obtain a copy of the License at&lt;br /&gt;~&lt;br /&gt;~    http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;~&lt;br /&gt;~  Unless required by applicable law or agreed to in writing,&lt;br /&gt;~  software distributed under the License is distributed on an&lt;br /&gt;~  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY&lt;br /&gt;~  KIND, either express or implied.  See the License for the&lt;br /&gt;~  specific language governing permissions and limitations&lt;br /&gt;~  under the License.&lt;br /&gt;~&lt;br /&gt;--&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Introduction to switching transports - JMS to http/s --&amp;gt;&lt;br /&gt;&amp;lt;definitions xmlns="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;proxy name="weblogic.examples.jms.exampleQueue" transports="jms"&amp;gt;&lt;br /&gt;     &amp;lt;target&amp;gt;&lt;br /&gt;         &amp;lt;inSequence&amp;gt;&lt;br /&gt;             &amp;lt;property action="set" name="OUT_ONLY" value="true"/&amp;gt;&lt;br /&gt;         &amp;lt;/inSequence&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;outSequence&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;parameter name="transport.jms.ContentType"&amp;gt;&lt;br /&gt;         &amp;lt;rules&amp;gt;&lt;br /&gt;             &amp;lt;jmsProperty&amp;gt;contentType&amp;lt;/jmsProperty&amp;gt;&lt;br /&gt;             &amp;lt;default&amp;gt;application/xml&amp;lt;/default&amp;gt;&lt;br /&gt;         &amp;lt;/rules&amp;gt;&lt;br /&gt;     &amp;lt;/parameter&amp;gt;&lt;br /&gt; &amp;lt;/proxy&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/definitions&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;2. You'll need to define a queue with the name "weblogic.examples.jms.exampleQueue" using the Web logic management console.&lt;br /&gt;&lt;br /&gt;3. You can use the sample client QueueSend( lies in $WL_HOME/wlserver_10.3/samples/server/examples/src/examples/jms/queue) with the following payload to test the scenario.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;m:placeOrder xmlns:m="http://services.samples"&amp;gt;&amp;lt;m:order&amp;gt;&amp;lt;m:price&amp;gt;100.00&amp;lt;/m:price&amp;gt;&amp;lt;m:quantity&amp;gt;12&amp;lt;/m:quantity&amp;gt;&amp;lt;m:symbol&amp;gt;Cargills&amp;lt;/m:symbol&amp;gt;&amp;lt;/m:order&amp;gt;&amp;lt;/m:placeOrder&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;HTTP to JMS protocol switching&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. This is a modified version of the sample #251. The configuration is given below.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt; ~  Copyright (c) 2005-2008, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.&lt;br /&gt; ~&lt;br /&gt; ~  WSO2 Inc. licenses this file to you under the Apache License,&lt;br /&gt; ~  Version 2.0 (the "License"); you may not use this file except&lt;br /&gt; ~  in compliance with the License.&lt;br /&gt; ~  You may obtain a copy of the License at&lt;br /&gt; ~&lt;br /&gt; ~    http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt; ~&lt;br /&gt; ~  Unless required by applicable law or agreed to in writing,&lt;br /&gt; ~  software distributed under the License is distributed on an&lt;br /&gt; ~  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY&lt;br /&gt; ~  KIND, either express or implied.  See the License for the&lt;br /&gt; ~  specific language governing permissions and limitations&lt;br /&gt; ~  under the License.&lt;br /&gt; ~&lt;br /&gt; --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Switching from http/s to JMS --&amp;gt;&lt;br /&gt;&amp;lt;definitions xmlns="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;proxy name="StockQuoteProxy" transports="http"&amp;gt;&lt;br /&gt;       &amp;lt;target&amp;gt;&lt;br /&gt;           &amp;lt;endpoint&amp;gt;&lt;br /&gt;      &amp;lt;address uri="jms:/weblogic.examples.jms.exampleQueue?transport.jms.ConnectionFactoryJNDIName=weblogic.examples.jms.QueueConnectionFactory&amp;amp;java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory&amp;amp;java.naming.provider.url=t3://localhost:7001&amp;amp;transport.jms.DestinationType=queue"/&amp;gt;&lt;br /&gt;           &amp;lt;/endpoint&amp;gt;&lt;br /&gt;           &amp;lt;inSequence&amp;gt;&lt;br /&gt;               &amp;lt;property action="set" name="OUT_ONLY" value="true"/&amp;gt;&lt;br /&gt;               &amp;lt;property action="set" name="OUT_ONLY" value="true"/&amp;gt;&lt;br /&gt;               &amp;lt;property action="remove" name="Content-Length" scope="transport"/&amp;gt;&lt;br /&gt;               &amp;lt;property action="remove" name="Accept-Encoding" scope="transport"/&amp;gt;&lt;br /&gt;               &amp;lt;property action="remove" name="User-Agent" scope="transport"/&amp;gt;&lt;br /&gt;               &amp;lt;property action="remove" name="Content-Type" scope="transport"/&amp;gt;&lt;br /&gt;               &amp;lt;property action="remove" name="Transfer-Encoding" scope="transport"/&amp;gt;&lt;br /&gt;           &amp;lt;/inSequence&amp;gt;&lt;br /&gt;           &amp;lt;outSequence&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;br /&gt;2. You'll need to define a queue as in sample1. Just send a http message using the client in sample #251 and see this in action.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-8224285996921435413?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/8224285996921435413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/05/intergrating-wso2-esb-with-weblogic-jms.html#comment-form' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/8224285996921435413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/8224285996921435413'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/05/intergrating-wso2-esb-with-weblogic-jms.html' title='Intergrating WSO2 ESB with WebLogic JMS provider'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-286932270418539193</id><published>2010-05-08T08:51:00.003+05:30</published><updated>2010-05-08T08:56:46.078+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPath'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB QandA'/><title type='text'>WSO2 ESB Q&amp;A - #4</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Question: &lt;/span&gt;How can I share some properties between in path and out path of the message flow in WSO2 ESB?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Applies To:&lt;/span&gt; WSO2 ESB 3.x.x, WSO2 ESB 2.x.x&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Answer:&lt;/span&gt; You can share a property using the message context between in path and out path in the message flow. For instance you can set a property to axis2 message context using property mediator in, in path and you can read that property using get-property XPath function in out sequence.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-286932270418539193?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/286932270418539193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/05/wso2-esb-q-4.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/286932270418539193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/286932270418539193'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/05/wso2-esb-q-4.html' title='WSO2 ESB Q&amp;A - #4'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-5676736358817897642</id><published>2010-05-05T15:16:00.002+05:30</published><updated>2010-05-05T15:38:02.660+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='VFS transport'/><title type='text'>Synapse now supports using a temporary file in VFS transport</title><content type='html'>I just submitted a &lt;a href="https://issues.apache.org/jira/browse/SYNAPSE-502"&gt;patch&lt;/a&gt; for Apache synapse which makes it possible to use a temporary file when using VFS transport sender. This work like this. If you specify to use a temp file when uploading content to remote server, VFS transport sender will use a temporary file to upload the content and once uploading is completed it'll move the temp file to original file. This feature is very important if you plan to use VFS transport in a production environment. If you don't specify this there is a problem since one at the other end can start to process the file before the file has fully transferred. &lt;br /&gt;A user can specify the optional parameter &lt;span style="font-weight: bold;"&gt;transport.vfs.UseTempFile&lt;/span&gt; if he/she wants to use a temp file when uploading.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;&amp;lt;property name="transport.vfs.UseTempFile" value="true" scope="transport"/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;A full configuration will be like below.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;&amp;lt;!-- Using the  file system as transport medium using VFS transport listener and sender --&amp;gt;&lt;br /&gt;&amp;lt;definitions xmlns="http://synapse.apache.org/ns/2010/04/configuration"&amp;gt;&lt;br /&gt;    &amp;lt;proxy name="StockQuoteProxy" transports="vfs"&amp;gt;&lt;br /&gt;        &amp;lt;parameter name="transport.vfs.FileURI"&amp;gt;file:///home/rajika/work/vfs/in&amp;lt;/parameter&amp;gt; &amp;lt;!--CHANGE--&amp;gt;&lt;br /&gt;        &amp;lt;parameter name="transport.vfs.ContentType"&amp;gt;text/xml&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.PollInterval"&amp;gt;15&amp;lt;/parameter&amp;gt;&lt;br /&gt;        &amp;lt;parameter name="transport.vfs.MoveAfterProcess"&amp;gt;file:///home/rajika/work/vfs/original&amp;lt;/parameter&amp;gt; &amp;lt;!--CHANGE--&amp;gt;&lt;br /&gt;        &amp;lt;parameter name="transport.vfs.MoveAfterFailure"&amp;gt;file:///home/rajika/work/vfs/original&amp;lt;/parameter&amp;gt; &amp;lt;!--CHANGE--&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.vfs.ActionAfterFailure"&amp;gt;MOVE&amp;lt;/parameter&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;target&amp;gt;&lt;br /&gt;            &amp;lt;endpoint&amp;gt;&lt;br /&gt;                &amp;lt;address format="soap12" 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;property name="transport.vfs.ReplyFileName"&lt;br /&gt;                          expression="fn:concat(fn:substring-after(get-property('MessageID'), 'urn:uuid:'), '.xml')" scope="transport"/&amp;gt;&lt;br /&gt;                &amp;lt;property name="transport.vfs.UseTempFile" value="true" scope="transport"/&amp;gt;&lt;br /&gt;                &amp;lt;property action="set" name="OUT_ONLY" value="true"/&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="vfs:file:///home/rajika/work/vfs/out/"/&amp;gt; &amp;lt;!--CHANGE--&amp;gt;&lt;br /&gt;                    &amp;lt;/endpoint&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/conf/sample/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;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;With this patch in place VFS transport should be more suitable for production use.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-5676736358817897642?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/5676736358817897642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/05/synapse-now-supports-using-temporary.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5676736358817897642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5676736358817897642'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/05/synapse-now-supports-using-temporary.html' title='Synapse now supports using a temporary file in VFS transport'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-128392267644828619</id><published>2010-05-03T10:10:00.001+05:30</published><updated>2010-05-03T10:11:31.595+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='Iridium'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>WSO2 ESB 3.0.0 Released!</title><content type='html'>&lt;div&gt; &lt;h2&gt;The WSO2 Enterprise Service Bus (ESB) 3.0.0 Released!&lt;/h2&gt; &lt;p&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;p&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;p&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;p&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;h3&gt;How to Run &lt;/h3&gt; &lt;ol 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;h3&gt;New Features of WSO2 ESB 3.0.0&lt;/h3&gt; &lt;ul&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;h3&gt;Key Features of WSO2 ESB&lt;/h3&gt; &lt;ul&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;h3&gt;Bugs Fixed in This Release&lt;/h3&gt; &lt;p&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;ul&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;h3&gt;Known Issues&lt;/h3&gt; &lt;ul&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;p&gt; All the open issues pertaining to WSO2 ESB 3.0 are reported at following locations: &lt;/p&gt; &lt;ul&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;h3&gt;How You Can Contribute&lt;/h3&gt; &lt;h4&gt; Mailing Lists &lt;/h4&gt; &lt;p&gt; Join our mailing list and correspond with the developers directly. &lt;/p&gt; &lt;ul&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;h4&gt; Reporting Issues &lt;/h4&gt; &lt;p&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;p&gt; You can also watch how they are resolved, and comment on the progress.. &lt;/p&gt; &lt;h4&gt; Discussion Forums &lt;/h4&gt; &lt;p&gt; Alternatively, questions could be raised using the forums available. &lt;/p&gt; &lt;p&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;h2&gt;Support&lt;/h2&gt; &lt;p&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&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;p&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;p&gt;&lt;i&gt;-- The WSO2 ESB Team&lt;/i&gt;&lt;i&gt; --&lt;/i&gt;&lt;/p&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-128392267644828619?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/128392267644828619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/05/wso2-esb-300-released.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/128392267644828619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/128392267644828619'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/05/wso2-esb-300-released.html' title='WSO2 ESB 3.0.0 Released!'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-3618293665361109031</id><published>2010-04-29T15:20:00.003+05:30</published><updated>2010-04-29T15:54:54.613+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><title type='text'>Proxy service fault handling improvements</title><content type='html'>&lt;a href="http://synapse.apache.org/"&gt;Synapse&lt;/a&gt; has an issue where it ignores the registered fault handler if an exception occurs in out sequence of a proxy configuration. I just submitted a &lt;a href="https://issues.apache.org/jira/browse/SYNAPSE-630"&gt;patch&lt;/a&gt; to fix the problem.&lt;br /&gt;Here are also some notes on synapse fault handling mechanism. Synapse( so WSO2 ESB) consider following types of errors as exceptions and handles them.&lt;br /&gt;&lt;br /&gt;1. Transport errors (connection timeout, connection refused etc..)&lt;br /&gt;2. Axis2 Faults.&lt;br /&gt;3. Security related errors.&lt;br /&gt;4. Registry access errors.&lt;br /&gt;5. General errors.&lt;br /&gt;&lt;br /&gt;You can define your own fault handler (by default Synpase assumes a log followed by a drop fault handler) and assign them sequences and proxy services.&lt;br /&gt;&lt;br /&gt;For sequence:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;sequence onError="error-handler-sequence"  /&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;For proxy services:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;proxy&amp;gt;&lt;br /&gt;     &amp;lt;target faultSequence="error-handler-sequence"/&amp;gt;&lt;br /&gt;&amp;lt;/proxy&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Synapse uses a &lt;a href="http://en.wikipedia.org/wiki/Stack_%28data_structure%29"&gt;stack&lt;/a&gt; based mechanisms to handle faults. The registered fault sequences will be pushed into the stack at start up and upon receiving one of the mentioned errors above the top most fault handler will be popped and will be used to handle that particular exception (I tend to remind the signal handling mechanism of an operating system). This efficient fault handling mechanism will save Synapse in a critical situation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-3618293665361109031?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/3618293665361109031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/04/proxy-service-fault-handling.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/3618293665361109031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/3618293665361109031'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/04/proxy-service-fault-handling.html' title='Proxy service fault handling improvements'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-5137420755705162601</id><published>2010-04-27T14:39:00.000+05:30</published><updated>2010-04-27T14:40:51.301+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='LLVM'/><title type='text'>LLVM 2.7 Release!</title><content type='html'>You can read the full release note &lt;a href="http://llvm.org/releases/2.7/docs/ReleaseNotes.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-5137420755705162601?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/5137420755705162601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/04/llvm-27-release.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5137420755705162601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5137420755705162601'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/04/llvm-27-release.html' title='LLVM 2.7 Release!'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-7521398697447962494</id><published>2010-04-24T10:56:00.002+05:30</published><updated>2010-04-24T11:08:39.591+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPath'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='ESB QandA'/><title type='text'>WSO2 ESB Q&amp;A - #3</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Question&lt;/span&gt;:&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;How to change the endpoint reference (EPR) dynamically ?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Applies To&lt;/span&gt;: WSO2 ESB 2.x.x, WSO2 ESB 3.x.x&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Answer&lt;/span&gt;: If you want to change the endpoint address per message basis you can use a header mediator to change the To address based on the message content.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;header name="To" expression="XPath to create the address dynamically"/&amp;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/8648017967226408418-7521398697447962494?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/7521398697447962494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/04/wso2-esb-q-3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7521398697447962494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7521398697447962494'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/04/wso2-esb-q-3.html' title='WSO2 ESB Q&amp;A - #3'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-9037649321053618590</id><published>2010-04-22T09:55:00.003+05:30</published><updated>2010-04-22T10:11:12.055+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='system programming'/><category scheme='http://www.blogger.com/atom/ns#' term='c'/><title type='text'>Exit handler in a C program</title><content type='html'>You can register an exit handler in a C program which will execute at the end of the execution of the main function. This will only execute in a normal execution(which means at the end of return in main function) and needless to say this will not work in an abnormal exit or a kill by a CTRL+C ( which is the SIGKILL signal). Also note how last-register-first-execute when executing the exit handlers.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;/* compiles with gcc -Wall -ansi -pedantic -o exit-handler exit-handler.c */&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;&lt;br /&gt;static void callback();&lt;br /&gt;static void callback1();&lt;br /&gt;&lt;br /&gt;static void callback(){&lt;br /&gt; printf("I am a registered callback.\n");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;static void callback1(){&lt;br /&gt; printf("I am the second registered callback\n");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;int main(){&lt;br /&gt; if(atexit(callback)){&lt;br /&gt;  fprintf(stderr, "Failed to register the call back\n");&lt;br /&gt;  return 1;&lt;br /&gt; }&lt;br /&gt; if(atexit(callback1)){&lt;br /&gt;  fprintf(stderr, "Failed to register the second callback\n");&lt;br /&gt;  return 1;&lt;br /&gt; }&lt;br /&gt; printf("Just executing the main...\n");&lt;br /&gt; /* rest of the main */&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Which out put:&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;[rajika@localhost ch2]$ ./exit-handler &lt;br /&gt;Just executing the main...&lt;br /&gt;I am the second registered callback&lt;br /&gt;I am a registered callback.&lt;br /&gt;[rajika@localhost ch2]$&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/8648017967226408418-9037649321053618590?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/9037649321053618590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/04/exit-handler-in-c-program.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/9037649321053618590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/9037649321053618590'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/04/exit-handler-in-c-program.html' title='Exit handler in a C program'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-6278652648215764320</id><published>2010-04-17T18:46:00.003+05:30</published><updated>2010-04-17T18:57:58.449+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='AMQP'/><category scheme='http://www.blogger.com/atom/ns#' term='MOM'/><title type='text'>Advanced Message Queuing Protocol ( AMQP)</title><content type='html'>&lt;a href="http://www.amqp.org/confluence/display/AMQP/Advanced+Message+Queuing+Protocol"&gt;AMQP&lt;/a&gt; specification grabbed my attention. I always had this interest towards &lt;a href="http://en.wikipedia.org/wiki/Message-oriented_middleware"&gt;MOM&lt;/a&gt; systems, so I thought I'd take a look at the &lt;a href="http://www.amqp.org/confluence/display/AMQP/AMQP+Specification"&gt;AMQP specification&lt;/a&gt;. Mean while I am looking into &lt;a href="http://qpid.apache.org/"&gt;Apache Qpid&lt;/a&gt; project which is one of the open source implementations of the AMQP specification.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-6278652648215764320?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/6278652648215764320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/04/advanced-message-queuing-protocol-amqp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/6278652648215764320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/6278652648215764320'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/04/advanced-message-queuing-protocol-amqp.html' title='Advanced Message Queuing Protocol ( AMQP)'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-3159159502869218322</id><published>2010-04-15T14:36:00.003+05:30</published><updated>2010-04-15T15:43:08.327+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPath'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>XPath functions and properties avilable in WSO2 ESB</title><content type='html'>The configuration language of WSO2 ESB is rich with XPath support. There are few built in XPath functions and properties which makes the life of a developer easy.&lt;br /&gt;&lt;br /&gt;XPath functions&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. get-Property &lt;/span&gt;- This function returns the value of a named property.&lt;br /&gt;&lt;br /&gt;XPath properties&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. $trp &lt;span style="font-weight: bold;"&gt;- &lt;/span&gt;&lt;/span&gt;This is a map of transport headers, you can refer to the individual transport headers using the format: &lt;span style="font-weight: bold;"&gt;$trp:transport-header-name&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. $body &lt;/span&gt;- The body element. You can refer to an element using the format:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$body/getQuote&lt;/span&gt; will return the first getQuote element in the SOAP body.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. $header - &lt;/span&gt;The header element, you can refer to an element using the format:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;$header/wsa:To &lt;/span&gt;will return the fist was:To element in the SOAP header.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. $ctx&lt;/span&gt; - Can use to retrieve synapse message context property, using the format: &lt;span style="font-weight: bold;"&gt;$ctx:RESPONSE&lt;/span&gt; will return the value of synapse message context property RESPONSE.&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5. $axis2&lt;/span&gt; - Can use to retive the axis2 message context property, using the format: &lt;span style="font-weight: bold;"&gt;$axis2:messageType &lt;/span&gt;which will return the value of axis2 message context property messageType.&lt;br /&gt;&lt;br /&gt;You can find a complete description in the Configuration language guide in WSO2 ESB docs.&lt;br /&gt;&lt;br /&gt;Following sample shows using this function and properties.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;definitions xmlns="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt;   &amp;lt;proxy name="StockQuoteProxy"&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="custome"&amp;gt;&lt;br /&gt;                   &amp;lt;property name="Current date" expression="get-property('SYSTEM_DATE')"/&amp;gt;&lt;br /&gt;                   &amp;lt;property name="$trp:Content-Type" expression="$trp:Content-Type"/&amp;gt;&lt;br /&gt;                   &amp;lt;property name="$body" expression="$body/getQuote"/&amp;gt;&lt;br /&gt;                   &amp;lt;property name="$header" expression="$header/wsa:To" xmlns:wsa="http://www.w3.org/2005/08/addressing"/&amp;gt;&lt;br /&gt;                   &amp;lt;property name="$ctx:RESPONSE" expression="$ctx:RESPONSE"/&amp;gt;&lt;br /&gt;                   &amp;lt;property name="$axis2:messageType" expression="$axis2:messageType"/&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;/inSequence&amp;gt;&lt;br /&gt;           &amp;lt;outSequence&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/conf/sample/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 class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-3159159502869218322?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/3159159502869218322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/04/xpath-functions-and-properties-avilable.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/3159159502869218322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/3159159502869218322'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/04/xpath-functions-and-properties-avilable.html' title='XPath functions and properties avilable in WSO2 ESB'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-1429330762518614496</id><published>2010-04-08T08:59:00.004+05:30</published><updated>2010-04-08T09:31:06.960+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='Iridium'/><category scheme='http://www.blogger.com/atom/ns#' term='Fast Infoset'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>Enabling Fast Infoset in WSO2 ESB</title><content type='html'>Fast Infoset specifies a &lt;a href="http://www.w3.org/TR/xml-infoset/"&gt;binary format for XML infosets&lt;/a&gt; that is an efficient alternative to XML. This guide describes how you can enable fast infoset support for WSO2 ESB 3.0.0, Iridium.&lt;br /&gt;We are almost done with the WSO2 ESB 3.0.0 release and it'll be released shortly. In the mean time you can download the RC2 from &lt;a href="http://builder.wso2.org/%7Ecarbon/releases/carbon/3.0.0/4RC2/"&gt;here&lt;/a&gt;.&lt;br /&gt;You need to copy the axis2-fastinfoset-1.6-wso2v1.jar to $ESB_HOME/repository/components/lib. You'll have to build the jar your self and it can be found &lt;a href="https://svn.wso2.org/repos/wso2/branches/carbon/3.0.0/dependencies/axis2/modules/fastinfoset"&gt;here&lt;/a&gt;. Just get a check out of axis2 and build it.&lt;br /&gt;Then add the following message formatter and message builder to the axis2.xml in $ESB_HOME/repository/conf.&lt;br /&gt;&lt;br /&gt;Message formatters.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;!-- POX Message Formatter --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;messageFormatter contentType="application/fastinfoset"&lt;br /&gt;class="org.apache.axis2.fastinfoset.FastInfosetPOXMessageFormatter"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- SOAP Message Formatter --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;messageFormatter contentType="application/soap+fastinfoset"&lt;br /&gt;class="org.apache.axis2.fastinfoset.FastInfosetMessageFormatter"/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Message builders.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;!-- POX Message Builder --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;messageBuilder contentType="application/fastinfoset"&lt;br /&gt;class="org.apache.axis2.fastinfoset.FastInfosetPOXBuilder"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- SOAP Message Builder --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;messageBuilder contentType="application/soap+fastinfoset"&lt;br /&gt;class="org.apache.axis2.fastinfoset.FastInfosetBuilder"/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;When sending a message out from ESB you can set the Content-Type to either &lt;span style="font-weight: bold;"&gt;application/soap+fastinfoset&lt;/span&gt; ( for SOAP messages) and &lt;span style="font-weight: bold;"&gt;application/fastinfoset &lt;/span&gt;( for POX messages), you can set this property using a property mediator. &lt;span style="font-family:monospace;"&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/8648017967226408418-1429330762518614496?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/1429330762518614496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/04/enabling-fast-infoset-in-wso2-esb.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/1429330762518614496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/1429330762518614496'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/04/enabling-fast-infoset-in-wso2-esb.html' title='Enabling Fast Infoset in WSO2 ESB'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-8475674490512671022</id><published>2010-04-04T22:11:00.002+05:30</published><updated>2010-04-04T22:15:12.957+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='JBOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='Iridium'/><title type='text'>Deploying WSO2 ESB 3.x.x on JBoss</title><content type='html'>&lt;a href="http://ruwanim.wordpress.com/"&gt;Ruwani&lt;/a&gt;, one of the WSO2 ESB team members has written a step by step guide on deploying WSO2 ESB 3.0.0 on JBoss application server(version 5.1). You can read the full &lt;a href="http://wso2.org/library/knowledge-base/2010/03/deploying-wso2esb300-jboss510ga"&gt;article&lt;/a&gt; here on the &lt;a href="http://wso2.org/"&gt;oxygen tank&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-8475674490512671022?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/8475674490512671022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/04/deploying-wso2-esb-3xx-on-jboss.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/8475674490512671022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/8475674490512671022'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/04/deploying-wso2-esb-3xx-on-jboss.html' title='Deploying WSO2 ESB 3.x.x on JBoss'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-3033628902756973796</id><published>2010-03-24T16:20:00.004+05:30</published><updated>2010-03-24T16:36:16.564+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='Iridium'/><title type='text'>WSO2 ESB Q&amp;A - #2</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Question&lt;/span&gt;: What are the transports supported by WSO2 ESB.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Applies To&lt;/span&gt;: WSO2 ESB 2.x.x, WSO2 ESB 3.x.x&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Answer&lt;/span&gt;: Following transports are build into WSO2 ESB.&lt;br /&gt;&lt;br /&gt;1. HTTP&lt;br /&gt;2. JMS&lt;br /&gt;3. mail&lt;br /&gt;4. TCP&lt;br /&gt;5. UDP&lt;br /&gt;6. &lt;a href="http://en.wikipedia.org/wiki/Financial_Information_eXchange"&gt;FIX&lt;/a&gt;&lt;br /&gt;7. &lt;a href="http://commons.apache.org/vfs/filesystems.html"&gt;VFS&lt;/a&gt;(ftp, local files, sftp, zip, jar, tar, gzip,bzip, res, ram, mime,WebDAV, CIFS)&lt;br /&gt;8. &lt;a href="http://www.amqp.org/"&gt;AMQP&lt;/a&gt;&lt;br /&gt;9. &lt;a href="http://en.wikipedia.org/wiki/Health_Level_7"&gt;HL7&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-3033628902756973796?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/3033628902756973796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/03/wso2-esb-q-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/3033628902756973796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/3033628902756973796'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/03/wso2-esb-q-2.html' title='WSO2 ESB Q&amp;A - #2'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-1782212480720490119</id><published>2010-03-22T17:47:00.006+05:30</published><updated>2010-04-04T22:16:40.199+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='Iridium'/><category scheme='http://www.blogger.com/atom/ns#' term='VFS transport'/><category scheme='http://www.blogger.com/atom/ns#' term='sftp'/><title type='text'>Public key authentication for sftp in WSO2 ESBs VFS transport</title><content type='html'>Another new feature in upcoming WSO2 ESBs vfs transport is the ability to authenticate using public key for sftp. You only need to specify the user name in the connection url, the transport will automatically look for ~/.ssh for the private key. To get this scenario working you'll need to add your public key into the remote servers ~/.ssh/authorized_keys.  Following is an example.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&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="vfs"&amp;gt;&lt;br /&gt; &amp;lt;parameter name="transport.vfs.FileURI"&amp;gt;vfs:sftp://user@host/home/user/test.xml&amp;lt;/parameter&amp;gt; CHANGE&lt;br /&gt; &amp;lt;parameter name="transport.vfs.ContentType"&amp;gt;text/xml&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.PollInterval"&amp;gt;15&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;header name="Action" value="urn:getQuote"/&amp;gt;&lt;br /&gt;   &amp;lt;/inSequence&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;outSequence&amp;gt;&lt;br /&gt;     &amp;lt;property action="set" name="OUT_ONLY" value="true"/&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:rajika@wso2.com"/&amp;gt; &amp;lt;!--CHANGE--&amp;gt;&lt;br /&gt;       &amp;lt;/endpoint&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/conf/sample/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;br /&gt;&lt;br /&gt;If you plan to use the user name, password combination for authentication you'll need to include your password in the connection url.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;vfs:sftp://user:password@host/home/user/test.xml&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Some instructions on planting the public key on the remote server avilable  &lt;a href="http://ask-leo.com/how_can_i_automate_an_sftp_transfer_between_two_servers.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-1782212480720490119?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/1782212480720490119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/03/public-key-authentication-for-sftp-in.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/1782212480720490119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/1782212480720490119'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/03/public-key-authentication-for-sftp-in.html' title='Public key authentication for sftp in WSO2 ESBs VFS transport'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-5553512647188213646</id><published>2010-03-15T20:29:00.005+05:30</published><updated>2010-05-25T09:49:47.514+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='mediator'/><category scheme='http://www.blogger.com/atom/ns#' term='Iridium'/><title type='text'>Writing a class mediator for WSO2 ESB 3.0.0</title><content type='html'>One way to extend the functionality of &lt;a href="http://wso2.org/projects/esb/java"&gt;WSO2 ESB&lt;/a&gt; is to write a class mediator. Following is a sample class mediator which just log various properties in Synapse MessageContext to STDOUT. You can either deploy this mediator just as a normal jar or as an OSGi bundle.&lt;br /&gt;&lt;br /&gt;1. Deploying as a normal jar.&lt;br /&gt;You'll need to build a regular jar and put into $ESB_HOME/repository/components/lib and restart the server.&lt;br /&gt;Following pom.xml will build the jar.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&amp;gt;&lt;br /&gt;&amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.wso2.carbon.mediator&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;org.wso2.carbon.mediator&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;packaging&amp;gt;jar&amp;lt;/packaging&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;name&amp;gt;org.wso2.carbon.mediator&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;lt;url&amp;gt;http://maven.apache.org&amp;lt;/url&amp;gt;&lt;br /&gt;&amp;lt;repositories&amp;gt;&lt;br /&gt;       &amp;lt;repository&amp;gt;&lt;br /&gt;           &amp;lt;id&amp;gt;wso2-maven2-repository&amp;lt;/id&amp;gt;&lt;br /&gt;           &amp;lt;url&amp;gt;http://dist.wso2.org/maven2&amp;lt;/url&amp;gt;&lt;br /&gt;       &amp;lt;/repository&amp;gt;&lt;br /&gt;       &amp;lt;repository&amp;gt;&lt;br /&gt;           &amp;lt;id&amp;gt;apache-Incubating-repo&amp;lt;/id&amp;gt;&lt;br /&gt;           &amp;lt;name&amp;gt;Maven Incubating Repository&amp;lt;/name&amp;gt;&lt;br /&gt;           &amp;lt;url&amp;gt;http://people.apache.org/repo/m2-incubating-repository&amp;lt;/url&amp;gt;&lt;br /&gt;       &amp;lt;/repository&amp;gt;&lt;br /&gt;       &amp;lt;repository&amp;gt;&lt;br /&gt;           &amp;lt;id&amp;gt;apache-maven2-repo&amp;lt;/id&amp;gt;&lt;br /&gt;           &amp;lt;name&amp;gt;Apache Maven2 Repository&amp;lt;/name&amp;gt;&lt;br /&gt;           &amp;lt;url&amp;gt;http://repo1.maven.org/maven2/&amp;lt;/url&amp;gt;&lt;br /&gt;       &amp;lt;/repository&amp;gt;&lt;br /&gt;   &amp;lt;/repositories&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;build&amp;gt;&lt;br /&gt;       &amp;lt;plugins&amp;gt;&lt;br /&gt;           &amp;lt;plugin&amp;gt;&lt;br /&gt;               &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;&lt;br /&gt;               &amp;lt;artifactId&amp;gt;maven-compiler-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;               &amp;lt;version&amp;gt;2.0&amp;lt;/version&amp;gt;&lt;br /&gt;               &amp;lt;configuration&amp;gt;&lt;br /&gt;                   &amp;lt;source&amp;gt;1.5&amp;lt;/source&amp;gt;&lt;br /&gt;                   &amp;lt;target&amp;gt;1.5&amp;lt;/target&amp;gt;&lt;br /&gt;               &amp;lt;/configuration&amp;gt;&lt;br /&gt;           &amp;lt;/plugin&amp;gt;&lt;br /&gt;       &amp;lt;/plugins&amp;gt;&lt;br /&gt;   &amp;lt;/build&amp;gt;&lt;br /&gt;&lt;br /&gt;   &amp;lt;dependencies&amp;gt;&lt;br /&gt;       &amp;lt;dependency&amp;gt;&lt;br /&gt;           &amp;lt;groupId&amp;gt;org.apache.synapse&amp;lt;/groupId&amp;gt;&lt;br /&gt;           &amp;lt;artifactId&amp;gt;synapse-core&amp;lt;/artifactId&amp;gt;&lt;br /&gt;           &amp;lt;version&amp;gt;1.4.0-wso2v1&amp;lt;/version&amp;gt;&lt;br /&gt;       &amp;lt;/dependency&amp;gt;&lt;br /&gt;   &amp;lt;/dependencies&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2.  Deploying as an OSGi bundle.&lt;br /&gt;You can place your OSGi bundle inside $ESB_HOME/repository/components/dropins and restart the server.&lt;br /&gt;&lt;br /&gt;Following pom.xml build the OSGi bundle.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&amp;gt;&lt;br /&gt;&amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.wso2.carbon.mediator&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;org.wso2.carbon.mediator&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;packaging&amp;gt;bundle&amp;lt;/packaging&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;1.0-SNAPSHOT&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;name&amp;gt;org.wso2.carbon.mediator&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;lt;url&amp;gt;http://maven.apache.org&amp;lt;/url&amp;gt;&lt;br /&gt; &amp;lt;repositories&amp;gt;&lt;br /&gt;         &amp;lt;repository&amp;gt;&lt;br /&gt;             &amp;lt;id&amp;gt;wso2-maven2-repository&amp;lt;/id&amp;gt;&lt;br /&gt;             &amp;lt;url&amp;gt;http://dist.wso2.org/maven2&amp;lt;/url&amp;gt;&lt;br /&gt;         &amp;lt;/repository&amp;gt;&lt;br /&gt;         &amp;lt;repository&amp;gt;&lt;br /&gt;             &amp;lt;id&amp;gt;apache-Incubating-repo&amp;lt;/id&amp;gt;&lt;br /&gt;             &amp;lt;name&amp;gt;Maven Incubating Repository&amp;lt;/name&amp;gt;&lt;br /&gt;             &amp;lt;url&amp;gt;http://people.apache.org/repo/m2-incubating-repository&amp;lt;/url&amp;gt;&lt;br /&gt;         &amp;lt;/repository&amp;gt;&lt;br /&gt;         &amp;lt;repository&amp;gt;&lt;br /&gt;             &amp;lt;id&amp;gt;apache-maven2-repo&amp;lt;/id&amp;gt;&lt;br /&gt;             &amp;lt;name&amp;gt;Apache Maven2 Repository&amp;lt;/name&amp;gt;&lt;br /&gt;             &amp;lt;url&amp;gt;http://repo1.maven.org/maven2/&amp;lt;/url&amp;gt;&lt;br /&gt;         &amp;lt;/repository&amp;gt;&lt;br /&gt;     &amp;lt;/repositories&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;build&amp;gt;&lt;br /&gt;         &amp;lt;plugins&amp;gt;&lt;br /&gt;             &amp;lt;plugin&amp;gt;&lt;br /&gt;                 &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;&lt;br /&gt;                 &amp;lt;artifactId&amp;gt;maven-compiler-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;                 &amp;lt;version&amp;gt;2.0&amp;lt;/version&amp;gt;&lt;br /&gt;                 &amp;lt;configuration&amp;gt;&lt;br /&gt;                     &amp;lt;source&amp;gt;1.5&amp;lt;/source&amp;gt;&lt;br /&gt;                     &amp;lt;target&amp;gt;1.5&amp;lt;/target&amp;gt;&lt;br /&gt;                 &amp;lt;/configuration&amp;gt;&lt;br /&gt;             &amp;lt;/plugin&amp;gt;&lt;br /&gt;             &amp;lt;plugin&amp;gt;&lt;br /&gt;                 &amp;lt;groupId&amp;gt;org.apache.felix&amp;lt;/groupId&amp;gt;&lt;br /&gt;                 &amp;lt;artifactId&amp;gt;maven-bundle-plugin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;                 &amp;lt;version&amp;gt;1.4.0&amp;lt;/version&amp;gt;&lt;br /&gt;                 &amp;lt;extensions&amp;gt;true&amp;lt;/extensions&amp;gt;&lt;br /&gt;                 &amp;lt;configuration&amp;gt;&lt;br /&gt;                     &amp;lt;instructions&amp;gt;&lt;br /&gt;                         &amp;lt;Bundle-SymbolicName&amp;gt;org.test&amp;lt;/Bundle-SymbolicName&amp;gt;&lt;br /&gt;                         &amp;lt;Bundle-Name&amp;gt;org.test&amp;lt;/Bundle-Name&amp;gt;&lt;br /&gt;                         &amp;lt;Export-Package&amp;gt;&lt;br /&gt;                             org.wso2.carbon.mediator.*,&lt;br /&gt;                         &amp;lt;/Export-Package&amp;gt;&lt;br /&gt;                         &amp;lt;Import-Package&amp;gt;&lt;br /&gt;                             *; resolution:=optional&lt;br /&gt;                         &amp;lt;/Import-Package&amp;gt;&lt;br /&gt;                     &amp;lt;/instructions&amp;gt;&lt;br /&gt;                 &amp;lt;/configuration&amp;gt;&lt;br /&gt;             &amp;lt;/plugin&amp;gt;&lt;br /&gt;         &amp;lt;/plugins&amp;gt;&lt;br /&gt;     &amp;lt;/build&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;dependencies&amp;gt;&lt;br /&gt;         &amp;lt;dependency&amp;gt;&lt;br /&gt;             &amp;lt;groupId&amp;gt;org.apache.synapse&amp;lt;/groupId&amp;gt;&lt;br /&gt;             &amp;lt;artifactId&amp;gt;synapse-core&amp;lt;/artifactId&amp;gt;&lt;br /&gt;             &amp;lt;version&amp;gt;1.4.0-wso2v1&amp;lt;/version&amp;gt;&lt;br /&gt;         &amp;lt;/dependency&amp;gt;&lt;br /&gt;     &amp;lt;/dependencies&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Following is the sample class mediator.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;package org.wso2.carbon.mediator;&lt;br /&gt;&lt;br /&gt;import org.apache.synapse.MessageContext;&lt;br /&gt;import org.apache.synapse.Mediator;&lt;br /&gt;import org.apache.synapse.mediators.AbstractMediator;&lt;br /&gt;import org.apache.synapse.mediators.base.SequenceMediator;&lt;br /&gt;&lt;br /&gt;import java.util.Map;&lt;br /&gt;import java.util.Set;&lt;br /&gt;import java.util.Iterator;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* This mediator just log the data packed inside SynpaseMessageConext to STDIN&lt;br /&gt;*/&lt;br /&gt;public class SynapseMessageContextMediator extends AbstractMediator {&lt;br /&gt;&lt;br /&gt; public boolean mediate(MessageContext msgCtx) {&lt;br /&gt;&lt;br /&gt;     log.info("Starting " + getClass().getName() + " mediator..");&lt;br /&gt;     Set propKeySet = msgCtx.getPropertyKeySet();&lt;br /&gt;     Iterator iterator = propKeySet.iterator();&lt;br /&gt;     int i = 0;&lt;br /&gt;     while (iterator.hasNext()) {&lt;br /&gt;         Object obj = iterator.next();&lt;br /&gt;         log.info("Property key" + (i++) + ": " + obj.toString());&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     if (msgCtx.getFaultTo() != null &amp;amp;&amp;amp; msgCtx.getFaultTo().getAddress() != null) {&lt;br /&gt;         log.info("Fault to EPR: " + msgCtx.getFaultTo().getAddress());&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     if (msgCtx.getFrom() != null &amp;amp;&amp;amp; msgCtx.getFrom().getAddress() != null) {&lt;br /&gt;         log.info("From EPR: " + msgCtx.getFrom().getAddress());&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     if (msgCtx.getEnvelope() != null) {&lt;br /&gt;         log.info("Soap envelope: " + msgCtx.getEnvelope());&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     if (msgCtx.getMessageID() != null) {&lt;br /&gt;         log.info("Message ID: " + msgCtx.getMessageID());&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     if (msgCtx.getRelatesTo() != null) {&lt;br /&gt;         log.info("Relates to: " + msgCtx.getRelatesTo());&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     if (msgCtx.getReplyTo() != null) {&lt;br /&gt;         log.info("ReplyTo: " + msgCtx.getReplyTo());&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     if (msgCtx.getTo() != null) {&lt;br /&gt;         log.info("To: " + msgCtx.getTo());&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     if (msgCtx.getWSAAction() != null) {&lt;br /&gt;         log.info("WSAAction: " + msgCtx.getWSAAction());&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     if (msgCtx.getWSAMessageID() != null) {&lt;br /&gt;         log.info("WSAMesage ID: " + msgCtx.getWSAMessageID());&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     if (msgCtx.getSoapAction() != null) {&lt;br /&gt;         log.info("SOAPAction: " + msgCtx.getSoapAction());&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     log.info("MTOM ?:" + msgCtx.isDoingMTOM());&lt;br /&gt;     log.info("REST ?:" + msgCtx.isDoingPOX());&lt;br /&gt;     log.info("SWA ?:" + msgCtx.isDoingSWA());&lt;br /&gt;     log.info("POST ?:" + !msgCtx.isDoingGET());&lt;br /&gt;     log.info("SOAP 11 ?:" + msgCtx.isSOAP11());&lt;br /&gt;     log.info("Response ?:" + msgCtx.isResponse());&lt;br /&gt;&lt;br /&gt;     log.info("End of " + getClass().getName() + " mediator.");&lt;br /&gt;     return true;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And finally following is a sample synpase.xml which shows the new mediator is in used.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;definitions xmlns="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt;  &amp;lt;log/&amp;gt;&lt;br /&gt;  &amp;lt;class name="org.wso2.carbon.mediator.SynapseMessageContextMediator"/&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;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-5553512647188213646?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/5553512647188213646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/03/writing-class-mediator-for-wso2-esb-300.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5553512647188213646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5553512647188213646'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/03/writing-class-mediator-for-wso2-esb-300.html' title='Writing a class mediator for WSO2 ESB 3.0.0'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-4547469679362747718</id><published>2010-03-14T00:17:00.003+05:30</published><updated>2010-03-14T00:42:23.751+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='Iridium'/><title type='text'>WSO2 ESB start up script options</title><content type='html'>Following command line options are available to the start up script of WSO2 ESB 3.0.0. Note the two options &lt;span style="font-weight: bold;"&gt;--cleanCache&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;--reset&lt;/span&gt; options are not any more which we had in 2.x.x series of WSO2 ESB. This is because in 3.0.0 version we'll use the synapse.xml to load the configuration, before when you start the server in second time the configuration is read from registry not from the synapse.xml.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;[rajika@localhost bin]$ ./wso2server.sh -h&lt;br /&gt;Usage: wso2server.sh [command] [system-properties]&lt;br /&gt;&lt;br /&gt;command:&lt;br /&gt;--debug &lt;port&gt;  Start the server in remote debugging mode.&lt;br /&gt;  port: The remote debugging port.&lt;br /&gt;--run  Run the server&lt;br /&gt;--start  Start Carbon as a Unix daemon in the background&lt;br /&gt;--console Start Carbon as a Unix daemon in the foreground&lt;br /&gt;--stop  Stop the Carbon Unix daemon&lt;br /&gt;--status Get the status of the Carbon Unix daemon&lt;br /&gt;--dump  Print a thread dump of the Carbon Unix daemon&lt;br /&gt;--restart Restart the Carbon Unix daemon&lt;br /&gt;--cleanRegistry Clean registry space. [CAUTION] All Registry data will be lost.&lt;br /&gt;--version What version of the product are you running?&lt;br /&gt;&lt;br /&gt;system-properties:&lt;br /&gt;-DhttpPort  Overrides the HTTP port defined in the transports.xml file&lt;br /&gt;-DhttpsPort  Overrides the HTTPS port defined in the transports.xml file&lt;br /&gt;-DosgiConsole=[port] Start Carbon with Equinox OSGi console.&lt;br /&gt;   If the optional 'port' parameter is provided, a telnet port will be opened&lt;br /&gt;-DosgiDebugOptions=[options-file]&lt;br /&gt;   Start Carbon with OSGi debugging enabled.&lt;br /&gt;   If the optional 'options-file is provided, the OSGi debug options will be loaded from it.&lt;br /&gt;-Dsetup   Clean the Registry &amp;amp; other configuration, recreate DB, re-populate the configuration, and start Carbon&lt;br /&gt;-Dcarbon.registry.root The root of the Registry used by this Carbon instance&lt;br /&gt;-Dwso2.transports.xml Location of the transports.xml file.&lt;br /&gt;-Dweb.location  The directory into which UI artifacts included in an Axis2 AAR file are extracted to&lt;br /&gt;--n &lt;number of="" instances=""&gt;   Number of instances to start if you have installed the Multiple-instance Feature&lt;br /&gt;--portsgiven   In Multiple-instance case if you want to give the ports manually using ports-config.xml&lt;br /&gt;--lbdisable   In Multiple-instance case if you wants to disable load-balancing configuration&lt;br /&gt;&lt;br /&gt;&lt;/number&gt;&lt;/port&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-4547469679362747718?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/4547469679362747718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/03/wso2-esb-start-up-script-options.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/4547469679362747718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/4547469679362747718'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/03/wso2-esb-start-up-script-options.html' title='WSO2 ESB start up script options'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-6473136507410337861</id><published>2010-03-13T21:13:00.003+05:30</published><updated>2010-03-13T21:17:50.860+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='system programming'/><title type='text'>Unix systems programming</title><content type='html'>I started to read the book, &lt;a href="http://www.amazon.com/UNIX-Systems-Programming-Communication-Concurrency/dp/0130424110"&gt;Unix systems programming&lt;/a&gt;, it's a great book if you are one of the people out there who like to write system software. I am enjoying reading the book.&lt;br /&gt;The book also has a &lt;a href="http://usp.cs.utsa.edu/usp/"&gt;website&lt;/a&gt; of its own.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-6473136507410337861?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/6473136507410337861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/03/unix-systems-programming.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/6473136507410337861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/6473136507410337861'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/03/unix-systems-programming.html' title='Unix systems programming'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-8220196864613044911</id><published>2010-03-10T21:45:00.002+05:30</published><updated>2010-03-10T21:50:46.669+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='utf-8'/><title type='text'>UTF-8 history</title><content type='html'>I am reading the &lt;a href="http://www.cl.cam.ac.uk/%7Emgk25/ucs/utf-8-history.txt"&gt;UTF-8 history&lt;/a&gt;. It's really a cool work invented by some &lt;a href="http://en.wikipedia.org/wiki/Ken_Thompson"&gt;cool&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Rob_Pike"&gt;people&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-8220196864613044911?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/8220196864613044911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/03/utf-8-history.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/8220196864613044911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/8220196864613044911'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/03/utf-8-history.html' title='UTF-8 history'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-258728776838385547</id><published>2010-03-07T12:27:00.005+05:30</published><updated>2010-03-11T15:03:59.420+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='JMS'/><category scheme='http://www.blogger.com/atom/ns#' term='carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='MOM'/><title type='text'>WSO2 ESB Q&amp;A - #1</title><content type='html'>I thought I'd start a series of posts about a particular question on &lt;a href="http://wso2.org/projects/esb/java"&gt;WSO2 ESB&lt;/a&gt; and the answer. The source for the Q&amp;amp;A will be &lt;a href="http://wso2.org/forum/187"&gt;WSO2 ESB forum&lt;/a&gt;, mailing lists( &lt;a href="http://www.blogger.com/carbon-dev-request@wso2.org"&gt;carbon-dev&lt;/a&gt;, &lt;a href="http://www.blogger.com/esb-java-user-request@wso2.org"&gt;esb-user&lt;/a&gt;) of WSO2 ESB and other related areas. This particularly will follow like a Question and Answer format which some times can be a FAQ, a scenario which a esb user trying to implement or a question on the user mailing list. The format of the post will be as follows.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Heading&lt;/span&gt;: WSO2 ESB Q&amp;amp;A - #post-number&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Question&lt;/span&gt;: The problem, use case of the FAQ related to WSO2 ESB&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Applies to&lt;/span&gt;: WSO2 ESB version the Q&amp;amp;A applies to.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Answer&lt;/span&gt;: The answer to the above question.&lt;br /&gt;&lt;br /&gt;Here goes the first one.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Question&lt;/span&gt;:&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;What are the JMS message providers ( or the Java Message Oriented Middleware APIs) supports by WSO2 ESB ?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Applies To&lt;/span&gt;: WSO2 ESB 2.x.x, WSO2 ESB 3.x.x (release is on the way)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Answer&lt;/span&gt;: Following JMS providers are know to be work with WSO2 ESB.&lt;br /&gt;&lt;br /&gt;1. Apache ActiveMQ - &lt;a href="http://techfeast-hiranya.blogspot.com/2009/07/integrating-apache-activemq-with-wso2.html"&gt;read more..&lt;/a&gt;&lt;br /&gt;2. Jboss Messaging - &lt;a href="http://rajikak.blogspot.com/2009/07/getting-jbossmessagingjbm-working-with.html"&gt;read more..&lt;/a&gt;&lt;br /&gt;3. IBM WebShpere MQ - &lt;a href="http://techfeast-hiranya.blogspot.com/search/label/websphere%20mq"&gt;read more..&lt;/a&gt;&lt;br /&gt;4. SwiftMQ&lt;br /&gt;5. RabitMQ&lt;br /&gt;6. Apache Qpid&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-258728776838385547?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/258728776838385547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/03/wso2-esb-q-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/258728776838385547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/258728776838385547'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/03/wso2-esb-q-1.html' title='WSO2 ESB Q&amp;A - #1'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-283153379041752583</id><published>2010-03-06T22:13:00.007+05:30</published><updated>2010-03-07T11:44:27.079+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='vimrc'/><title type='text'>My vim configuration and color scheme</title><content type='html'>I am a &lt;a href="http://www.vim.org/"&gt;vim&lt;/a&gt; user. I use it for writing C code and editing text files. In all this time I am using a nice colour scheme for vim which let me to work hours in front of the computer screen. The colour scheme shows the key words, character strings, operators etc.. in green colour which gave me a pleasant feeling. Following is a screen shot of a C source file open with my vim configuration and the vim colour scheme. Here are my &lt;a href="https://wso2.org/repos/wso2/people/rajika/misc/vimrc"&gt;.vimrc&lt;/a&gt; and the vim &lt;a href="https://wso2.org/repos/wso2/people/rajika/misc/rajika.vim"&gt;colour scheme&lt;/a&gt; files. I am posting them here thinking that some one else will find it useful.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hha64Sbr4OI/S5KO8_va9lI/AAAAAAAAADw/owoV2lsE2tQ/s1600-h/Screenshot.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 250px;" src="http://2.bp.blogspot.com/_hha64Sbr4OI/S5KO8_va9lI/AAAAAAAAADw/owoV2lsE2tQ/s400/Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5445572077997979218" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-283153379041752583?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/283153379041752583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/03/my-vim-configuration-and-color-scheme.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/283153379041752583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/283153379041752583'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/03/my-vim-configuration-and-color-scheme.html' title='My vim configuration and color scheme'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_hha64Sbr4OI/S5KO8_va9lI/AAAAAAAAADw/owoV2lsE2tQ/s72-c/Screenshot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-4821958158664730224</id><published>2010-03-01T20:00:00.008+05:30</published><updated>2010-03-01T20:33:49.128+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='Iridium'/><category scheme='http://www.blogger.com/atom/ns#' term='carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='UI'/><category scheme='http://www.blogger.com/atom/ns#' term='carbon components'/><title type='text'>The improved WSO2 ESB management console</title><content type='html'>There a lot of cool features in the upcoming WSO2 ESB 3.0.0 release. All most all of the new features are now implemented in the trunk. Another cool feature is the new, improved management console of the ESB. As a part of improving the userbility of the management console most of the editors are now improved.  &lt;a href="https://svn.wso2.org/repos/wso2/trunk/carbon/components/proxy-admin"&gt;ProxServie UI&lt;/a&gt;, &lt;a href="https://svn.wso2.org/repos/wso2/trunk/carbon/components/endpoint"&gt;Endpoint UI&lt;/a&gt;, &lt;a href="https://svn.wso2.org/repos/wso2/trunk/carbon/components/localentry"&gt;LocalEntry UI&lt;/a&gt; are few to mention. And also the management console is now equipped with a dashboard which are powered by &lt;a href="http://wso2.com/products/gadget-server"&gt;Gadgets&lt;/a&gt;. Following are few screen shots of the improved user interfaces. Stay tune to experience the power of the new management console.&lt;br /&gt;&lt;br /&gt;The improved left panel, where only the required menus items are displayed.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hha64Sbr4OI/S4vVZ46D34I/AAAAAAAAADA/hanJEUoiVhI/s1600-h/1.1.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 245px;" src="http://4.bp.blogspot.com/_hha64Sbr4OI/S4vVZ46D34I/AAAAAAAAADA/hanJEUoiVhI/s400/1.1.png" alt="" id="BLOGGER_PHOTO_ID_5443679215356731266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The enhanced proxy service editor.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hha64Sbr4OI/S4vVt1FtCZI/AAAAAAAAADI/WM6dLsewghQ/s1600-h/2.2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 204px;" src="http://2.bp.blogspot.com/_hha64Sbr4OI/S4vVt1FtCZI/AAAAAAAAADI/WM6dLsewghQ/s400/2.2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5443679557929208210" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The enhanced endpoint editor.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hha64Sbr4OI/S4vV6Cfq6DI/AAAAAAAAADQ/zbOGjH4kZk8/s1600-h/3.3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 210px;" src="http://4.bp.blogspot.com/_hha64Sbr4OI/S4vV6Cfq6DI/AAAAAAAAADQ/zbOGjH4kZk8/s400/3.3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5443679767686211634" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Child endpoint editors only display the most used options.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hha64Sbr4OI/S4vWIgxfp-I/AAAAAAAAADY/Ycjx8rR7qE4/s1600-h/4.4.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 193px;" src="http://3.bp.blogspot.com/_hha64Sbr4OI/S4vWIgxfp-I/AAAAAAAAADY/Ycjx8rR7qE4/s400/4.4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5443680016332204002" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The enhanced local entry editor.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_hha64Sbr4OI/S4vW2x_Y9QI/AAAAAAAAADg/GCvY2dQy8nc/s1600-h/6.6.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 208px;" src="http://1.bp.blogspot.com/_hha64Sbr4OI/S4vW2x_Y9QI/AAAAAAAAADg/GCvY2dQy8nc/s400/6.6.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5443680811227870466" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The new embedded dashboard for the WSO2 ESB.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hha64Sbr4OI/S4vXIKnqj_I/AAAAAAAAADo/ksDHrKXqA7M/s1600-h/5.5.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 228px;" src="http://4.bp.blogspot.com/_hha64Sbr4OI/S4vXIKnqj_I/AAAAAAAAADo/ksDHrKXqA7M/s400/5.5.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5443681109897023474" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-4821958158664730224?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/4821958158664730224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/03/improved-wso2-esb-management-console.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/4821958158664730224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/4821958158664730224'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/03/improved-wso2-esb-management-console.html' title='The improved WSO2 ESB management console'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_hha64Sbr4OI/S4vVZ46D34I/AAAAAAAAADA/hanJEUoiVhI/s72-c/1.1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-7082224228459023918</id><published>2010-02-27T20:09:00.004+05:30</published><updated>2010-03-01T20:37:56.863+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='mathematics'/><category scheme='http://www.blogger.com/atom/ns#' term='linear algebra'/><title type='text'>Linear Algebra course materials from MIT</title><content type='html'>I was listening to the &lt;a href="http://ocw.mit.edu/OcwWeb/Mathematics/18-06Spring-2005/VideoLectures/index.htm"&gt;linear algebra course&lt;/a&gt; by &lt;a href="http://en.wikipedia.org/wiki/Gilbert_Strang"&gt;Professor Gilbert Strang&lt;/a&gt; of MIT in this evening. They are truly amusing.&lt;br /&gt;Thanks for sharing (which gives the chance of more people to access the knowledge free of charge). If you like to donate to the &lt;a href="http://ocw.mit.edu/OcwWeb/web/about/about/index.htm"&gt;OCW&lt;/a&gt; effort instructions are &lt;a href="https://giving.mit.edu/givenow/ocw/MakeGift.dyn"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-7082224228459023918?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/7082224228459023918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/02/linear-algebra-course-materials-from.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7082224228459023918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7082224228459023918'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/02/linear-algebra-course-materials-from.html' title='Linear Algebra course materials from MIT'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-3306386561959380835</id><published>2010-02-26T15:30:00.007+05:30</published><updated>2010-02-26T16:00:35.350+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='POX'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='Iridium'/><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><title type='text'>WSO2 ESB now supports POX security</title><content type='html'>With the fix of the &lt;a href="https://wso2.org/jira/browse/CARBON-5466"&gt;CARBON-5466&lt;/a&gt;, WSO2 ESB now supports POX (Pure Old XML) security. This feature will be available with the upcoming &lt;span style="font-weight: bold;"&gt;Iridium &lt;/span&gt;based release of WSO2 ESB (version 3.0.0). If you like to try this out a public alpah2 is aviable &lt;a href="http://builder.wso2.org/%7Ecarbon/releases/carbon/3.0.0/1Alpha2/wso2esb-3.0.0-SNAPSHOT.zip"&gt;here&lt;/a&gt; to download.&lt;br /&gt;We'll try to add security to the echo service and try to invoke it through the web browser.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1).&lt;/span&gt; Go to the Service List and select &lt;span style="font-weight: bold;"&gt;echo&lt;/span&gt; service. &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hha64Sbr4OI/S4ehwQX4VmI/AAAAAAAAACY/WiUkJfndotA/s1600-h/1.1.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 155px;" src="http://3.bp.blogspot.com/_hha64Sbr4OI/S4ehwQX4VmI/AAAAAAAAACY/WiUkJfndotA/s400/1.1.png" alt="" id="BLOGGER_PHOTO_ID_5442496525101454946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2). &lt;/span&gt;Go to the Service dashboard and select enable security for the echo service.  And then enable UT(username token) for the echo service.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hha64Sbr4OI/S4eiIsFIH1I/AAAAAAAAACg/TZ4_pS8JaBY/s1600-h/2.2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 184px;" src="http://4.bp.blogspot.com/_hha64Sbr4OI/S4eiIsFIH1I/AAAAAAAAACg/TZ4_pS8JaBY/s400/2.2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5442496944855850834" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3). &lt;/span&gt;Select 'admin' as the group where this service can be access securely.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hha64Sbr4OI/S4eiWjivInI/AAAAAAAAACo/09RLwHYqpAo/s1600-h/3.3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 113px;" src="http://3.bp.blogspot.com/_hha64Sbr4OI/S4eiWjivInI/AAAAAAAAACo/09RLwHYqpAo/s400/3.3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5442497183082291826" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4). &lt;/span&gt;Copy the new https endpoint URL of the echo service.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hha64Sbr4OI/S4eifBDVKTI/AAAAAAAAACw/Lh0X-8yZXHU/s1600-h/4.4.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 183px;" src="http://3.bp.blogspot.com/_hha64Sbr4OI/S4eifBDVKTI/AAAAAAAAACw/Lh0X-8yZXHU/s400/4.4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5442497328442583346" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5). &lt;/span&gt;Open your favourite web browser and type the URL as '&lt;span style="font-weight: bold;"&gt;https://localhost:8243/services/echo/echoString&lt;/span&gt;' and invoke the echo service restful manner. You'll be promoted with the famous dialogue box to enter the username and the password.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_hha64Sbr4OI/S4eil2BY7tI/AAAAAAAAAC4/jGK_EArDmWI/s1600-h/5.5.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 174px;" src="http://1.bp.blogspot.com/_hha64Sbr4OI/S4eil2BY7tI/AAAAAAAAAC4/jGK_EArDmWI/s400/5.5.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5442497445740736210" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-3306386561959380835?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/3306386561959380835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/02/wso2-esb-now-supports-pox-security.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/3306386561959380835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/3306386561959380835'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/02/wso2-esb-now-supports-pox-security.html' title='WSO2 ESB now supports POX security'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_hha64Sbr4OI/S4ehwQX4VmI/AAAAAAAAACY/WiUkJfndotA/s72-c/1.1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-7569559202551753035</id><published>2010-02-24T16:15:00.007+05:30</published><updated>2010-02-26T08:58:21.550+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='Iridium'/><category scheme='http://www.blogger.com/atom/ns#' term='carbon components'/><title type='text'>Synapse config admin now supports syntax highlighting</title><content type='html'>The &lt;a href="https://svn.wso2.org/repos/wso2/trunk/carbon/components/synapse-config-admin"&gt;synapse config admin&lt;/a&gt; component which displays the in memory synapse configuration now supports &lt;a href="http://en.wikipedia.org/wiki/Syntax_highlighting"&gt;syntax highlighting&lt;/a&gt;. Since the synpase configuration language is XML this will be a nice feature if you manually edit the configuration using the config admin component. This feature will be available with the upcoming WSO2 ESB 3.0.0 release. Following is a screen shot of the new look.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hha64Sbr4OI/S4UFRHj0_jI/AAAAAAAAACQ/TUsEiTP-E9w/s1600-h/config.jpeg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 282px;" src="http://4.bp.blogspot.com/_hha64Sbr4OI/S4UFRHj0_jI/AAAAAAAAACQ/TUsEiTP-E9w/s400/config.jpeg" alt="" id="BLOGGER_PHOTO_ID_5441761516392349234" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-7569559202551753035?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/7569559202551753035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/02/synapse-config-admin-now-support-syntax.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7569559202551753035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7569559202551753035'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/02/synapse-config-admin-now-support-syntax.html' title='Synapse config admin now supports syntax highlighting'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_hha64Sbr4OI/S4UFRHj0_jI/AAAAAAAAACQ/TUsEiTP-E9w/s72-c/config.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-8812300779745223695</id><published>2010-02-23T20:26:00.003+05:30</published><updated>2010-02-23T20:40:46.140+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='Iridium'/><title type='text'>Priority based mediation in WSO2 ESB</title><content type='html'>Another exiting new feature of upcoming &lt;span style="font-weight: bold;"&gt;Iridium&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;based release of WSO2 ESB (version 3.0.0) is priority based mediation. With this new feature you can configure WSO2 ESB to serve high priority messages more.  This will also grantee that when the load is low still the low priority messages are served. Supun has written a detailed description (&lt;a href="http://supunk.blogspot.com/2010/02/priority-based-mediation-for-wso2-esb.html"&gt;part1&lt;/a&gt;, &lt;a href="http://supunk.blogspot.com/2010/02/priority-based-mediation-for-wso2-esb_23.html"&gt;part2&lt;/a&gt;) about the new priority based mediation supports in WSO2 ESB.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-8812300779745223695?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/8812300779745223695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/02/priority-based-mediation-in-wso2-esb.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/8812300779745223695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/8812300779745223695'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/02/priority-based-mediation-in-wso2-esb.html' title='Priority based mediation in WSO2 ESB'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-1048320176569700171</id><published>2010-02-20T11:03:00.003+05:30</published><updated>2010-02-20T11:41:48.353+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSMQ transport'/><category scheme='http://www.blogger.com/atom/ns#' term='messeginig'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='MSMQ'/><title type='text'>Experimental MSMQ transport for WSO2 ESB</title><content type='html'>Some time back I wrote a &lt;a href="http://www.microsoft.com/windowsserver2003/technologies/msmq/default.mspx"&gt;MSMQ&lt;/a&gt; transport for WSO2 ESB. It's still in the experimental stage (meaning that the code is not released, not QAed , not much feature support). But I thought I'd put a note here about the current status so that the work won't go unnoticed.&lt;br /&gt;The aim of the MSMQ transport is to connect to a MSMQ broker running on a Windows machine. Microsoft Message Queuing or MSMQ is the message queueing implementation developed by Microsoft. And it's distributed as a part of their operating system. So you can use this transport to connect to a MSMQ from WSO2 ESB.&lt;br /&gt;MSMQ has a API for C/C++, so that C/C++ programs can use the broker functionality. The bride that was used which connect the Java programs to &lt;a href="http://msdn.microsoft.com/en-us/library/ms707133%28VS.85%29.aspx"&gt;MSMQ C/C++ API&lt;/a&gt; is the &lt;a href="http://www.codeplex.com/MsmqJava"&gt;library&lt;/a&gt; developed by &lt;a href="http://blogs.msdn.com/dotnetinterop/About.aspx"&gt;Dino Chiesa&lt;/a&gt; ( This is a &lt;a href="http://blogs.msdn.com/dotnetinterop/archive/2005/02/28/java-and-net-interop-via-msmq.aspx"&gt;summary&lt;/a&gt; of the usage of the library).&lt;br /&gt;Currently only text message are supports by the transport. I am planing to use the &lt;a href="http://camel.apache.org/msmq"&gt;Camel:msmq&lt;/a&gt; library to bride the ESB together with MSMQ when I have some time. If you like to have a look at the code and give a try the code is &lt;a href="https://wso2.org/repos/wso2/people/rajika/esb-msmq-transport/"&gt;here&lt;/a&gt;. If the things didn't work as expected, you'll need some C/C++ programming skills to get things working.&lt;br /&gt;Following are two examples which shows the MSMQ transport listener and the MSMQ transport sender in action respectively.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;&amp;lt;definitions xmlns="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt;    &amp;lt;proxy name="SimpleStockQuoteService" transports="msmq"&amp;gt;&lt;br /&gt;        &amp;lt;target&amp;gt;&lt;br /&gt;            &amp;lt;inSequence&amp;gt;&lt;br /&gt;                &amp;lt;property action="set" name="OUT_ONLY" value="true"/&amp;gt;&lt;br /&gt;            &amp;lt;/inSequence&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;outSequence&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/conf/sample/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;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&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="http"&amp;gt;&lt;br /&gt;        &amp;lt;target&amp;gt;&lt;br /&gt;            &amp;lt;endpoint&amp;gt;&lt;br /&gt;      &amp;lt;address uri="msmq:SimpleStockQuoteService"/&amp;gt;&lt;br /&gt;            &amp;lt;/endpoint&amp;gt;&lt;br /&gt;            &amp;lt;inSequence&amp;gt;&lt;br /&gt;                &amp;lt;property action="set" name="OUT_ONLY" value="true"/&amp;gt;&lt;br /&gt;            &amp;lt;/inSequence&amp;gt;&lt;br /&gt;            &amp;lt;outSequence&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/conf/sample/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;br /&gt;&lt;br /&gt;You'll also need to have the following configuration for MSMQ transport listener/sender in axis2.xml&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;&amp;lt;transportSender name="msmq" class="org.apache.axis2.transport.msmq.MSMQSender"/&amp;gt;&lt;br /&gt;&amp;lt;transportListener name="msmq" class="org.apache.axis2.transport.msmq.MSMQListener"/&amp;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/8648017967226408418-1048320176569700171?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/1048320176569700171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/02/experimental-msmq-transport-for-wso2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/1048320176569700171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/1048320176569700171'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/02/experimental-msmq-transport-for-wso2.html' title='Experimental MSMQ transport for WSO2 ESB'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-4388698387694671863</id><published>2010-02-10T09:35:00.005+05:30</published><updated>2010-02-12T22:39:49.152+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='Iridium'/><category scheme='http://www.blogger.com/atom/ns#' term='VFS transport'/><category scheme='http://www.blogger.com/atom/ns#' term='samba'/><category scheme='http://www.blogger.com/atom/ns#' term='CIFS'/><title type='text'>WSO2 ESB's VFS transport now supports accessing a windows share</title><content type='html'>The upcoming &lt;b&gt;Iridium &lt;/b&gt;( this is the code name for upcoming carbon 3.0.0 release) based release of WSO2 ESB (version 3.0.0) is &lt;a href="https://wso2.org/jira/browse/ESBJAVA-624"&gt;now support&lt;/a&gt; accessing a windows share through a &lt;a href="http://www.samba.org/cifs/"&gt;CIFS&lt;/a&gt;, which stands for Common Internet File System( such as a &lt;a href="http://samba.org/"&gt;Samba&lt;/a&gt; server, or a Windows share). This feature is added into the VFS transport of WSO2 ESB.&lt;br /&gt;&lt;p&gt;&lt;b&gt;URI Format&lt;/b&gt; &lt;/p&gt; &lt;p&gt;&lt;code&gt;smb://[                     &lt;i&gt;username&lt;/i&gt; [:                     &lt;i&gt;password&lt;/i&gt; ]@]                     &lt;i&gt;hostname&lt;/i&gt; [:                     &lt;i&gt;port&lt;/i&gt; ][                     &lt;i&gt;absolute-path&lt;/i&gt; ]                 &lt;/code&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;Examples&lt;/b&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;code&gt;smb://somehost/home&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Currently a &lt;a href="https://svn.wso2.org/repos/wso2/trunk/carbon/dependencies/commons-vfs/"&gt;patched version&lt;/a&gt; of &lt;a href="http://commons.apache.org/vfs/index.html"&gt;commons-vfs&lt;/a&gt; is used by WSO2 ESB due to the &lt;a href="http://issues.apache.org/jira/browse/VFS-178"&gt;issue reported&lt;/a&gt;. Following is an example configuration.&lt;/p&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;~  Licensed to the Apache Software Foundation (ASF) under one&lt;br /&gt;~  or more contributor license agreements.  See the NOTICE file&lt;br /&gt;~  distributed with this work for additional information&lt;br /&gt;~  regarding copyright ownership.  The ASF licenses this file&lt;br /&gt;~  to you under the Apache License, Version 2.0 (the&lt;br /&gt;~  "License"); you may not use this file except in compliance&lt;br /&gt;~  with the License.  You may obtain a copy of the License at&lt;br /&gt;~&lt;br /&gt;~   http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;~&lt;br /&gt;~  Unless required by applicable law or agreed to in writing,&lt;br /&gt;~  software distributed under the License is distributed on an&lt;br /&gt;~   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY&lt;br /&gt;~  KIND, either express or implied.  See the License for the&lt;br /&gt;~  specific language governing permissions and limitations&lt;br /&gt;~  under the License.&lt;br /&gt;--&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Using the  file system as transport medium using VFS transport listener and sender --&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="vfs"&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="transport.vfs.FileURI"&amp;gt;smb://host/vfs/in/test.xml&amp;lt;/parameter&amp;gt; CHANGE&lt;br /&gt;     &amp;lt;parameter name="transport.vfs.ContentType"&amp;gt;text/xml&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.PollInterval"&amp;gt;15&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name="transport.vfs.MoveAfterProcess"&amp;gt;smb://host/vfs/original&amp;lt;/parameter&amp;gt; CHANGE&lt;br /&gt;     &amp;lt;parameter name="transport.vfs.MoveAfterFailure"&amp;gt;smb://host/vfs/original&amp;lt;/parameter&amp;gt; CHANGE&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.vfs.ActionAfterFailure"&amp;gt;MOVE&amp;lt;/parameter&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;target&amp;gt;&lt;br /&gt;         &amp;lt;endpoint&amp;gt;&lt;br /&gt;             &amp;lt;address format="soap12" 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;property name="transport.vfs.ReplyFileName"&lt;br /&gt;                       expression="fn:concat(fn:substring-after(get-property('MessageID'), 'urn:uuid:'), '.xml')" scope="transport"/&amp;gt;&lt;br /&gt;             &amp;lt;property action="set" name="OUT_ONLY" value="true"/&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="vfs:smb://host/vfs/out"/&amp;gt; CHANGE&lt;br /&gt;                 &amp;lt;/endpoint&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/conf/sample/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;br /&gt;As a result of moving into the latest version of commons-vfs libraries following transport are also available in the WSO2 ESB's VFS transport.&lt;br /&gt;&lt;br /&gt;1. FTP&lt;br /&gt;2. Local file&lt;br /&gt;3. HTTP and HTTPs&lt;br /&gt;4. SFTP&lt;br /&gt;5. Temporary Files&lt;br /&gt;6. Zip, tar and jar&lt;br /&gt;7. gzip, bzip2&lt;br /&gt;8. res&lt;br /&gt;9. ram&lt;br /&gt;10. mime&lt;br /&gt;11. WebDAV&lt;br /&gt;12. CIFS&lt;br /&gt;&lt;br /&gt;More information is &lt;a href="http://commons.apache.org/vfs/filesystems.html"&gt;available&lt;/a&gt; here. &lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="http://commons.apache.org/vfs/filesystems.html#Zip,%20Jar%20and%20Tar"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-4388698387694671863?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/4388698387694671863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/02/wso2-esbs-vfs-transport-now-support.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/4388698387694671863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/4388698387694671863'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/02/wso2-esbs-vfs-transport-now-support.html' title='WSO2 ESB&apos;s VFS transport now supports accessing a windows share'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-8626131353715721811</id><published>2010-02-05T13:55:00.003+05:30</published><updated>2010-02-05T19:24:43.312+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='JMS'/><title type='text'>JMS two way routing scenario with WSO2 ESB</title><content type='html'>Following sample configuration shows how to use the JMS transport of WSO2 ESB in a synchronous JMS two way (request-response) scenario.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;&amp;lt;!-- Switching from http/s to JMS --&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="http"&amp;gt;&lt;br /&gt;        &amp;lt;target&amp;gt;&lt;br /&gt;            &amp;lt;endpoint&amp;gt;&lt;br /&gt;  &amp;lt;address uri="jms:/SimpleStockQuoteService?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&amp;amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;amp;java.naming.provider.url=tcp://localhost:61616&amp;amp;transport.jms.DestinationType=queue"/&amp;gt;&lt;br /&gt;            &amp;lt;/endpoint&amp;gt;            &lt;br /&gt;            &amp;lt;inSequence&amp;gt;                            &lt;br /&gt;              &amp;lt;property action="set" name="JMS_REPLY_TO" value="dynamicQueues/ReplyQueue" scope="axis2"/&amp;gt;&lt;br /&gt;              &amp;lt;property action="set" name="transport.jms.ContentTypeProperty" value="Content-Type" scope="axis2"/&amp;gt;&lt;br /&gt;            &amp;lt;/inSequence&amp;gt;&lt;br /&gt;            &amp;lt;outSequence&amp;gt;&lt;br /&gt;              &amp;lt;property action="remove" name="TRANSPORT_HEADERS" scope="axis2"/&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;/definitions&amp;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/8648017967226408418-8626131353715721811?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/8626131353715721811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/02/jms-two-routing-scenario-with-wso2-esb.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/8626131353715721811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/8626131353715721811'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/02/jms-two-routing-scenario-with-wso2-esb.html' title='JMS two way routing scenario with WSO2 ESB'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-7778210804061409555</id><published>2010-02-03T11:33:00.000+05:30</published><updated>2010-02-03T11:34:19.927+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><title type='text'>WSO2 Enterprise Service Bus 2.1.3 Released!</title><content type='html'>&lt;p&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;p&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;p&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;p&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;h3&gt;How to Run &lt;/h3&gt; &lt;ol 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;h3&gt;New Features of WSO2 ESB 2.1.3&lt;/h3&gt; &lt;ul&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;h3&gt;Key Features of WSO2 ESB&lt;/h3&gt; &lt;ul&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;h3&gt;Get Involved&lt;/h3&gt; &lt;p&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;p&gt; You can also watch how they are resolved, and comment on the progress. &lt;/p&gt; &lt;h3&gt;Contact Us&lt;/h3&gt; &lt;p&gt; Get in touch with the product team via the mailing lists: &lt;/p&gt; &lt;ul&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;p&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;p&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;h3&gt;Support&lt;/h3&gt; &lt;p&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&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;p&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;p&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/8648017967226408418-7778210804061409555?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/7778210804061409555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/02/wso2-enterprise-service-bus-213.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7778210804061409555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7778210804061409555'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/02/wso2-enterprise-service-bus-213.html' title='WSO2 Enterprise Service Bus 2.1.3 Released!'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-283258793539808351</id><published>2010-01-25T12:35:00.006+05:30</published><updated>2010-02-15T08:09:43.079+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='JMs transaction'/><title type='text'>Local JMS transaction support in WSO2 ESB</title><content type='html'>This is another example showing the JMS local transaction support in action. In this senario a JMS message will be read  from a JMS queue and a record will be added into the database. In a failure case ( for ex: the same record is avialble in the database) the transaction will be rollback and the jms message will be re-delivered to the JMS queue. I have tested the following scenario with activemq JMS provider.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;definitions xmlns:syn="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt;&amp;lt;proxy name="StockQuoteProxy" transports="jms" startOnLoad="true"&amp;gt;&lt;br /&gt;   &amp;lt;target faultSequence="myFaultHandler"&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;inSequence&amp;gt;&lt;br /&gt;           &amp;lt;property name="OUT_ONLY" value="true"/&amp;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;password&amp;gt;esb&amp;lt;/password&amp;gt;&lt;br /&gt;                       &amp;lt;user&amp;gt;esb&amp;lt;/user&amp;gt;&lt;br /&gt;                       &amp;lt;url&amp;gt;jdbc:derby://localhost:1527/esbdb;create=false&amp;lt;/url&amp;gt;&lt;br /&gt;                       &amp;lt;driver&amp;gt;org.apache.derby.jdbc.ClientDriver&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;INSERT into company values ('MSFT','c1',0.0)&amp;lt;/sql&amp;gt;&lt;br /&gt;               &amp;lt;/statement&amp;gt;&lt;br /&gt;           &amp;lt;/dbreport&amp;gt;&lt;br /&gt;       &amp;lt;/inSequence&amp;gt;&lt;br /&gt;       &amp;lt;outSequence&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;parameter name="transport.jms.ContentType"&amp;gt;&lt;br /&gt;       &amp;lt;rules xmlns="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt;           &amp;lt;jmsProperty&amp;gt;contentType&amp;lt;/jmsProperty&amp;gt;&lt;br /&gt;           &amp;lt;default&amp;gt;application/xml&amp;lt;/default&amp;gt;&lt;br /&gt;       &amp;lt;/rules&amp;gt;&lt;br /&gt;   &amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/proxy&amp;gt;&lt;br /&gt;&amp;lt;sequence name="myFaultHandler"&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;/makefault&amp;gt;&lt;br /&gt;   &amp;lt;property name="SET_ROLLBACK_ONLY" value="true" scope="axis2"/&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"&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;/definitions&amp;gt;&lt;br /&gt;&lt;/pre&gt;You can note how the transaction is rollback if a failure occurs in the fault sequence.&lt;br /&gt;You can test the sample very similar to sample &lt;a href="http://wso2.org/project/esb/java/2.1.2/docs/samples/transport_samples.html#Sample250"&gt;#250&lt;/a&gt;, in the ESB &lt;a href="http://wso2.org/project/esb/java/2.1.2/docs/samples_index.html"&gt;documentation&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You also need to configure the JMS transport receiver(in axis2.xml) to participate in the local JMS transaction with the &lt;span style="font-weight: bold;"&gt;transport.jms.SessionTransacted&lt;/span&gt; property set to true which gives the following configuration (Note that there is a &lt;a href="https://issues.apache.org/jira/browse/WSCOMMONS-515"&gt;bug&lt;/a&gt; which need to fix to get this working).&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;transportReceiver name='jms' class='org.apache.axis2.transport.jms.JMSListener'&amp;gt;&lt;br /&gt;&amp;lt;parameter name='default' locked='false'&amp;gt;&lt;br /&gt;     &amp;lt;parameter name='java.naming.factory.initial' locked='false'&amp;gt;org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name='java.naming.provider.url' locked='false'&amp;gt;tcp://localhost:61616&amp;lt;/parameter&amp;gt;&lt;br /&gt;     &amp;lt;parameter name='transport.jms.ConnectionFactoryJNDIName' locked='false'&amp;gt;QueueConnectionFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name='transport.jms.ConnectionFactoryType' locked='false'&amp;gt;queue&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name='transport.jms.SessionTransacted' locked='false'&amp;gt;true&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;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-283258793539808351?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/283258793539808351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/01/local-jms-transaction-support-in-wso2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/283258793539808351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/283258793539808351'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/01/local-jms-transaction-support-in-wso2.html' title='Local JMS transaction support in WSO2 ESB'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-7203029446049209671</id><published>2010-01-23T00:33:00.006+05:30</published><updated>2010-01-23T12:58:16.709+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='endpints'/><title type='text'>WSO2 ESB endpoint timeout, retry and suspend related configuration</title><content type='html'>Update: I just submitted a &lt;a href="https://issues.apache.org/jira/browse/SYNAPSE-604"&gt;patch&lt;/a&gt; to Synapse to rename the action element name to responseAction in timeout configuration to give a more meaningful name to the element.&lt;br /&gt;It seems that timeout, retry and the suspend related configuration of &lt;a href="http://wso2.org/projects/esb/java"&gt;WSO2 ESB&lt;/a&gt; bit messy. So I just post the configuration here for information. Also note that the &lt;span style="font-weight: bold;"&gt;suspenDurationOnFailure &lt;/span&gt;element is there for backward compatibility with Synpase 1.2.&lt;br /&gt;&lt;a href="http://supunk.blogspot.com/"&gt;Supun&lt;/a&gt; also has written &lt;a href="http://wso2.org/library/articles/wso2-enterprise-service-bus-endpoint-error-handling"&gt;an article&lt;/a&gt; on &lt;a href="http://wso2.org/"&gt;oxygen tank&lt;/a&gt; which you can read for more information.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;timeout&amp;gt;&lt;br /&gt;   &amp;lt;duration&amp;gt;time in millisecond(default is 60s, the nHttp time out)&amp;lt;/duration&amp;gt;&lt;br /&gt;   &amp;lt;action&amp;gt;discard|fault&amp;lt;/action&amp;gt;&lt;br /&gt;&amp;lt;/timeout&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;markForSuspension&amp;gt;&lt;br /&gt;   &amp;lt;errorCodes&amp;gt;the comma seprated error codes&amp;lt;/errorCodes&amp;gt;&lt;br /&gt;   &amp;lt;retriesBeforeSuspension&amp;gt;integer&amp;lt;/retriesBeforeSuspension&amp;gt;&lt;br /&gt;   &amp;lt;retryDelay&amp;gt;delay between each retry in milliseconds &amp;lt;/retryDelay&amp;gt;&lt;br /&gt;&amp;lt;/markForSuspension&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;suspendOnFailure&amp;gt;&lt;br /&gt;   &amp;lt;errorCodes&amp;gt;the comma seprated error codes&amp;lt;/errorCodes&amp;gt;&lt;br /&gt;   &amp;lt;initialDuration&amp;gt;initial duration to suspend the endpoint in milisecond&amp;lt;/intialDuration&amp;gt;&lt;br /&gt;   &amp;lt;progressionFactor&amp;gt;&amp;lt;/progressionFactor&amp;gt;&lt;br /&gt;   &amp;lt;maximumDuration&amp;gt;maximum duration to suspend the endpoint in milisecond&amp;lt;/maximumDuration&amp;gt;&lt;br /&gt;&amp;lt;/suspendOnFailure&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;If you have specified the &lt;span style="font-weight: bold;"&gt;suspenDurationOnFailure&lt;/span&gt; only the duration will consider as the initial duration and the progression factor is default to 1.0(float). If you have specified both &lt;span style="font-weight: bold;"&gt;suspenDurationOnFailure&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;suspendOnFailure &lt;/span&gt;both elements the values in &lt;span style="font-weight: bold;"&gt;suspenDurationOnFailure &lt;/span&gt; will be override by the values of &lt;span style="font-weight: bold;"&gt;suspendOnFailure.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-7203029446049209671?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/7203029446049209671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/01/wso2-esb-endpoint-timeout-retry-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7203029446049209671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7203029446049209671'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/01/wso2-esb-endpoint-timeout-retry-and.html' title='WSO2 ESB endpoint timeout, retry and suspend related configuration'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-5312166226774004237</id><published>2010-01-18T21:14:00.005+05:30</published><updated>2010-02-15T08:06:46.692+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='JMs transaction'/><category scheme='http://www.blogger.com/atom/ns#' term='JMB'/><title type='text'>More distributed JMS transaction examples</title><content type='html'>This is another example of &lt;a href="http://wso2.org/projects/esb/java"&gt;WSO2 ESB&lt;/a&gt; JMS distributed transaction support. In this scenario a record will be delete from a database and will add that to a JMS queue. In failure case no record will be deleted from the database and no record is added to the JMS queue. This also requires that you deploy WSO2 ESB on JBoss application server.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;definitions xmlns:syn="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt;   &amp;lt;proxy name="StockQuoteProxy" transports="http" 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;property name="OUT_ONLY" value="true"/&amp;gt;&lt;br /&gt;               &amp;lt;transaction action="new"/&amp;gt;&lt;br /&gt;               &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;                   &amp;lt;property name="text" value="** Start the Transaction**"/&amp;gt;&lt;br /&gt;               &amp;lt;/log&amp;gt;&lt;br /&gt;               &amp;lt;dbreport useTransaction="true"&amp;gt;&lt;br /&gt;                   &amp;lt;connection&amp;gt;&lt;br /&gt;                       &amp;lt;pool&amp;gt;&lt;br /&gt;                           &amp;lt;password&amp;gt;esb&amp;lt;/password&amp;gt;&lt;br /&gt;                           &amp;lt;user&amp;gt;esb&amp;lt;/user&amp;gt;&lt;br /&gt;                           &amp;lt;dsName&amp;gt;java:jdbc/XADerbyDS&amp;lt;/dsName&amp;gt;&lt;br /&gt;                           &amp;lt;url&amp;gt;localhost:1099&amp;lt;/url&amp;gt;&lt;br /&gt;                           &amp;lt;icClass&amp;gt;org.jnp.interfaces.NamingContextFactory&amp;lt;/icClass&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;insert into company values('IBM','c1',56)&amp;lt;/sql&amp;gt;&lt;br /&gt;                   &amp;lt;/statement&amp;gt;&lt;br /&gt;               &amp;lt;/dbreport&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="jms:/SimpleStockQuoteService?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&amp;amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;amp;java.naming.provider.url=tcp://localhost:61616&amp;amp;transport.jms.DestinationType=queue"/&amp;gt;&lt;br /&gt;                   &amp;lt;/endpoint&amp;gt;&lt;br /&gt;               &amp;lt;/send&amp;gt;&lt;br /&gt;               &amp;lt;transaction action="commit"/&amp;gt;&lt;br /&gt;               &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;                   &amp;lt;property name="text" value="** Commit the Transaction**"/&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;send/&amp;gt;&lt;br /&gt;           &amp;lt;/outSequence&amp;gt;&lt;br /&gt;           &amp;lt;faultSequence&amp;gt;&lt;br /&gt;               &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;                   &amp;lt;property name="text" value="** Rollback the Transaction**"/&amp;gt;&lt;br /&gt;               &amp;lt;/log&amp;gt;&lt;br /&gt;               &amp;lt;transaction action="rollback"/&amp;gt;&lt;br /&gt;           &amp;lt;/faultSequence&amp;gt;&lt;br /&gt;       &amp;lt;/target&amp;gt;&lt;br /&gt;       &amp;lt;publishWSDL uri="file:/home/rajika/work/tx/esb/repository/samples/resources/proxy/sample_proxy_1.wsdl"/&amp;gt;&lt;br /&gt;   &amp;lt;/proxy&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;/definitions&amp;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/8648017967226408418-5312166226774004237?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/5312166226774004237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/01/more-distributed-jms-transaction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5312166226774004237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5312166226774004237'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/01/more-distributed-jms-transaction.html' title='More distributed JMS transaction examples'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-6340240533847013874</id><published>2010-01-17T10:55:00.004+05:30</published><updated>2010-01-17T11:04:19.526+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Haiti eathquake'/><title type='text'>Help finding information of missing people in Haiti earthquake</title><content type='html'>&lt;iframe src="http://haiticrisis.appspot.com/?small=yes" style="border: 2px dashed rgb(119, 119, 204);" width="350" frameborder="0" height="300"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;If you like to embed this gadget in your website information &lt;a href="http://haiticrisis.appspot.com/embed"&gt;available&lt;/a&gt; here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-6340240533847013874?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/6340240533847013874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/01/help-finding-information-on-missing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/6340240533847013874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/6340240533847013874'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/01/help-finding-information-on-missing.html' title='Help finding information of missing people in Haiti earthquake'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-3774650576868406606</id><published>2010-01-12T06:52:00.004+05:30</published><updated>2010-01-12T07:05:37.490+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='NFA'/><category scheme='http://www.blogger.com/atom/ns#' term='parser'/><category scheme='http://www.blogger.com/atom/ns#' term='compiler'/><title type='text'>Regular expression theories</title><content type='html'>I found these &lt;a href="http://swtch.com/%7Ersc/regexp"&gt;articles&lt;/a&gt; really interested in reading by &lt;a href="http://swtch.com/%7Ersc"&gt;Russ Cox&lt;/a&gt;. He clearly explains how &lt;a href="http://en.wikipedia.org/wiki/Ken_Thompson"&gt;Ken Thompson's&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Nondeterministic_finite_state_machine"&gt;NFA&lt;/a&gt; based regular expression engine is &lt;a href="http://swtch.com/%7Ersc/regexp/regexp1.html"&gt;faster&lt;/a&gt; than that of the Perl's one. Thanks for the great article.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-3774650576868406606?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/3774650576868406606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/01/regular-expression-theories.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/3774650576868406606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/3774650576868406606'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/01/regular-expression-theories.html' title='Regular expression theories'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-1056150044231382840</id><published>2010-01-10T21:55:00.007+05:30</published><updated>2010-01-10T22:10:20.692+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='parser'/><category scheme='http://www.blogger.com/atom/ns#' term='compiler'/><title type='text'>JavaCC parser rule file for simple-java programming language</title><content type='html'>I just wrote a &lt;a href="https://javacc.dev.java.net/"&gt;JavaCC&lt;/a&gt; parser rule file( &lt;a href="https://wso2.org/repos/wso2/people/rajika/misc/sjava.jj"&gt;sjava.jj&lt;/a&gt;) for &lt;a href="http://www.cs.usfca.edu/%7Egalles/compilerdesign/"&gt;simple-java&lt;/a&gt; (which basically a subset of Java programming language). I'll write a hand code parser for the same language when I have some time.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;options {&lt;br /&gt;IGNORE_CASE = true;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;PARSER_BEGIN(sjava)&lt;br /&gt;&lt;br /&gt;public class sjava {&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;PARSER_END(sjava)&lt;br /&gt;&lt;br /&gt;SKIP:&lt;br /&gt;{&lt;br /&gt;&amp;lt;" "&amp;gt;&lt;br /&gt;|   &amp;lt;"\n"&amp;gt;&lt;br /&gt;|   &amp;lt;"\t"&amp;gt;&lt;br /&gt;|   &amp;lt;"//"(~["\n"])*"\n"&amp;gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;SKIP:&lt;br /&gt;{&lt;br /&gt;&amp;lt;"/*"&amp;gt;:IN_COMMENT&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&amp;lt;IN_COMMENT&amp;gt;&lt;br /&gt;SKIP:&lt;br /&gt;{&lt;br /&gt;&amp;lt;"*/"&amp;gt;:DEFAULT&lt;br /&gt;|   &amp;lt;"/*"&amp;gt;:NESTTED_IN_COMMENT&lt;br /&gt;|   &amp;lt;~[]&amp;gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&amp;lt;NESTTED_IN_COMMENT&amp;gt;&lt;br /&gt;SKIP:&lt;br /&gt;{&lt;br /&gt;&amp;lt;"*/"&amp;gt;:IN_COMMENT&lt;br /&gt;|   &amp;lt;~[]&amp;gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;TOKEN: /* Resrved word*/&lt;br /&gt;{&lt;br /&gt;&amp;lt;ELSE: "else"&amp;gt;&lt;br /&gt;|   &amp;lt;FOR: "for"&amp;gt;&lt;br /&gt;|   &amp;lt;WHILE:"while"&amp;gt;&lt;br /&gt;|   &amp;lt;RETURN:"return"&amp;gt;&lt;br /&gt;|   &amp;lt;CLASS:"class"&amp;gt;&lt;br /&gt;|   &amp;lt;DO:"do"&amp;gt;&lt;br /&gt;|   &amp;lt;FALSE:"false"&amp;gt;&lt;br /&gt;|   &amp;lt;TRUE:"true"&amp;gt;&lt;br /&gt;|   &amp;lt;IF:"if"&amp;gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;TOKEN: /* Integer Literals */&lt;br /&gt;{&lt;br /&gt;&amp;lt;INTEGER_LITERAL: (["0"-"9"])+&amp;gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;TOKEN: /* Identifiers */&lt;br /&gt;{&lt;br /&gt;&amp;lt;IDENTIFIER: ["a"-"z","_"](["a"-"z","0"-"9"])*&amp;gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;TOKEN: /* Symbols*/&lt;br /&gt;{&lt;br /&gt;&amp;lt;PLUS: "+"&amp;gt;&lt;br /&gt;|   &amp;lt;MINUS:"-"&amp;gt;&lt;br /&gt;|   &amp;lt;MULTIPLY:"*"&amp;gt;&lt;br /&gt;|   &amp;lt;DIVIDE:"/"&amp;gt;&lt;br /&gt;|   &amp;lt;EQUAL:"=="&amp;gt;&lt;br /&gt;|   &amp;lt;GREATER_THAN:"&amp;gt;"&amp;gt;&lt;br /&gt;|   &amp;lt;NOT:"!"&amp;gt;&lt;br /&gt;|   &amp;lt;LEFT_BRACE:"{"&amp;gt;&lt;br /&gt;|   &amp;lt;LEFT_BRACKET:"["&amp;gt;&lt;br /&gt;|   &amp;lt;RIGHT_BRACKET:"]"&amp;gt;&lt;br /&gt;|   &amp;lt;PERIOD:"."&amp;gt;&lt;br /&gt;|   &amp;lt;COMMA:","&amp;gt;&lt;br /&gt;|   &amp;lt;GREATER_THAN_OR_EQUEAL:"&amp;gt;="&amp;gt;&lt;br /&gt;|   &amp;lt;SEMICOLON:";"&amp;gt;&lt;br /&gt;|   &amp;lt;AND:"&amp;amp;&amp;amp;"&amp;gt;&lt;br /&gt;|   &amp;lt;RIGHT_BRACE:"}"&amp;gt;&lt;br /&gt;|   &amp;lt;LEFT_PARENTHESIS:"("&amp;gt;&lt;br /&gt;|   &amp;lt;RIGHT_PARAENTHESIS:")"&amp;gt;&lt;br /&gt;|   &amp;lt;NOT_EQUAL:"!="&amp;gt;&lt;br /&gt;|   &amp;lt;LESS_THAN_OR_EQUEAL:"&amp;lt;="&amp;gt;&lt;br /&gt;|   &amp;lt;LESS_THAN:"&amp;lt;"&amp;gt;&lt;br /&gt;|   &amp;lt;GETS:"="&amp;gt;&lt;br /&gt;|   &amp;lt;OR:"||"&amp;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/8648017967226408418-1056150044231382840?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/1056150044231382840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/01/i-just-wrote-javacc-parser-rule-file.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/1056150044231382840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/1056150044231382840'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/01/i-just-wrote-javacc-parser-rule-file.html' title='JavaCC parser rule file for simple-java programming language'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-2590178594740178086</id><published>2010-01-10T10:05:00.001+05:30</published><updated>2010-02-15T08:07:22.728+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='JMS'/><category scheme='http://www.blogger.com/atom/ns#' term='JMs transaction'/><title type='text'>The enhanced JMS transport</title><content type='html'>The &lt;a href="http://ws.apache.org/commons/"&gt;WS-Commond&lt;/a&gt; JMS transport which powered the &lt;a href="http://wso2.org/projects/esb/java"&gt;WSO2 ESB&lt;/a&gt; JMS transport has several advance configuration options for local JMS transactions and JTA transactions. It seems the documentation is missing, so I just put the configuration options here for your information.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener"&amp;gt;&lt;br /&gt;&amp;lt;parameter name="myTopicConnectionFactory"&amp;gt;&lt;br /&gt;&amp;lt;parameter name="java.naming.factory.initial"&amp;gt;org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="java.naming.provider.url"&amp;gt;tcp://localhost:61616&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="transport.jms.ConnectionFactoryJNDIName"&amp;gt;TopicConnectionFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="transport.jms.ConnectionFactoryType"&amp;gt;topic&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="transport.jms.JMSSpecVersion"&amp;gt;1.0.2b&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/parameter&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;parameter name="myQueueConnectionFactory"&amp;gt;&lt;br /&gt;&amp;lt;parameter name="java.naming.factory.initial"&amp;gt;org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="java.naming.provider.url"&amp;gt;tcp://localhost:61616&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="transport.jms.ConnectionFactoryJNDIName"&amp;gt;QueueConnectionFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="transport.jms.ConnectionFactoryType"&amp;gt;queue&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="transport.jms.JMSSpecVersion"&amp;gt;1.1&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/parameter&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;parameter name="default"&amp;gt;&lt;br /&gt;&amp;lt;parameter name="java.naming.factory.initial"&amp;gt;org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="java.naming.provider.url"&amp;gt;tcp://localhost:61616&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="transport.jms.ConnectionFactoryJNDIName"&amp;gt;ConnectionFactory&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;br /&gt;&amp;lt;transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender"&amp;gt;&lt;br /&gt;&amp;lt;parameter name="myTopicConnectionFactory"&amp;gt;&lt;br /&gt;&amp;lt;parameter name="java.naming.factory.initial"&amp;gt;org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="java.naming.provider.url"&amp;gt;tcp://localhost:61616&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="transport.jms.ConnectionFactoryJNDIName"&amp;gt;TopicConnectionFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="transport.jms.JMSSpecVersion"&amp;gt;1.0.2b&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="transport.jms.CacheLevel"&amp;gt;producer&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/parameter&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;parameter name="myQueueConnectionFactory"&amp;gt;&lt;br /&gt;&amp;lt;parameter name="java.naming.factory.initial"&amp;gt;org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="java.naming.provider.url"&amp;gt;tcp://localhost:61616&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="transport.jms.ConnectionFactoryJNDIName"&amp;gt;QueueConnectionFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="transport.jms.JMSSpecVersion"&amp;gt;1.0.2b&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="transport.jms.CacheLevel"&amp;gt;producer&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/parameter&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;parameter name="default"&amp;gt;&lt;br /&gt;&amp;lt;parameter name="java.naming.factory.initial"&amp;gt;org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="java.naming.provider.url"&amp;gt;tcp://localhost:61616&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="transport.jms.ConnectionFactoryJNDIName"&amp;gt;ConnectionFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="transport.jms.CacheLevel"&amp;gt;connection&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/transportSender&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The Transport Listener and Sender both allows the user to configure one or more logical JMS Connection Factories, which are named definitions as shown above. Any remaining parameters maybe defined at the service level via the services.xml. The applicable set of parameters for a service would be the union of the properties from the services.xml and the corresponding logical connection factory. A description of the each of the additional configuration options available in the following table.&lt;br /&gt;&lt;br /&gt;&lt;table border="1" bordercolor="#000000" cellpadding="4" cellspacing="0" width="80%"&gt;&lt;col width="10%"&gt;&lt;col width="10%"&gt;&lt;col width="50%"&gt;&lt;col width="5%"&gt;&lt;col width="5%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Transport level&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Listening&lt;/td&gt;&lt;td&gt;Sending&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;JNDI&lt;/td&gt;&lt;td&gt;java.naming.factory.initial&lt;/td&gt;&lt;td&gt;The JNDI InitialContext factory class&lt;/td&gt;&lt;td&gt;Required&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;java.naming.provider.url&lt;/td&gt;&lt;td&gt;JNDI Provider URL&lt;/td&gt;&lt;td&gt;Required&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;java.naming.security.principal&lt;/td&gt;&lt;td&gt;Username for JNDI access&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;java.naming.security.credentials&lt;/td&gt;&lt;td&gt;Password for JNDI access&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Transactions&lt;/td&gt;&lt;td&gt;transport.Transactionality&lt;/td&gt;&lt;td&gt;Desired transactionality. One of none /local / jta&lt;/td&gt;&lt;td&gt;Defaults to &lt;b&gt;none&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.UserTxnJNDIName&lt;/td&gt;&lt;td&gt;JNDI name to be used to obtain a UserTransaction&lt;/td&gt;&lt;td&gt;Defaults to "java:comp/UserTransaction"&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.CacheUserTxn&lt;/td&gt;&lt;td&gt;Generally its safe and more efficient to cache the UserTransaction reference from JNDI. One of true/ false&lt;/td&gt;&lt;td&gt;Defaults to &lt;b&gt;true&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.jms.SessionTransacted&lt;/td&gt;&lt;td&gt;Should the JMS Session be transacted. One of true/ false&lt;/td&gt;&lt;td&gt;Defaults to &lt;b&gt;true&lt;/b&gt; when local transactions are used&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.jms.SessionAcknowledgement&lt;/td&gt;&lt;td&gt;JMS Session acknowledgement mode to be used. One of AUTO_ACKNOWLEDGE | CLIENT_ACKNOWLEDGE | DUPS_OK_ACKNOWLEDGE |SESSION_TRANSACTED&lt;/td&gt;&lt;td&gt;Defaults to &lt;b&gt;AUTO_ACKNOWLEDGE&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Connection&lt;/td&gt;&lt;td&gt;transport.jms.ConnectionFactory&lt;/td&gt;&lt;td&gt;Name of the logical connection factory this service will use&lt;/td&gt;&lt;td&gt;Defaults to "default"&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.jms.ConnectionFactoryJNDIName&lt;/td&gt;&lt;td&gt;The JNDI name of the JMS ConnectionFactory&lt;/td&gt;&lt;td&gt;Required&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.jms.ConnectionFactoryType&lt;/td&gt; &lt;td&gt; Type of ConnectionFactory – queue / topic&lt;/td&gt;&lt;td&gt;Suggested to be specified&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.jms.JMSSpecVersion&lt;/td&gt;&lt;td&gt;JMS API Version One of "1.1" or "1.0.2b"&lt;/td&gt;&lt;td&gt;Defaults to 1.1&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.jms.UserName&lt;/td&gt;&lt;td&gt;The JMS connection username&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.jms.Password&lt;/td&gt;&lt;td&gt;The JMS connection password&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Destinations&lt;/td&gt;&lt;td&gt;transport.jms.Destination&lt;/td&gt;&lt;td&gt;JNDI Name of the Destination &lt;/td&gt;&lt;td&gt;Defaults to Service name&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.jms.DestinationType&lt;/td&gt;&lt;td&gt;Type of Destination – queue / topic&lt;/td&gt;&lt;td&gt;Defaults to a queue&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.jms.DefaultReplyDestination&lt;/td&gt;&lt;td&gt;JNDI Name of the default reply Destination&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.jms.DefaultReplyDestinationType&lt;/td&gt;&lt;td&gt;Type of the reply Destination – queue / topic&lt;/td&gt;&lt;td&gt;Same type as of Destination&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Advanced&lt;/td&gt;&lt;td&gt;transport.jms.MessageSelector&lt;/td&gt;&lt;td&gt;Optional message selector to be applied&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.jms.SubscriptionDurable&lt;/td&gt;&lt;td&gt;Is the subscription durable? (For Topics) – true / false&lt;/td&gt;&lt;td&gt;Defaults to &lt;b&gt;false&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.jms.DurableSubscriberName&lt;/td&gt;&lt;td&gt;Name to be used for the durable subscription&lt;/td&gt;&lt;td&gt;Required when subscription is durable&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.jms.PubSubNoLocal&lt;/td&gt;&lt;td&gt;Should messages published by the same connection (for Topics)be received? – true / false&lt;/td&gt; &lt;td&gt;Defaults to &lt;b&gt;false&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.jms.CacheLevel&lt;/td&gt;&lt;td&gt;The JMS resource cache level. One of none / connection / session /consumer / producer / auto&lt;/td&gt;&lt;td&gt;Defaults to &lt;b&gt;auto&lt;/b&gt; &lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.jms.ReceiveTimeout&lt;/td&gt;&lt;td&gt;Time to wait for a JMS message during polling. Negative means wait forever, while 0 means do not wait at all. Anything else, is a millisecond value for the poll&lt;/td&gt;&lt;td&gt;Defaults to 1000ms&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.jms.ConcurrentConsumers&lt;/td&gt;&lt;td&gt;Number of concurrent consumer tasks (~threads) to be started to poll for messages for this service. For Topics, this should be always 1, to prevent the same message being processed multiple times&lt;/td&gt;&lt;td&gt;Defaults to &lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.jms.MaxConcurrentConsumers&lt;/td&gt;&lt;td&gt;Will dynamically scale the number of concurrent consumer tasks(~threads) until this value; as the load increases. Should always be 1 for Topics.&lt;/td&gt;&lt;td&gt;Defaults to &lt;b&gt;1&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.jms.IdleTaskLimit&lt;/td&gt;&lt;td&gt;The number of idle (i.e. poll without receipt of a message) runs per task, before it dies – to recycle resources, and to allow dynamic scale down.&lt;/td&gt;&lt;td&gt;Defaults to 10&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.jms.MaxMessagesPerTask&lt;/td&gt;&lt;td&gt;The maximum number of successful message receipts to limit per Task lifetime. &lt;/td&gt;&lt;td&gt;Defaults to &lt;b&gt;–1&lt;/b&gt; which implies unlimited messages&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Reconnection&lt;/td&gt;&lt;td&gt;transport.jms.InitialReconnectDuration&lt;/td&gt;&lt;td&gt;Initial reconnection attempt duration&lt;/td&gt;&lt;td&gt;Defaults to 10,000ms&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.jms.ReconnectProgressFactor&lt;/td&gt;&lt;td&gt;Factor used to compute consecutive reconnection attempt durations, in a geometric series&lt;/td&gt;&lt;td&gt;Defaults to &lt;b&gt;2 (i.e. exponential)&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.jms.MaxReconnectDuration&lt;/td&gt;&lt;td&gt;Maximum limit for a reconnection duration&lt;/td&gt;&lt;td&gt;Defaults to &lt;b&gt;1 hour&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;transport.jms.PublishEPR&lt;/td&gt;&lt;td&gt;One or more JMS URL's to be showed as the JMSEPRs on the WSDL or the service. Allows the specification of a custom EPR, and/or hiding of internal properties from a public EPR (e.g.credentials). Add one as LEGACY to retain auto generated EPR, when adding new EPRs&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Legacy Mode and Payload handling&lt;/td&gt;&lt;td&gt;Wrapper&lt;/td&gt;&lt;td&gt;Binary and Text payload wrapper element to be specified as "{ns}name" where ns refers to a namespace and name the name of the element&lt;/td&gt;&lt;td&gt;Default binary wrapper&lt;ul&gt;&lt;li&gt;{http://ws.apache.org/commons/ns/payload}binary&lt;/li&gt;&lt;/ul&gt;Default text wrapper &lt;ul&gt;&lt;li&gt;{http://ws.apache.org/commons/ns/payload}text&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Operation&lt;/td&gt;&lt;td&gt;operation name to be specified as "{ns}name" where ns refers to the namespace and name the name of the operation&lt;/td&gt;&lt;td&gt;Defaults to urn:mediate&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-2590178594740178086?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/2590178594740178086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2010/01/enhanced-jms-transport_09.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/2590178594740178086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/2590178594740178086'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2010/01/enhanced-jms-transport_09.html' title='The enhanced JMS transport'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-940260995404377891</id><published>2009-12-30T22:42:00.001+05:30</published><updated>2009-12-30T23:23:56.258+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='llvm-gcc'/><category scheme='http://www.blogger.com/atom/ns#' term='llvm nightly tester'/><category scheme='http://www.blogger.com/atom/ns#' term='LLVM'/><category scheme='http://www.blogger.com/atom/ns#' term='compiler'/><category scheme='http://www.blogger.com/atom/ns#' term='c'/><title type='text'>Compiling, running LLVM, llvm-gcc and running the llvm nightly tester</title><content type='html'>This is about how to compile and run &lt;a href="http://llvm.org/"&gt;Low Level Virtual machine&lt;/a&gt;(LLVM). And also there will be a description how to run the &lt;a href="http://llvm.org/docs/TestingGuide.html#nightly"&gt;LLVM nightly tester&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;First LLVM comes with two pieces.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. LLVM suite&lt;/span&gt; - This contains all the tools, libraries and header files needed&lt;br /&gt;to use the low level virtual machine. It contains an assembler, disassembler,&lt;br /&gt;bitcode analyzer and bit code optimizer. It also contains a test suite which&lt;br /&gt;can use to test LLVM tools and the GCC front end.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. GCC front end&lt;/span&gt; - This provides a version of GCC which compiles C/C++ into&lt;br /&gt;LLVM bitcode.&lt;br /&gt;&lt;br /&gt;There is a third, optional piece called llvm-test. It's a suite of program&lt;br /&gt;which can use to further test LLVM.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Machine configuration and the software required.&lt;/span&gt;&lt;br /&gt;1, Fedora Core 11 -kernel version 2.6.30.9-96.fc11.x86_64&lt;br /&gt;2. GCC version - 4.4.1&lt;br /&gt;3. The standard gun tool chain for building C/C++ sources.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conventions.&lt;/span&gt;&lt;br /&gt;SRC_ROOT - The main LLVM source location in the file system.&lt;br /&gt;SRC_LLVM_GCC - The llvm-gcc source location in the file system.&lt;br /&gt;&lt;br /&gt;Building LLVM, LLVM-gcc and running the test suite&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1).&lt;/span&gt; Check out the LLVM source from the trunk.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2).&lt;/span&gt; If you like to get the LLVM test suite check it out from the trunk&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;cd llvm/projects.&lt;br /&gt;svn co http://llvm.org/svn/llvm-project/test-suite/trunk llvm-test&lt;br /&gt;&lt;/pre&gt;By placing this inside llvm project folder, it'll be automatically configured and will be update when you update the working copy using svn up.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3).&lt;/span&gt; Check out llvm-gcc from the trunk&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;svn co http://llvm.org/svn/llvm-project/llvm-gcc-4.2/trunk dst-directory&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4).&lt;/span&gt; Configuring the LLVM build. Create an object folder,&lt;br /&gt;ex, llvm-object.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;cd llvm-objects&lt;br /&gt;SRC_ROOT/configure --prefix=/install/path [other options]&lt;br /&gt;&lt;/pre&gt;Run the configure script located in the main LLVM source tree.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5).&lt;/span&gt; After configuring you can compile the LLVM build. There are three types of builds.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;a).&lt;/span&gt; Debug build - Compile libraries and tools with debug info. The default build&lt;br /&gt;of th trunk. Pass --disable-optimized option to configure script or ENABLE_OPTIMIZED=0 to the make command below to get a&lt;br /&gt;debug build. ex:&lt;br /&gt;SRC_ROOT/configure --prefix=/home/rajika/projects/llvm/llvm-objects --disable-optimized&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;b).&lt;/span&gt; Release (Optimize) build - The build will comple the tools and the&lt;br /&gt;libraries without debug info. You need to pass --enable-optimized option to&lt;br /&gt;the configure script or ENABLE_OPTIMIZED=1 to the make command(below) when compiling, to get a release build.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;c).&lt;/span&gt; Profile build - These builds are for use with profiling. So that the code&lt;br /&gt;can be profile using a profiling tool such as gprof. This can be started by&lt;br /&gt;specifying ENABLE_PROFILING=1 on the make command below.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5).&lt;/span&gt; Compiling the LLVM source. Issue make command while in the llvm-objects&lt;br /&gt;folder to compile the LLVM source tree.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;make&lt;br /&gt;&lt;/pre&gt;Note that various options can be passed into make command to override the&lt;br /&gt;default values given by configure script.&lt;br /&gt;make ENABLE_OPTIMIZED=1  - Perform a release build.&lt;br /&gt;make ENABLE_OPTIMIZED=1 DISABLE_ASSERTIONS=1 - Perform a release build without assertions enabled.&lt;br /&gt;make ENABLE_OPTIMIZED=0 - Perform a debug build.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6).&lt;/span&gt; Configuring and building llvm-gcc. Create an object folder for llvm-gcc&lt;br /&gt;objects, ex: dst-directory-objects.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;cd dst-directory-objects&lt;br /&gt;SRC_LLVM_GCC/configure --prefix=/home/rajika/projects/llvm/dst-directory-objects --enable-languages=c --enable-checking --enable-llvm=/home/rajika/projects/llvm/llvm-objects&lt;br /&gt;--disable-bootstrap --disable-multilib --program-prefix=llvm-&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;where SRC_LLVM_GCC stands for the source tree location of the llvm-gcc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;7). &lt;/span&gt;Build and install the compiler.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;make&lt;br /&gt;make install&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;8).&lt;/span&gt; Re-build and install llvm(Remember last time we didn't configure with llvm-gcc).&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;SRC_ROOT/configure --prefix=/home/rajika/projects/llvm/llvm-objects --disable-optimized --with-llvmgccdir=/home/rajika/projects/llvm/dst-directory-objects&lt;br /&gt;make&lt;br /&gt;make install&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You'll need to add  the binray directories of the  LLVM and llvm-gcc to PATH enviornment varible so that you can access the binraries from any where.&lt;br /&gt;At this point you can test a sample program using llvm tool chains to see how the installation works.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;9).&lt;/span&gt; Running the test suite.&lt;br /&gt;The LLVM test suite consits of two parts.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;a).&lt;/span&gt; Code fragments - This is refered to as DejaGNU test and live in llvm/test folder. These are small code fragments that specify a feature of LLVM or trigger a bug in LLVM.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;b).&lt;/span&gt; Whole program - This is refered to as "Test suite" and are in the test-suite module in subversion. Once check out it lives in the llvm/project/llvm-test folder. These are whole programs which can compile and link to a stand-alone program that can be executed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;10).&lt;/span&gt; Running DejaGNU test. Go to the llvm-object directory. And run the DejaGNU test.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;make check&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;11).&lt;/span&gt; Running the llvm-test test suite. Go to the llvm-object folder.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;cd llvm-objects/projects/llvm-test (The LLVM object location)&lt;br /&gt;make (or make TEST=nightly report report.html , if you like to run the nightly test and to generate the report)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;References:&lt;/span&gt;&lt;br /&gt;1. &lt;a href="http://llvm.org/docs/GettingStarted.html"&gt;http://llvm.org/docs/GettingStarted.html&lt;/a&gt;&lt;br /&gt;2. &lt;a href="http://llvm.org/docs/GCCFEBuildInstrs.html"&gt;http://llvm.org/docs/GCCFEBuildInstrs.html&lt;/a&gt;&lt;br /&gt;3. &lt;a href="http://llvm.org/docs/TestingGuide.html"&gt;http://llvm.org/docs/TestingGuide.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-940260995404377891?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/940260995404377891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2009/12/comiling-running-llvm-and-running-llvm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/940260995404377891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/940260995404377891'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2009/12/comiling-running-llvm-and-running-llvm.html' title='Compiling, running LLVM, llvm-gcc and running the llvm nightly tester'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-1662154052536595454</id><published>2009-12-27T15:23:00.000+05:30</published><updated>2009-12-27T15:31:39.213+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='DBLookup mediator'/><title type='text'>DBLookup mediator now support looking up multiple entries</title><content type='html'>I just submitted a &lt;a href="https://issues.apache.org/jira/browse/SYNAPSE-533"&gt;patch&lt;/a&gt; for &lt;a href="http://synapse.apache.org/"&gt;Apache synapse&lt;/a&gt;, which will help to retrieve more than one entry from a database using DBLookup mediator. I have added a new attribute(optional) for result element which can use to specify the row that you want to retrieve. Following are few examples of the new configuration.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&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;org.apache.derby.jdbc.ClientDriver&amp;lt;/driver&amp;gt;&lt;br /&gt;           &amp;lt;url&amp;gt;jdbc:derby://localhost:1527/esbdb;user=esb;password=esb&amp;lt;/url&amp;gt;&lt;br /&gt;           &amp;lt;user&amp;gt;esb&amp;lt;/user&amp;gt;&lt;br /&gt;           &amp;lt;password&amp;gt;esb&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;select * from company where name =?&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;result name="company_price_0" column="price" rowIndex="2"/&amp;gt;&lt;br /&gt;       &amp;lt;result name="company_price_1" column="price" rowIndex="4"/&amp;gt;&lt;br /&gt;   &amp;lt;/statement&amp;gt;&lt;br /&gt;&amp;lt;/dblookup&amp;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/8648017967226408418-1662154052536595454?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/1662154052536595454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2009/12/dblookup-mediator-now-support-looking.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/1662154052536595454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/1662154052536595454'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2009/12/dblookup-mediator-now-support-looking.html' title='DBLookup mediator now support looking up multiple entries'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-8561856897229651867</id><published>2009-12-12T18:44:00.000+05:30</published><updated>2009-12-12T20:06:23.938+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='mvn'/><category scheme='http://www.blogger.com/atom/ns#' term='carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='ant'/><category scheme='http://www.blogger.com/atom/ns#' term='carbon components'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Getting start with development of WSO2 ESB and Carbon</title><content type='html'>In time to time I see &lt;a href="http://wso2.org/forum/187"&gt;some users&lt;/a&gt; ask how to get start with the development of &lt;a href="http://wso2.org/projects/esb/java"&gt;WSO2 ESB&lt;/a&gt;. This post carry out some points which will help them.&lt;br /&gt;WSO2 ESB and it's dependent sub projects have developed in Java programming language. So it's assume that you have some Java programming experience. If you are new to Java you can refer one of the &lt;a href="http://oreilly.com/catalog/9780596004651"&gt;good books&lt;/a&gt; available in the market. And also you'll also need some understanding on build tools such as ant, maven and version control systems such as subversion. If you new to these things I'd recommend you the following online tutorials.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. ant&lt;/span&gt; - &lt;a href="http://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html"&gt;Apache ant tutorial&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. maven&lt;/span&gt; - &lt;a href="http://maven.apache.org/guides/getting-started/index.html"&gt;Apache maven tutorial&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. subversion &lt;/span&gt;- &lt;a href="http://svnbook.red-bean.com/en/1.1/index.html"&gt;The subversion tutorial&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;WSO2 ESB is depend on two things. First it depeneds on &lt;a href="http://synapse.apache.org/"&gt;Apache synase&lt;/a&gt;, the lightweight enterprise service bus from Apache and also it depends on &lt;a href="http://wso2.org/projects/carbon"&gt;WSO2 Carbon&lt;/a&gt;. The ESB capabilities are given by Apache synapse and the compartmentalize architecture is given by Carbon.  It is important that you have some understanding on these. So start with following.&lt;br /&gt;&lt;br /&gt;1. Apache synapse articles -&lt;br /&gt;- &lt;a href="http://wso2.org/library/2559"&gt;http://wso2.org/library/2559&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://wso2.org/library/3422"&gt;http://wso2.org/library/3422&lt;/a&gt;&lt;br /&gt;2. WSO2 carbon articles :&lt;br /&gt;- &lt;a href="http://wso2.org/library/articles/getting-started-wso2-carbon"&gt;http://wso2.org/library/articles/getting-started-wso2-carbon&lt;/a&gt;&lt;br /&gt;- &lt;a href="http://wso2.org/library/articles/stuff-works-wso2-carbon"&gt;http://wso2.org/library/articles/stuff-works-wso2-carbon&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;While reading about synapse and carbon next thing you can do is to get your hand dirty with the source code. So check out the latests sources from the subversion and build them your self.  WSO2 ESB depend on number of other project so you need to build them to build WSO2 ESB. So check out each of the following source and issue the following command to build each and every project.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;mvn clean install -Dmaven.test.skip=true&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;When you are building carbon-component project ( project h.) below) build only the ESB specific components. Because it contains all the components which are used by other product as well.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;mvn clean install -Dmaven.test.skip=true -Dproduct=esb&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;a). &lt;a href="http://www.blogger.com/a%29.%20https://svn.apache.org/repos/asf/webservices/axis2/trunk/java%20b%29.%20https://svn.apache.org/repos/asf/webservices/commons/trunk/modules/transport%20c%29.%20https://svn.apache.org/repos/asf/webservices/rampart/trunk/java%20d%29.%20http://svn.apache.org/repos/asf/webservices/sandesha/trunk/java%20e%29.%20https://svn.apache.org/repos/asf/synapse/trunk/java%20f%29.%20https://wso2.org/repos/wso2/trunk/carbon-orbit%20g%29.%20https://wso2.org/repos/wso2/trunk/carbon%20h%29.%20https://wso2.org/repos/wso2/trunk/carbon-components%20i%29.%20https://wso2.org/repos/wso2/trunk/esb/java"&gt;https://svn.apache.org/repos/asf/webservices/axis2/trunk/java&lt;/a&gt;&lt;br /&gt;b). &lt;a href="https://svn.apache.org/repos/asf/webservices/commons/trunk/modules/transport"&gt;https://svn.apache.org/repos/asf/webservices/commons/trunk/modules/transport&lt;/a&gt;&lt;br /&gt;c). &lt;a href="https://svn.apache.org/repos/asf/webservices/rampart/trunk/java"&gt;https://svn.apache.org/repos/asf/webservices/rampart/trunk/java&lt;/a&gt;&lt;br /&gt;d). &lt;a href="https://svn.apache.org/repos/asf/webservices/rampart/trunk/java"&gt;http://svn.apache.org/repos/asf/webservices/sandesha/trunk/java&lt;/a&gt;&lt;br /&gt;e). &lt;a href="https://svn.apache.org/repos/asf/synapse/trunk/java"&gt;https://svn.apache.org/repos/asf/synapse/trunk/java&lt;/a&gt;&lt;br /&gt;f). &lt;a href="https://wso2.org/repos/wso2/trunk/carbon-orbit"&gt;https://wso2.org/repos/wso2/trunk/carbon-orbit&lt;/a&gt;&lt;br /&gt;g). &lt;a href="https://wso2.org/repos/wso2/trunk/carbon"&gt;https://wso2.org/repos/wso2/trunk/carbon&lt;/a&gt;&lt;br /&gt;h). &lt;a href="https://wso2.org/repos/wso2/trunk/carbon-components"&gt;https://wso2.org/repos/wso2/trunk/carbon-components&lt;/a&gt;&lt;br /&gt;i). &lt;a href="https://wso2.org/repos/wso2/trunk/esb/java"&gt;https://wso2.org/repos/wso2/trunk/esb/java &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Basically ESB is a collection of carbon-components. So actually most of the time you'll be fixing issues in carbon components. So just create the project files for carbon-components either for eclispe or InteliJ IDEA using the following command.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;mvn idea:idea or mvn eclispe:eclipse&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now you can open the project using your faviorite IDE and start developments of WSO2 ESB. To understand how a carbon-component is written you can look into one of the many carbon-components available(they all are written in the same way following the same pattern). Just browse through carbon JIRAs where all the currently reported bugs can be found and try to fix them. I'd suggest with low priority one because that will help you to start with  the work. If you have any question just ask on the carbon-dev mailing list, or if you need to discuss something related to architecture just send an email to aritecture@wso2.org (both requires you to subscribe before posting).&lt;br /&gt;&lt;br /&gt;Happy hacking.Good luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-8561856897229651867?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/8561856897229651867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2009/12/getting-start-with-development-of-wso2.html#comment-form' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/8561856897229651867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/8561856897229651867'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2009/12/getting-start-with-development-of-wso2.html' title='Getting start with development of WSO2 ESB and Carbon'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-1733095844178828809</id><published>2009-11-27T07:30:00.000+05:30</published><updated>2009-11-27T07:36:16.548+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='IBM JDK'/><title type='text'>WSO2 ESB on IBM JDK (J9)</title><content type='html'>From the version 2.1.2(based on &lt;a href="http://wso2.org/projects/carbon"&gt;carbon&lt;/a&gt; version 2.0.2) onwards &lt;a href="http://wso2.org/projects/esb/java"&gt;WSO2 ESB&lt;/a&gt; fully support running on IBM JDK(J9). Just add the following parameter to $ESB_HOME/conf/transports.xml under https to run it on IBM JDK.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;parameter name="algorithm"&amp;gt;IBMX509&amp;lt;/parameter&amp;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/8648017967226408418-1733095844178828809?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/1733095844178828809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2009/11/wso2-esb-on-ibm-jdk-j9.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/1733095844178828809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/1733095844178828809'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2009/11/wso2-esb-on-ibm-jdk-j9.html' title='WSO2 ESB on IBM JDK (J9)'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-3272663686594571439</id><published>2009-11-18T08:15:00.000+05:30</published><updated>2009-11-18T08:26:55.490+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='axis2/c'/><category scheme='http://www.blogger.com/atom/ns#' term='c'/><title type='text'>Embedding spider monkey in C/C++ application</title><content type='html'>I have used Spilder moneky (the javascript C engine) within axis2/c. Here I am posting an example which let's you to embed Spider monkey in your C/C++ application. Note that it also has an error handler which will report the compilation errors of the script.&lt;br /&gt;To compile the source you need to build Spider monkey and need to have the required headers. &lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;gcc -I/usr/include/smjs/* -L/usr/lib test-js.c  -DXP_UNIX -ljs&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;#include &lt;string.h&gt;&lt;br /&gt;#include &lt;stdlib.h&gt;&lt;br /&gt;#include &lt;smjs/jsapi.h&gt; &lt;br /&gt;&lt;br /&gt;JSClass js_global_object_class = {&lt;br /&gt;    "global",&lt;br /&gt;    0,&lt;br /&gt;    JS_PropertyStub,&lt;br /&gt;    JS_PropertyStub,&lt;br /&gt;    JS_PropertyStub,&lt;br /&gt;    JS_PropertyStub,&lt;br /&gt;    JS_EnumerateStub,&lt;br /&gt;    JS_ResolveStub,&lt;br /&gt;    JS_ConvertStub,&lt;br /&gt;    JS_FinalizeStub,&lt;br /&gt;    JSCLASS_NO_OPTIONAL_MEMBERS&lt;br /&gt;}; &lt;br /&gt;&lt;br /&gt;void js_xml_msg_recv_error_handler(&lt;br /&gt;        JSContext *ctx,&lt;br /&gt;        const char *msg,&lt;br /&gt;        JSErrorReport *er);&lt;br /&gt;&lt;br /&gt;char* js_xml_msg_recv_invoke_wsmsg(&lt;br /&gt;  const char *script,&lt;br /&gt;  const char *op_name);&lt;br /&gt;&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt; js_xml_msg_recv_invoke_wsmsg("./test.js","test");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;char* js_xml_msg_recv_invoke_wsmsg(&lt;br /&gt;        const char *script,&lt;br /&gt;        const char *op_name)&lt;br /&gt;{&lt;br /&gt;   &lt;br /&gt;    JSRuntime *rt = NULL;&lt;br /&gt;    JSContext *cx = NULL;&lt;br /&gt;    JSObject *obj = NULL;&lt;br /&gt;    jsval rval;&lt;br /&gt;    JSString *str = NULL;&lt;br /&gt;    JSBool ok;&lt;br /&gt;    JSBool sucess;&lt;br /&gt;    FILE *file = NULL;&lt;br /&gt;    JSScript *string = NULL;&lt;br /&gt;    jsval arg[1];&lt;br /&gt;    JSString *jsstring = NULL;&lt;br /&gt;    char *pay_load = NULL;&lt;br /&gt;    char *result_string = NULL;&lt;br /&gt;&lt;br /&gt;    rt = JS_NewRuntime(8L * 1024L * 1024L);&lt;br /&gt;    if(!rt){&lt;br /&gt;        fprintf(stderr,"[js] failed to initialize JS Runtime");&lt;br /&gt;        return NULL;&lt;br /&gt;    }&lt;br /&gt;    cx = JS_NewContext(rt, 8L * 1024L * 1024L);&lt;br /&gt;    if(!cx){&lt;br /&gt;        fprintf(stderr, "[js] failed to initialize JS Context");&lt;br /&gt;        JS_DestroyRuntime(rt);&lt;br /&gt;        return NULL;&lt;br /&gt;    }&lt;br /&gt;    JS_SetErrorReporter(cx, js_xml_msg_recv_error_handler);&lt;br /&gt;    obj = JS_NewObject(cx, &amp;js_global_object_class, NULL, NULL);&lt;br /&gt;    if(!obj){&lt;br /&gt;        fprintf(stderr, "[js] failed to create global object");&lt;br /&gt;        JS_DestroyContext(cx);&lt;br /&gt;        JS_DestroyRuntime(rt);&lt;br /&gt;        return NULL;&lt;br /&gt;    }&lt;br /&gt;    JS_InitStandardClasses(cx, obj);&lt;br /&gt;    if(script){&lt;br /&gt;        file = fopen(script, "r"); &lt;br /&gt;        if(file == NULL){   /* TODO, may be need to set service not found error?*/&lt;br /&gt;            fprintf(stderr, "[js] can not open script file");&lt;br /&gt;            return NULL;&lt;br /&gt;        }&lt;br /&gt;        string = JS_CompileFile(cx, obj, script);&lt;br /&gt;        if(string == NULL){&lt;br /&gt;            fprintf(stderr, "[js] failed to compile the script");&lt;br /&gt;            return NULL;&lt;br /&gt;        }&lt;br /&gt;        sucess = JS_ExecuteScript(cx, obj, string, &amp;rval);&lt;br /&gt;        if(sucess == JS_FALSE){&lt;br /&gt;            fprintf(stderr, "[js] failed to execute the script");&lt;br /&gt;            return NULL;&lt;br /&gt;        }&lt;br /&gt;        pay_load = "&lt;b&gt;hello world!&lt;/b&gt;"; &lt;br /&gt;        if(pay_load == NULL){&lt;br /&gt;            fprintf(stderr, "[js] pay load not set");&lt;br /&gt;            return NULL;&lt;br /&gt;        }&lt;br /&gt;        jsstring = JS_NewStringCopyN(cx, pay_load, strlen(pay_load));&lt;br /&gt;        if(jsstring == NULL){&lt;br /&gt;            fprintf(stderr, "[js] failed to copy the execution string");&lt;br /&gt;            return NULL;&lt;br /&gt;        }&lt;br /&gt;        arg[0] = STRING_TO_JSVAL(jsstring);&lt;br /&gt;        if(sucess == JS_TRUE){&lt;br /&gt;            ok = JS_CallFunctionName(cx, obj, op_name, 1, arg, &amp;rval); /* check to see weather&lt;br /&gt;                                                                                   operation not found*/&lt;br /&gt;            if(ok == JS_FALSE){&lt;br /&gt;                fprintf(stderr, "[js] operation not  found");&lt;br /&gt;                return NULL;&lt;br /&gt;            }&lt;br /&gt;            str = JS_ValueToString(cx, rval);&lt;br /&gt;            result_string = JS_GetStringBytes(str); &lt;br /&gt;   printf("Result: %s\n", result_string);&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;    }&lt;br /&gt;    JS_DestroyContext(cx);&lt;br /&gt;    JS_DestroyRuntime(rt);&lt;br /&gt; return result_string;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void js_xml_msg_recv_error_handler(&lt;br /&gt;            JSContext *ctx,&lt;br /&gt;            const char *msg,&lt;br /&gt;            JSErrorReport *er)&lt;br /&gt;{&lt;br /&gt;    char *ptr = NULL;&lt;br /&gt;    char *line = NULL;&lt;br /&gt;    int len;&lt;br /&gt;    if(er-&gt;linebuf != NULL){&lt;br /&gt;        len = er-&gt;tokenptr - er-&gt;linebuf + 1;&lt;br /&gt;        ptr = (char *)malloc(len);&lt;br /&gt;        memset(ptr, '-', len);&lt;br /&gt;        ptr[len - 1] = '\0';&lt;br /&gt;        ptr[len - 2] = '^';&lt;br /&gt;        len = strlen(er-&gt;linebuf) + 1;&lt;br /&gt;        line = (char *)malloc(len);&lt;br /&gt;        strncpy(line, er-&gt;linebuf, len);&lt;br /&gt;        line[len - 1] = '\0';&lt;br /&gt;    }&lt;br /&gt;    else{&lt;br /&gt;        len = 0;&lt;br /&gt;        ptr = (char *)malloc(1);&lt;br /&gt;        line = (char *)malloc(1);&lt;br /&gt;        ptr[0] = '\0';&lt;br /&gt;        line[0] = '\0';&lt;br /&gt;    }&lt;br /&gt;    while(len &gt; 0 &amp;&amp; (line[len - 1] == '\r' || line[len - 1] == '\n')){&lt;br /&gt;        line[len- 1] = '\0';&lt;br /&gt;        len--;&lt;br /&gt;    }&lt;br /&gt;    fprintf(stderr,"JS Eror : %s\n File:%s:%u\n", msg, er-&gt;filename, er-&gt;lineno);&lt;br /&gt;    if(line[0]){&lt;br /&gt;        fprintf(stderr,"%s\n%s\n", line, ptr);&lt;br /&gt;    }&lt;br /&gt;    free(ptr);&lt;br /&gt;    free(line);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The java script example &lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;function test(payload){&lt;br /&gt; var x  = "&amp;lt;note&amp;gt;&amp;lt;date&amp;gt;2002-08-01&amp;lt;/date&amp;gt;&amp;lt;to&amp;gt;Tove&amp;lt;/to&amp;gt;&amp;lt;from&amp;gt;Jani&amp;lt;/from&amp;gt;&amp;lt;heading&amp;gt;Reminder&amp;lt;/heading&amp;gt;&amp;lt;body&amp;gt;Don't forget me this weekend!&amp;lt;/body&amp;gt;&amp;lt;/note&amp;gt;";&lt;br /&gt; var note = new XML(x);&lt;br /&gt; return note.date;&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/8648017967226408418-3272663686594571439?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/3272663686594571439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2009/11/embedding-spider-monkey-in-cc.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/3272663686594571439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/3272663686594571439'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2009/11/embedding-spider-monkey-in-cc.html' title='Embedding spider monkey in C/C++ application'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-8361177949147398661</id><published>2009-11-15T19:06:00.000+05:30</published><updated>2009-12-21T21:04:36.815+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='axis2/c'/><category scheme='http://www.blogger.com/atom/ns#' term='spider monkey'/><title type='text'>Javascript binding for Axis2/C server side</title><content type='html'>Some time back I wrote a small message receiver which embedded the Spider monkey(which is the Javascript engine of the firefox web browser) to Axis2/C server side. This let you to write Web services in Javascript and deploy them in Axis2/C. When developing web services in Javascript E4X support is used with an XML in/out model. When I have some time I am planning to plug other popular javascript engines such as &lt;a href="http://code.google.com/p/v8/"&gt;V8&lt;/a&gt;, &lt;a href="https://wiki.mozilla.org/JavaScript:TraceMonkey"&gt;Tracemonkey&lt;/a&gt; so the one can choose the engine at compile time. I just re-compiled the message receiver with the Axis2/C trunk. These are the updated steps.&lt;br /&gt;&lt;br /&gt;1.Compile and installed the Spider monkey- Javascript C engine.&lt;br /&gt;Refer here: &lt;a href="http://developer.mozilla.org/en/SpiderMonkey_Build_Documentation"&gt;http://developer.mozilla.org/en/SpiderMonkey_Build_Documentation&lt;/a&gt;.&lt;br /&gt;I placed all the header files in  src and Linux_All_DBG.OBJ folders(after building the JS engine) into /usr/include/smjs(created by myself) and the libjs.so into /usr/lib folders.&lt;br /&gt;&lt;br /&gt;2. Place the js_xml_in_out_msg_recv.c, axis2_js_common.h and Makefile.am inside /src/core/receivers/ [2].&lt;br /&gt;&lt;br /&gt;3. Compile and install axis2/c.&lt;br /&gt;&lt;br /&gt;4. Compile the sample client echojs.c. You can use the build.sh file for this[2].&lt;br /&gt;&lt;br /&gt;5. Create a folder called echojs under deploy/services directory and place the services.xml and the echojs.js file inside that[2].&lt;br /&gt;&lt;br /&gt;6. Add the following entry to the services.xml, put the path of test.js here&lt;br /&gt;Put the script path to the value of Script parameter.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&lt; name="script"&gt;/home/rajika/projects/axis2c/c/deploy/services/echojs/echojs.js&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Just drop the services.xml in [2].&lt;br /&gt;&lt;br /&gt;7. Invoke the sample client in step 4 using &lt;span style="font-weight: bold;"&gt;./echojs&lt;/span&gt;. If you run into shared libraray problems try exporting LD_LIBRARY_PATH to libjs.so location&lt;br /&gt;&lt;br /&gt;References:&lt;br /&gt;&lt;br /&gt;[1] - &lt;a href="http://en.wikipedia.org/wiki/E4X"&gt;http://en.wikipedia.org/wiki/E4X&lt;/a&gt;&lt;br /&gt;[2] - &lt;a href="https://wso2.org/repos/wso2/people/rajika/axis2-js-binding/"&gt;&lt;span style="text-decoration: underline;"&gt;https://wso2.org/repos/wso2/people/rajika/axis2-js-binding/&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-8361177949147398661?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/8361177949147398661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2009/11/javascript-binding-for-axis2c-server.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/8361177949147398661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/8361177949147398661'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2009/11/javascript-binding-for-axis2c-server.html' title='Javascript binding for Axis2/C server side'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-5927456246690805750</id><published>2009-09-13T11:38:00.000+05:30</published><updated>2009-09-13T12:06:12.796+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='Informix database'/><title type='text'>Using  WSO2 ESB with Informix database server</title><content type='html'>&lt;a href="http://www-01.ibm.com/software/data/informix/"&gt;Informix&lt;/a&gt; is a very stable, solid database server from &lt;a href="http://www.ibm.com/us/en/"&gt;IBM&lt;/a&gt;. This post describe how to use it with WSO2 ESB.&lt;br /&gt;You need to install the Informix JDBC driver. Just download it from &lt;a href="http://www14.software.ibm.com/webapp/download/preconfig.jsp?id=2007-11-08+12%3A27%3A16.258747R&amp;amp;S_TACT=104CBW71&amp;amp;S_CMP="&gt;here&lt;/a&gt;. Just run the installer and install the driver to a place of your choice( let that location be $INFORMIX_JDBC).&lt;br /&gt;Now copy the jars in $INFORMIX_JDBC/lib to $ESB_HOME/repository/components/extensions/ folder.  You'll need to use the username and the password which was given when creating the IBM IDS in the conection properties in the synapse configuration. You can use the same set up as sample #361 with the following configuration to run the sample.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;&amp;lt;definitions xmlns="http://ws.apache.org/ns/synapse"&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;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;            &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;driver&amp;gt;com.informix.jdbc.IfxDriver&amp;lt;/driver&amp;gt;&lt;br /&gt;                        &amp;lt;url&amp;gt;jdbc:informix-sqli://localhost:1533/testDB:informixserver=server1;user=informix;password=test123&amp;lt;/url&amp;gt;&lt;br /&gt;                        &amp;lt;user&amp;gt;informix&amp;lt;/user&amp;gt;&lt;br /&gt;                        &amp;lt;password&amp;gt;test123&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;update company set price=? where name=?&amp;lt;/sql&amp;gt;&lt;br /&gt;                    &amp;lt;!--&amp;lt;sql&amp;gt;delete from company where name=?&amp;lt;/sql&amp;gt;--&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="FLOAT"/&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;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;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-5927456246690805750?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/5927456246690805750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2009/09/using-wso2-esb-with-informix-database.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5927456246690805750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5927456246690805750'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2009/09/using-wso2-esb-with-informix-database.html' title='Using  WSO2 ESB with Informix database server'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-9066708015001313739</id><published>2009-08-31T17:57:00.000+05:30</published><updated>2009-09-02T11:47:03.741+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='JBOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='JTA'/><category scheme='http://www.blogger.com/atom/ns#' term='JMB'/><category scheme='http://www.blogger.com/atom/ns#' term='Transactions'/><category scheme='http://www.blogger.com/atom/ns#' term='Transaction mediator'/><title type='text'>Java Transaction Processing</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hha64Sbr4OI/SpvYGeBDxjI/AAAAAAAAAB0/FsZQwmpKo1s/s1600-h/51h6jF6JUrL._SS500_.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 400px;" src="http://2.bp.blogspot.com/_hha64Sbr4OI/SpvYGeBDxjI/AAAAAAAAAB0/FsZQwmpKo1s/s400/51h6jF6JUrL._SS500_.jpg" alt="" id="BLOGGER_PHOTO_ID_5376128185845138994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In last couple of days I was trying to get the transaction mediator and the JMS transport transaction working in WSO2 ESB. After some work I was able to get them working, still some work are left.&lt;br /&gt;I was fairly new to transactions, so I bought the book &lt;a href="http://www.amazon.com/Java-Transaction-Processing-Implementation-Professional/dp/013035290X"&gt;Java Transaction Processing&lt;/a&gt; and referred in my work. That's a very good book, in which everything are into the point.  This book has two complete samples describing the concepts in chapter 4 and 5. You can download them book's website. Authors have given instructions to run them in Oracle Application server and database.  I just tried them on JBoss Application server (version 5.0.1 GA). Following the instruction to run them in JBOSSAS.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step1&lt;br /&gt;&lt;/span&gt;To&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;compile the sample webapp you need to set the J2EE_HOME into $JBOSS_HOME on the top of common.xml and add the following jars to compile the source files. &lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="iso-8859-1"?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- The envirnmnet attribute only works on certains operatin systems.&lt;br /&gt;&lt;br /&gt;hence you may have to hard code the J2EE_HOME and JAVA_HOME&lt;br /&gt;&lt;br /&gt;location in this file.--&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;property environment="env"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;property name="JAVA_HOME" value="${env.JAVA_HOME}"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;property name="J2EE_HOME" value="/home/rajika/installtion/jboss/jboss-5.1.0.GA"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;path id="common.class.path"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;pathelement location="."/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;pathelement location="${J2EE_HOME}/client/jboss-logging-jdk.jar"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;pathelement location="${J2EE_HOME}/client/jboss-logging-log4j.jar"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;pathelement location="${J2EE_HOME}/client/jboss-logging-spi.jar"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;pathelement location="${J2EE_HOME}/client/jboss-mdr.jar"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;pathelement location="${J2EE_HOME}/client/jboss-messaging-client.jar"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;pathelement location="${J2EE_HOME}/client/jboss-javaee.jar"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;pathelement location="${J2EE_HOME}/common/lib/servlet-api.jar"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;pathelement location="./build" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/path&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;property name="common.class.path" refid="common.class.path"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;target name="common"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;echo message="BuildName: ${ant.project.name}" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;echo message="BuildHome: ${basedir}" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;echo message="BuildFile: ${ant.file}" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;echo message="BuildJVM: ${ant.java.version}" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/target&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then you can compile using the default &lt;span style="font-weight: bold;"&gt;ant&lt;/span&gt; command.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2&lt;/span&gt;&lt;br /&gt;Samples need to have two databases available and two XA-data sources which can be used to connect to those two database. I used derby as the database. Following are the two xa-datasource decelerations.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;datasources&amp;gt;&lt;br /&gt; &amp;lt;xa-datasource&amp;gt;&lt;br /&gt;     &amp;lt;jndi-name&amp;gt;jdbc/XADerbyDS1&amp;lt;/jndi-name&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;!-- uncomment to enable interleaving &amp;lt;interleaving/&amp;gt; --&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;isSameRM-override-value&amp;gt;false&amp;lt;/isSameRM-override-value&amp;gt;&lt;br /&gt;     &amp;lt;xa-datasource-class&amp;gt;org.apache.derby.jdbc.ClientXADataSource&amp;lt;/xa-datasource-class&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;!-- path to the database. (${jboss.server.data.dir}${/}derby${/}default didn't work on win) --&amp;gt;&lt;br /&gt;     &amp;lt;xa-datasource-property name="portNumber"&amp;gt;1527&amp;lt;/xa-datasource-property&amp;gt;&lt;br /&gt;     &amp;lt;xa-datasource-property name="DatabaseName"&amp;gt;txtest1&amp;lt;/xa-datasource-property&amp;gt;&lt;br /&gt;     &amp;lt;!--&amp;lt;xa-datasource-property name="portNumber"&amp;gt;1527&amp;lt;/xa-datasource-property&amp;gt;--&amp;gt;&lt;br /&gt;     &amp;lt;xa-datasource-property name="User"&amp;gt;test&amp;lt;/xa-datasource-property&amp;gt;&lt;br /&gt;     &amp;lt;xa-datasource-property name="Password"&amp;gt;test123&amp;lt;/xa-datasource-property&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) --&amp;gt;&lt;br /&gt;     &amp;lt;metadata&amp;gt;&lt;br /&gt;         &amp;lt;type-mapping&amp;gt;Derby&amp;lt;/type-mapping&amp;gt;&lt;br /&gt;     &amp;lt;/metadata&amp;gt;&lt;br /&gt; &amp;lt;/xa-datasource&amp;gt;&lt;br /&gt;&amp;lt;/datasources&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;datasources&amp;gt;&lt;br /&gt; &amp;lt;xa-datasource&amp;gt;&lt;br /&gt;     &amp;lt;jndi-name&amp;gt;jdbc/XADerbyDS&amp;lt;/jndi-name&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;!-- uncomment to enable interleaving &amp;lt;interleaving/&amp;gt; --&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;isSameRM-override-value&amp;gt;false&amp;lt;/isSameRM-override-value&amp;gt;&lt;br /&gt;     &amp;lt;xa-datasource-class&amp;gt;org.apache.derby.jdbc.ClientXADataSource&amp;lt;/xa-datasource-class&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;!-- path to the database. (${jboss.server.data.dir}${/}derby${/}default didn't work on win) --&amp;gt;&lt;br /&gt;     &amp;lt;xa-datasource-property name="portNumber"&amp;gt;1527&amp;lt;/xa-datasource-property&amp;gt;&lt;br /&gt;     &amp;lt;xa-datasource-property name="DatabaseName"&amp;gt;txtest&amp;lt;/xa-datasource-property&amp;gt;&lt;br /&gt;     &amp;lt;!--&amp;lt;xa-datasource-property name="portNumber"&amp;gt;1527&amp;lt;/xa-datasource-property&amp;gt;--&amp;gt;&lt;br /&gt;     &amp;lt;xa-datasource-property name="User"&amp;gt;test&amp;lt;/xa-datasource-property&amp;gt;&lt;br /&gt;     &amp;lt;xa-datasource-property name="Password"&amp;gt;test123&amp;lt;/xa-datasource-property&amp;gt;&lt;br /&gt;&lt;br /&gt;     &amp;lt;!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) --&amp;gt;&lt;br /&gt;     &amp;lt;metadata&amp;gt;&lt;br /&gt;         &amp;lt;type-mapping&amp;gt;Derby&amp;lt;/type-mapping&amp;gt;&lt;br /&gt;     &amp;lt;/metadata&amp;gt;&lt;br /&gt; &amp;lt;/xa-datasource&amp;gt;&lt;br /&gt;&amp;lt;/datasources&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Note that you need two database instances (here txtest and txtest1). And I am running Derby in network mode(not in embeded mode).  And also drop the derby jars(&lt;span style="font-weight: bold;"&gt;derby.jar, derbynet.jar, derbyclient.jar and derby-plugin.jar&lt;/span&gt;) into $JBOSS_HOME/server/default/lib folder. Following sql query was used to create the database table.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;create table EMP (EMPNO int primary key, ENAME varchar(40), JOB varchar(40), MGR int, SAL double, COMM double, DEPTNO int);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step3&lt;br /&gt;&lt;/span&gt;You also need  to have a jboss-web.xml, for the sample web application which map the resource with the defined resourcs in web.xml. You can place the following jboss-web.xml inside web/WEB-INF so that when you run ant it'll automatically goes into the webapp.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee&lt;br /&gt;http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&amp;gt;&lt;br /&gt;&amp;lt;display-name&amp;gt;SampleJDBCServlet&amp;lt;/display-name&amp;gt;&lt;br /&gt;&amp;lt;servlet&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;SampleJDBCServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;servlet-class&amp;gt;book.ch4.sample.xa.SampleJDBCServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;&amp;lt;/servlet&amp;gt;&lt;br /&gt;&amp;lt;servlet&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;SampleJMSServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;servlet-class&amp;gt;book.ch5.sample.xa.SampleJMSServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;&amp;lt;/servlet&amp;gt;&lt;br /&gt;&amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;SampleJDBCServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;url-pattern&amp;gt;/jdbcsample&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;&amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;SampleJMSServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;url-pattern&amp;gt;/jmssample&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;&amp;lt;welcome-file-list&amp;gt;&lt;br /&gt;&amp;lt;welcome-file&amp;gt;index.html&amp;lt;/welcome-file&amp;gt;&lt;br /&gt;&amp;lt;/welcome-file-list&amp;gt;&lt;br /&gt;&amp;lt;resource-ref&amp;gt;&lt;br /&gt;&amp;lt;res-ref-name&amp;gt;jdbc/XADerbyDS&amp;lt;/res-ref-name&amp;gt;&lt;br /&gt;&amp;lt;res-type&amp;gt;javax.sql.DataSource&amp;lt;/res-type&amp;gt;&lt;br /&gt;&amp;lt;res-auth&amp;gt;Container&amp;lt;/res-auth&amp;gt;&lt;br /&gt;&amp;lt;res-sharing-scope&amp;gt;Shareable&amp;lt;/res-sharing-scope&amp;gt;&lt;br /&gt;&amp;lt;/resource-ref&amp;gt;&lt;br /&gt;&amp;lt;resource-ref&amp;gt;&lt;br /&gt;&amp;lt;res-ref-name&amp;gt;jdbc/XADerbyDS1&amp;lt;/res-ref-name&amp;gt;&lt;br /&gt;&amp;lt;res-type&amp;gt;javax.sql.DataSource&amp;lt;/res-type&amp;gt;&lt;br /&gt;&amp;lt;res-auth&amp;gt;Container&amp;lt;/res-auth&amp;gt;&lt;br /&gt;&amp;lt;res-sharing-scope&amp;gt;Shareable&amp;lt;/res-sharing-scope&amp;gt;&lt;br /&gt;&amp;lt;/resource-ref&amp;gt;&lt;br /&gt;&amp;lt;/web-app&amp;gt;&lt;br /&gt;&lt;/pre&gt;Also note the proper JNDI names for the two datasources(You can see the bounded JNDI name when the JBOSS server startup). This datasource name is require when looking up through the code. I only added the chapter 4 sample.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step4&lt;br /&gt;&lt;/span&gt;Now you can run ant and build the samples.ear. You'll need the .war inside that archive to deploy into JBoss. Unzip the samples.ear and deploy the samples-web.war into $JBOSS_HOME/server/default/deploy. Place your brower to &lt;a href="http://localhost:8080/samples-web/"&gt;http://localhost:8080/samples-web/&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;. &lt;/span&gt;To see the transaction in action try to insert a record which is already in databse2. You'll see the whole transaction is rollback(no recored is delete from database1 and no recored is added into databse2).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-9066708015001313739?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/9066708015001313739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2009/08/java-transaction-processing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/9066708015001313739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/9066708015001313739'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2009/08/java-transaction-processing.html' title='Java Transaction Processing'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_hha64Sbr4OI/SpvYGeBDxjI/AAAAAAAAAB0/FsZQwmpKo1s/s72-c/51h6jF6JUrL._SS500_.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-8808447247166695892</id><published>2009-08-27T10:36:00.001+05:30</published><updated>2010-02-15T08:07:57.889+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='JBOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='JMS'/><category scheme='http://www.blogger.com/atom/ns#' term='JMs transaction'/><category scheme='http://www.blogger.com/atom/ns#' term='Transactions'/><title type='text'>Transactional ESB - Part 2, The JMS transport transaction</title><content type='html'>This is the part 2 of describing WSO2 ESB's transaction support. You can see the &lt;a href="http://rajikak.blogspot.com/2009/08/transactional-esb-part-1-transaction.html"&gt;part 1&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The part 1 was on the transaction mediator. This post will describe the JMS transport transaction support. The JMs transport transaction support both &lt;span style="font-weight: bold;"&gt;local&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;distributed transaction.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This also was tested with JBoss(5.0GA version), you'll need to follow part 1 of the series which describes the steps for deploying WSO2 ESB on JBoss application server and using transaction mediator. We'll use the inbuilt JMS provider service in JBoss as the JMS provider. When deploying WSO2 ESB on JBoss as in part 1 you'll need to remove the geronimo JTA/JMS jars, so we'll have to expose the jms jars through the servlet bridge. You'll only need to do this when you deploy WSO2 ESB on an application server.  Once you run the script open the &lt;span style="font-weight: bold;"&gt;launch.ini&lt;/span&gt; in $JBOSS_HOME/server/default/deploy/esb.war/WEB-INF/eclipse with your text editor and add the following entry there. Then save the file.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;javax.jms, \&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In Jboss you have to define the queues manually so you'll need to have a queue called &lt;span style="font-weight: bold;"&gt;StockQuoteProxy&lt;/span&gt; since we need to deploy our proxy service through JMS transport. Just drop the following file into $JBOSS_HOME/server/default/deploy folder. The other queues which you can see there for some services which use WSO2 ESB for its work.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;Messaging Destinations deployment descriptor.&lt;br /&gt;&lt;br /&gt;$Id: destinations-service.xml 81998 2008-12-03 06:46:29Z scott.stark@jboss.org $&lt;br /&gt;--&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;server&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;The Default Dead Letter Queue. This destination is a dependency of an EJB MDB container.&lt;br /&gt;--&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mbean code="org.jboss.jms.server.destination.QueueService"&lt;br /&gt;name="jboss.messaging.destination:service=Queue,name=XKMS"&lt;br /&gt;xmbean-dd="xmdesc/Queue-xmbean.xml"&amp;gt;&lt;br /&gt;&amp;lt;depends optional-attribute-name="ServerPeer"&amp;gt;jboss.messaging:service=ServerPeer&amp;lt;/depends&amp;gt;&lt;br /&gt;&amp;lt;depends&amp;gt;jboss.messaging:service=PostOffice&amp;lt;/depends&amp;gt;&lt;br /&gt;&amp;lt;/mbean&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mbean code="org.jboss.jms.server.destination.QueueService"&lt;br /&gt;name="jboss.messaging.destination:service=Queue,name=wso2carbon-sts"&lt;br /&gt;xmbean-dd="xmdesc/Queue-xmbean.xml"&amp;gt;&lt;br /&gt;&amp;lt;depends optional-attribute-name="ServerPeer"&amp;gt;jboss.messaging:service=ServerPeer&amp;lt;/depends&amp;gt;&lt;br /&gt;&amp;lt;depends&amp;gt;jboss.messaging:service=PostOffice&amp;lt;/depends&amp;gt;&lt;br /&gt;&amp;lt;/mbean&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mbean code="org.jboss.jms.server.destination.QueueService"&lt;br /&gt;name="jboss.messaging.destination:service=Queue,name=StockQuoteProxy"&lt;br /&gt;xmbean-dd="xmdesc/Queue-xmbean.xml"&amp;gt;&lt;br /&gt;&amp;lt;depends optional-attribute-name="ServerPeer"&amp;gt;jboss.messaging:service=ServerPeer&amp;lt;/depends&amp;gt;&lt;br /&gt;&amp;lt;depends&amp;gt;jboss.messaging:service=PostOffice&amp;lt;/depends&amp;gt;&lt;br /&gt;&amp;lt;/mbean&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mbean code="org.jboss.jms.server.destination.QueueService"&lt;br /&gt;name="jboss.messaging.destination:service=Queue,name=echo"&lt;br /&gt;xmbean-dd="xmdesc/Queue-xmbean.xml"&amp;gt;&lt;br /&gt;&amp;lt;depends optional-attribute-name="ServerPeer"&amp;gt;jboss.messaging:service=ServerPeer&amp;lt;/depends&amp;gt;&lt;br /&gt;&amp;lt;depends&amp;gt;jboss.messaging:service=PostOffice&amp;lt;/depends&amp;gt;&lt;br /&gt;&amp;lt;/mbean&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/server&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The senario which we use to demostrate the transaction capabilties is reading a JMS message fron a queue and updating a database in the same single transaction. The synapse configuration is shown below. So in a sucessful intransaction the JMS message will be read from the message queue and the database will be updated.  In a failure senario(adding duplicate entries to the database) the message will be aviable in the queue and the no records will be added into the database. We'll use a proxy service which will be exposed throught JMS transport and the proxy service will read the JMS message from the queue and will update the database. Finally the message will send to the endpoint.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;definitions xmlns="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;proxy name="StockQuoteProxy" transports="jms"&amp;gt;&lt;br /&gt;   &amp;lt;target faultSequence="myFaultHandler"&amp;gt;&lt;br /&gt;       &amp;lt;inSequence&amp;gt;&lt;br /&gt;           &amp;lt;!--&amp;lt;transaction action="use-existing-or-new"/&amp;gt;--&amp;gt;&lt;br /&gt;           &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;               &amp;lt;property name="text" value="** Reporting to the Database esbdb**"/&amp;gt;&lt;br /&gt;           &amp;lt;/log&amp;gt;&lt;br /&gt;           &amp;lt;dbreport useTransaction="true" xmlns="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt;               &amp;lt;connection&amp;gt;&lt;br /&gt;                   &amp;lt;pool&amp;gt;&lt;br /&gt;                       &amp;lt;dsName&amp;gt;java:jdbc/XADerbyDS&amp;lt;/dsName&amp;gt;&lt;br /&gt;                       &amp;lt;icClass&amp;gt;org.jnp.interfaces.NamingContextFactory&amp;lt;/icClass&amp;gt;&lt;br /&gt;                       &amp;lt;url&amp;gt;localhost:1099&amp;lt;/url&amp;gt;&lt;br /&gt;                       &amp;lt;user&amp;gt;esb&amp;lt;/user&amp;gt;&lt;br /&gt;                       &amp;lt;password&amp;gt;esb&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;INSERT into company values ('IBM','c4',12.0)&amp;lt;/sql&amp;gt;&lt;br /&gt;               &amp;lt;/statement&amp;gt;&lt;br /&gt;           &amp;lt;/dbreport&amp;gt;&lt;br /&gt;           &amp;lt;!--&amp;lt;transaction action="commit"/&amp;gt;--&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;/inSequence&amp;gt;&lt;br /&gt;   &amp;lt;/target&amp;gt;&lt;br /&gt;   &amp;lt;publishWSDL uri="file:/home/rajika/work/esb_repo/repository/samples/resources/proxy/sample_proxy_1.wsdl"/&amp;gt;&lt;br /&gt;   &amp;lt;parameter name="transport.jms.ContentType"&amp;gt;&lt;br /&gt;       &amp;lt;rules&amp;gt;&lt;br /&gt;           &amp;lt;jmsProperty&amp;gt;contentType&amp;lt;/jmsProperty&amp;gt;&lt;br /&gt;           &amp;lt;default&amp;gt;application/xml&amp;lt;/default&amp;gt;&lt;br /&gt;       &amp;lt;/rules&amp;gt;&lt;br /&gt;   &amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/proxy&amp;gt;&lt;br /&gt;&amp;lt;sequence name="myFaultHandler"&amp;gt;&lt;br /&gt;   &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;       &amp;lt;property name="text" value="** An fault occurs the transaction will rollback**"/&amp;gt;&lt;br /&gt;   &amp;lt;/log&amp;gt;&lt;br /&gt;   &amp;lt;!--&amp;lt;transaction action="rollback"/&amp;gt;--&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;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hha64Sbr4OI/SqM0GBSmwxI/AAAAAAAAAB8/5xmVz7dMjx8/s1600-h/jms-transport-tx.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 219px;" src="http://4.bp.blogspot.com/_hha64Sbr4OI/SqM0GBSmwxI/AAAAAAAAAB8/5xmVz7dMjx8/s400/jms-transport-tx.png" alt="" id="BLOGGER_PHOTO_ID_5378199658040836882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Figure1: JMS transport transaction in use.&lt;br /&gt;&lt;br /&gt;You'll also need to have a xa-datasource for Derby and the derby client drivers(derby.jar, derbyplugin.jar, derbynet.jar, derbyclient.jar) also in place(see Part 1 for more information).  Following is the  xa-datasources definitions for derby database. You'll have to drop this configuration file into $JBOSS_HOME/server/default/deploy folder.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;datasources&amp;gt;&lt;br /&gt;&amp;lt;xa-datasource&amp;gt;&lt;br /&gt; &amp;lt;jndi-name&amp;gt;jdbc/XADerbyDS&amp;lt;/jndi-name&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;!-- uncomment to enable interleaving &amp;lt;interleaving/&amp;gt; --&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;isSameRM-override-value&amp;gt;false&amp;lt;/isSameRM-override-value&amp;gt;&lt;br /&gt; &amp;lt;xa-datasource-class&amp;gt;org.apache.derby.jdbc.ClientXADataSource&amp;lt;/xa-datasource-class&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;!-- path to the database. (${jboss.server.data.dir}${/}derby${/}default didn't work on win) --&amp;gt;&lt;br /&gt; &amp;lt;xa-datasource-property name="portNumber"&amp;gt;1527&amp;lt;/xa-datasource-property&amp;gt;&lt;br /&gt; &amp;lt;xa-datasource-property name="DatabaseName"&amp;gt;esbdb&amp;lt;/xa-datasource-property&amp;gt;&lt;br /&gt; &amp;lt;!--&amp;lt;xa-datasource-property name="portNumber"&amp;gt;1527&amp;lt;/xa-datasource-property&amp;gt;--&amp;gt;&lt;br /&gt; &amp;lt;xa-datasource-property name="User"&amp;gt;esb&amp;lt;/xa-datasource-property&amp;gt;&lt;br /&gt; &amp;lt;xa-datasource-property name="Password"&amp;gt;esb&amp;lt;/xa-datasource-property&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) --&amp;gt;&lt;br /&gt; &amp;lt;metadata&amp;gt;&lt;br /&gt;     &amp;lt;type-mapping&amp;gt;Derby&amp;lt;/type-mapping&amp;gt;&lt;br /&gt; &amp;lt;/metadata&amp;gt;&lt;br /&gt;&amp;lt;/xa-datasource&amp;gt;&lt;br /&gt;&amp;lt;/datasources&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The JMS transport transaction support both local and distributed transaction.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Local JMS transaction&lt;/span&gt;&lt;br /&gt;Local JMS transaction let you to divide parts of the message consumptions into individual transaction. From message production to queue can be a one transaction and from that queue to message consumption can be a another transaction.  To have local transaction you need to configure the JMS transport receiver(in axis2.xml) as follows.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;transportReceiver name='jms' class='org.apache.axis2.transport.jms.JMSListener'&amp;gt;&lt;br /&gt;&amp;lt;parameter name='default' locked='false'&amp;gt;&lt;br /&gt;&amp;lt;parameter name='java.naming.factory.initial'&amp;gt;org.jnp.interfaces.NamingContextFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name='java.naming.provider.url'&amp;gt;jnp://localhost:1099&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name='java.naming.factory.url.pkgs'&amp;gt;org.jboss.naming:org.jnp.interfaces&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name='transport.jms.ConnectionFactoryJNDIName'&amp;gt;ConnectionFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="transport.Transactionality"&amp;gt;local&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;&lt;span style="font-weight: bold;"&gt;Distributed (JTA) JMS transaction&lt;/span&gt;&lt;br /&gt;The WSO2 ESB JMS transport transaction also support distributed JMS transaction. To have a distributed transaction you'll need to have the following configuration for JMS transport receiver in axis2.xml.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;transportReceiver name='jms' class='org.apache.axis2.transport.jms.JMSListener'&amp;gt;&lt;br /&gt;&amp;lt;parameter name='default' locked='false'&amp;gt;&lt;br /&gt;&amp;lt;parameter name='java.naming.factory.initial'&amp;gt;org.jnp.interfaces.NamingContextFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name='java.naming.provider.url'&amp;gt;jnp://localhost:1099&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name='java.naming.factory.url.pkgs'&amp;gt;org.jboss.naming:org.jnp.interfaces&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name='transport.jms.ConnectionFactoryJNDIName'&amp;gt;ConnectionFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="transport.Transactionality"&amp;gt;jta&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;parameter name="transport.UserTxnJNDIName"&amp;gt;java:comp/UserTransaction&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;The complete list of parameters now you can have with the new enhance JMS transport can be found here[1].&lt;br /&gt;&lt;br /&gt;Once you deployed everything you can run the JMS client which distribute with the WSO2 ESB to test the scenario.&lt;br /&gt;&lt;br /&gt;Finally we are ready to run the client, use the following command line options(using the same ant build file in $ESB_HOME/samples/axis2Client). You need to have the traditional StockQuote service deployed, look at sample &lt;a href="http://wso2.org/project/esb/java/2.1.0/docs/samples/transport_samples.html#Sample250"&gt;#250&lt;/a&gt; for more detail.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;ant jmsclient -Djms_type=pox -Djms_dest=queue/StockQuoteProxy -Djms_payload=MSF -Djava.naming.provider.url=jnp://localhost:1099 -Djava.naming.factory.initial=org.jnp.interfaces.NamingContextFactory&lt;br /&gt;&lt;/pre&gt;To test the failure senario try adding a duplicate entry to the database (you'll need to create the table with a primary key).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;References:&lt;br /&gt;[1] - &lt;a href="http://adroitlogic.org/knowledge-base-axis2/9-the-enhanced-jms-transport.html"&gt;&lt;/a&gt;&lt;a href="http://adroitlogic.org/knowledge-base-axis2/9-the-enhanced-jms-transport.html"&gt;The enhanced JMS transport&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[2] - &lt;a href="http://rajikak.blogspot.com/2009/08/transactional-esb-part-1-transaction.html"&gt;The transaction mediator&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-8808447247166695892?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/8808447247166695892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2009/08/transactional-esb-part-2-jms-transport.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/8808447247166695892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/8808447247166695892'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2009/08/transactional-esb-part-2-jms-transport.html' title='Transactional ESB - Part 2, The JMS transport transaction'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_hha64Sbr4OI/SqM0GBSmwxI/AAAAAAAAAB8/5xmVz7dMjx8/s72-c/jms-transport-tx.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-2523450170024626186</id><published>2009-08-24T22:30:00.000+05:30</published><updated>2009-08-24T22:42:13.717+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='JBOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='datasources'/><category scheme='http://www.blogger.com/atom/ns#' term='Transactions'/><title type='text'>JBoss mysql xa-datasource configuration</title><content type='html'>If you are using a JBOss data source for mysql  in a distributed transaction environment  you need to define xa-datasource for mysql. The configuration looks like below and you can just drop into $JBOSS_HOME/server/default/deploy folder.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;&amp;lt;datasources&amp;gt;&lt;br /&gt;     &amp;lt;xa-datasource&amp;gt;&lt;br /&gt;         &amp;lt;jndi-name&amp;gt;MySQLDS&amp;lt;/jndi-name&amp;gt;&lt;br /&gt;         &amp;lt;xa-datasource-property name="URL"&amp;gt;jdbc:mysql://localhost:3306/esbdb&amp;lt;/xa-datasource-property&amp;gt;&lt;br /&gt;         &amp;lt;xa-datasource-class&amp;gt;com.mysql.jdbc.jdbc2.optional.MysqlXADataSource&amp;lt;/xa-datasource-class&amp;gt;&lt;br /&gt;         &amp;lt;user-name&amp;gt;test&amp;lt;/user-name&amp;gt;&lt;br /&gt;         &amp;lt;password&amp;gt;test123&amp;lt;/password&amp;gt;&lt;br /&gt;         &amp;lt;track-connection-by-tx&amp;gt;true&amp;lt;/track-connection-by-tx&amp;gt;&lt;br /&gt;         &amp;lt;exception-sorter-class-name&amp;gt;org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter&amp;lt;/exception-sorter-class-name&amp;gt;&lt;br /&gt;         &amp;lt;valid-connection-checker-class-name&amp;gt;org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker&amp;lt;/valid-connection-checker-class-name&amp;gt;&lt;br /&gt;         &amp;lt;min-pool-size&amp;gt;1&amp;lt;/min-pool-size&amp;gt;&lt;br /&gt;         &amp;lt;max-pool-size&amp;gt;10&amp;lt;/max-pool-size&amp;gt;&lt;br /&gt;         &amp;lt;idle-timeout-minutes&amp;gt;10&amp;lt;/idle-timeout-minutes&amp;gt;&lt;br /&gt;         &amp;lt;metadata&amp;gt;&lt;br /&gt;             &amp;lt;type-mapping&amp;gt;mySQL&amp;lt;/type-mapping&amp;gt;&lt;br /&gt;         &amp;lt;/metadata&amp;gt;&lt;br /&gt;     &amp;lt;/xa-datasource&amp;gt;&lt;br /&gt; &amp;lt;/datasources&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And you'll see this datasource is bound to the JNDI name &lt;span style="font-weight:bold;"&gt;MySQLDS&lt;/span&gt; once the server starts. &lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;22:38:28,273 INFO  [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=MySQLDS' to JNDI name 'java:MySQLDS'&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/8648017967226408418-2523450170024626186?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/2523450170024626186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2009/08/jboss-mysql-xa-datasource-configuration.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/2523450170024626186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/2523450170024626186'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2009/08/jboss-mysql-xa-datasource-configuration.html' title='JBoss mysql xa-datasource configuration'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-2305711933909986455</id><published>2009-08-21T18:22:00.000+05:30</published><updated>2009-09-03T13:43:37.167+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='JBOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='JTA'/><category scheme='http://www.blogger.com/atom/ns#' term='Transactions'/><category scheme='http://www.blogger.com/atom/ns#' term='Transaction mediator'/><title type='text'>Transactional ESB - Part 1, The transaction mediator</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Update(27/08/09)&lt;/span&gt; - The original transaction mediator implementation had some problem with multiple data sources, basically it didn't work with &lt;a href="http://issues.apache.org/jira/browse/SYNAPSE-573"&gt;more than one data source&lt;/a&gt;. The transaction mediator has been implemented using the TransactionManager interface. I submitted a &lt;a href="http://issues.apache.org/jira/browse/SYNAPSE-573"&gt;patch&lt;/a&gt; for the transaction mediator to use UserTransaction interface instead. In addition to this there is another &lt;a href="http://issues.apache.org/jira/browse/SYNAPSE-574"&gt;patch for DBReport&lt;/a&gt; mediator which lets you to  use it together with transaction mediator.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wso2.org/projects/esb/java"&gt;ESB 2.1.0&lt;/a&gt; is now out!. In this release there are few new features that you can try out. ESB comes with a number of pre-built samples which can be used to try out ESB easily.&lt;br /&gt;One of the major enhancements is the transaction support built into ESB. &lt;a href="http://en.wikipedia.org/wiki/Transaction"&gt;Transaction&lt;/a&gt; plays a major role in today's business oriented world and when comes to SOA, transaction adds an important value to your platform. Having good transaction support in your business will definitely save you though you only see the value of a transactional system only at a failure. See &lt;a href="http://pzf.fremantle.org/"&gt;Paul's&lt;/a&gt; &lt;a href="http://pzf.fremantle.org/2009/07/wso2-esb-21.html"&gt;blog&lt;/a&gt; to see a description of this new feature.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;The transaction support in ESB is twofold.&lt;/span&gt;&lt;br /&gt;1. The transaction mediator.&lt;br /&gt;2. Transaction support in JMS transport.&lt;br /&gt;&lt;br /&gt;This blog will be about transaction mediator. A separate blog will follow about using JMS transport transaction.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Transaction Mediator&lt;/span&gt;&lt;br /&gt;A new synapse mediator has been added which adds the distributed transaction support using &lt;a href="http://java.sun.com/javaee/technologies/jta/index.jsp"&gt;Java Transaction API(JTA)&lt;/a&gt; (The java transaction API allows application to perform distributed transactions that is, transactions that access and update data on two or more networked computer resources, an example would be to have two databases or a database and a message queue such as JMS). So if you perform distributed transactions this mediator is for you. The synapse configuration language has been extended to add explicit transaction markers. It's the responsibility of the user to define when to start, commit and rollback the transaction.  For ex: we can mark start of a transaction at the start of a database commit and end of the transaction at the end of database commit and we can rollback the transaction in fault sequence(if an error occurs).&lt;br /&gt;&lt;br /&gt;Transaction mediator has the following configuration.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;transaction action="new|use-existing-or-new|fault-if-no-tx|commit|rollback|suspend|resume"&amp;gt;&lt;br /&gt;&amp;lt;/transaction&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The action attribute has the following meanings.&lt;/span&gt;&lt;br /&gt;1. &lt;span style="font-weight: bold;"&gt;new&lt;/span&gt; - Create a new jta transaction. Generate a fault if a transaction already exist.&lt;br /&gt;2. &lt;span style="font-weight: bold;"&gt;use-existing-or-new&lt;/span&gt; - Create a new jta transaction. Do nothing if a transaction exist.&lt;br /&gt;3. &lt;span style="font-weight: bold;"&gt;fault-if-no-tx&lt;/span&gt; - Generate a fault if no transaction exist. Do nothing if a transaction exist.&lt;br /&gt;4. &lt;span style="font-weight: bold;"&gt;commit&lt;/span&gt; - Commit transaction. Generate a fault if no transaction exist.&lt;br /&gt;5. &lt;span style="font-weight: bold;"&gt;rollback&lt;/span&gt; - Rollback transaction. Generate a fault if no transaction exist.&lt;br /&gt;6. &lt;span style="font-weight: bold;"&gt;suspend&lt;/span&gt; - Suspend transaction. Generate a fault if no transaction exist.&lt;br /&gt;7. &lt;span style="font-weight: bold;"&gt;resume&lt;/span&gt; - Resume transaction. Generate a fault if no transaction exist.&lt;br /&gt;&lt;br /&gt;Each of this can be use to mark the required action of the transaction process.  Following is a step by step guide which describe the transaction mediator in action. It demonstrates how we can update a database table which is a part of a distributed transaction.&lt;br /&gt;&lt;br /&gt;The transaction manager is the primary component of the distributed transaction support infrastructure, however the JDBC driver (the resource adapter) and the application server should have the following two characteristics.&lt;br /&gt;&lt;br /&gt;1. The driver should implement the JDBC 2.0 API(including the optional package interfaces &lt;span style="font-weight: bold;"&gt;XADataSource&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;XAConnection&lt;/span&gt;) or higher and the JTA interface &lt;span style="font-weight: bold;"&gt;XAResource&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;2. The application server should provide a &lt;span style="font-weight: bold;"&gt;DataSource&lt;/span&gt; class that is implemented to interact with the distributed transaction infrastructure and a connection pooling model for performance improvements.&lt;br /&gt;&lt;br /&gt;In the following example we use the JBoss JTA provider, so we need to deploy WSO2 ESB in JBoss application server. See this post on &lt;a href="http://rajikak.blogspot.com/2009/06/deploying-wso2-esb-on-jboss-application.html"&gt;deploying WSO2 ESB&lt;/a&gt; on JBoss app server. It hasn't tested yet with a standalone JTA provider such as[1], and a separate blog will follow on configuring a standalone JTA provider for transaction mediator.&lt;br /&gt;&lt;br /&gt;1. Unzip a WSO2 ESB 2.1 &lt;a href="http://wso2.org/downloads/esb"&gt;distribution&lt;/a&gt;to a place of your choice. And then remove the geronimo-jta_1.1_spec-1.1.0.wso2v1.jar from the distribution. This is because we are using the implementation of the &lt;a href="http://java.sun.com/javaee/5/docs/api/javax/transaction/TransactionManager.html"&gt;javax.transaction.TransactionManage&lt;/a&gt; interface) provided by JTA provider (here JBoss). If we have both in classpath there is a classloader problem which causes the transaction mediator to &lt;span style="font-weight: bold;"&gt;not to work&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;2. Then run the ruby script which creates a war web app of WSO2 ESB which can deploy on Jboss. This will also copy all the required configuration files, libraries and others to run WSO2 ESB on Jboss successfully. See the post on &lt;a href="http://rajikak.blogspot.com/2009/06/deploying-wso2-esb-on-jboss-application.html"&gt;deploying esb on JBOSS&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;3. We are going to use a similar configuration like &lt;a href="http://wso2.org/project/esb/java/2.1.0/docs/samples/advanced_mediation_samples.html#Sample361"&gt;sample 361&lt;/a&gt;, so drop the derby client drivers(&lt;span style="font-weight: bold;"&gt;derby.jar, derbynet.jar, derbyclient.jar and derby-plygin.jar&lt;/span&gt;) driver  into repository/components/extensions in the CARBON_HOME of step 2 and also into $JBOSS_HOME/server/default/lib. Following sql query was used to create the database.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;CREATE table company(name varchar(10) primary key, id varchar(10), price double);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;4. The synpase configuration is as follows. In the in-squence we will send a message to a service and in the out-sequence we will delete an entry from 1st database and  will update the second database with that entry. If we try to add an entry which is already there in second database we'll rollback the whole transaction( No records  will be deleted from 1st database and no recored will be added to second database).&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;definitions xmlns="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;sequence name="myFaultHandler"&amp;gt;&lt;br /&gt;    &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;        &amp;lt;property name="text" value="** Rollback Transaction**"/&amp;gt;&lt;br /&gt;    &amp;lt;/log&amp;gt;&lt;br /&gt;    &amp;lt;transaction action="rollback"/&amp;gt;&lt;br /&gt;    &amp;lt;send/&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;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;transaction action="new"/&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;            &amp;lt;property name="text" value="** Reporting to the Database esbdb**"/&amp;gt;&lt;br /&gt;        &amp;lt;/log&amp;gt;&lt;br /&gt;        &amp;lt;dbreport useTransaction="true" xmlns="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt;            &amp;lt;connection&amp;gt;&lt;br /&gt;                &amp;lt;pool&amp;gt;&lt;br /&gt;                    &amp;lt;dsName&amp;gt;java:jdbc/XADerbyDS&amp;lt;/dsName&amp;gt;&lt;br /&gt;                    &amp;lt;icClass&amp;gt;org.jnp.interfaces.NamingContextFactory&amp;lt;/icClass&amp;gt;&lt;br /&gt;                    &amp;lt;url&amp;gt;localhost:1099&amp;lt;/url&amp;gt;&lt;br /&gt;                    &amp;lt;user&amp;gt;esb&amp;lt;/user&amp;gt;&lt;br /&gt;                    &amp;lt;password&amp;gt;esb&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;!--&amp;lt;sql&amp;gt;update company set price=? where name =?&amp;lt;/sql&amp;gt;--&amp;gt;&lt;br /&gt;                &amp;lt;sql&amp;gt;delete from company where name =?&amp;lt;/sql&amp;gt;&lt;br /&gt;                &amp;lt;!--&amp;lt;parameter expression="//m0:return/m1:last/child::text()"--&amp;gt;&lt;br /&gt;                           &amp;lt;!--xmlns:m0="http://services.samples" xmlns:m1="http://services.samples/xsd"--&amp;gt;&lt;br /&gt;                           &amp;lt;!--type="DOUBLE"/&amp;gt;--&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"&lt;br /&gt;                           type="VARCHAR"/&amp;gt;&lt;br /&gt;            &amp;lt;/statement&amp;gt;&lt;br /&gt;        &amp;lt;/dbreport&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;log level="custom"&amp;gt;&lt;br /&gt;            &amp;lt;property name="text" value="** Reporting to the Database esbdb1**"/&amp;gt;&lt;br /&gt;        &amp;lt;/log&amp;gt;&lt;br /&gt;        &amp;lt;dbreport useTransaction="true" xmlns="http://ws.apache.org/ns/synapse"&amp;gt;&lt;br /&gt;            &amp;lt;connection&amp;gt;&lt;br /&gt;                &amp;lt;pool&amp;gt;&lt;br /&gt;                    &amp;lt;dsName&amp;gt;java:jdbc/XADerbyDS1&amp;lt;/dsName&amp;gt;&lt;br /&gt;                    &amp;lt;icClass&amp;gt;org.jnp.interfaces.NamingContextFactory&amp;lt;/icClass&amp;gt;&lt;br /&gt;                    &amp;lt;url&amp;gt;localhost:1099&amp;lt;/url&amp;gt;&lt;br /&gt;                    &amp;lt;user&amp;gt;esb&amp;lt;/user&amp;gt;&lt;br /&gt;                    &amp;lt;password&amp;gt;esb&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;!--&amp;lt;sql&amp;gt;update company set price=? where name =?&amp;lt;/sql&amp;gt;--&amp;gt;&lt;br /&gt;                &amp;lt;sql&amp;gt; INSERT into company values ('IBM','c4',12.0)&amp;lt;/sql&amp;gt;&lt;br /&gt;                &amp;lt;!--&amp;lt;parameter expression="//m0:return/m1:last/child::text()"--&amp;gt;&lt;br /&gt;                           &amp;lt;!--xmlns:m0="http://services.samples" xmlns:m1="http://services.samples/xsd"--&amp;gt;&lt;br /&gt;                           &amp;lt;!--type="DOUBLE"/&amp;gt;--&amp;gt;&lt;br /&gt;                &amp;lt;!--&amp;lt;parameter expression="//m0:return/m1:symbol/child::text()"--&amp;gt;&lt;br /&gt;                           &amp;lt;!--xmlns:m0="http://services.samples" xmlns:m1="http://services.samples/xsd"--&amp;gt;&lt;br /&gt;                           &amp;lt;!--type="VARCHAR"/&amp;gt;--&amp;gt;&lt;br /&gt;            &amp;lt;/statement&amp;gt;&lt;br /&gt;        &amp;lt;/dbreport&amp;gt;&lt;br /&gt;        &amp;lt;transaction action="commit"/&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;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5. You'll also need to define two datasources for derby in Jboss. Drop the following datasources deceleration for derby into $JBOSS_HOME/server/default/deploy.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;datasources&amp;gt;&lt;br /&gt;&amp;lt;xa-datasource&amp;gt;&lt;br /&gt;  &amp;lt;jndi-name&amp;gt;jdbc/XADerbyDS&amp;lt;/jndi-name&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;!-- uncomment to enable interleaving &amp;lt;interleaving/&amp;gt; --&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;isSameRM-override-value&amp;gt;false&amp;lt;/isSameRM-override-value&amp;gt;&lt;br /&gt;  &amp;lt;xa-datasource-class&amp;gt;org.apache.derby.jdbc.ClientXADataSource&amp;lt;/xa-datasource-class&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;!-- path to the database. (${jboss.server.data.dir}${/}derby${/}default didn't work on win) --&amp;gt;&lt;br /&gt;  &amp;lt;xa-datasource-property name="portNumber"&amp;gt;1527&amp;lt;/xa-datasource-property&amp;gt;&lt;br /&gt;  &amp;lt;xa-datasource-property name="DatabaseName"&amp;gt;esbdb&amp;lt;/xa-datasource-property&amp;gt;&lt;br /&gt;  &amp;lt;!--&amp;lt;xa-datasource-property name="portNumber"&amp;gt;1527&amp;lt;/xa-datasource-property&amp;gt;--&amp;gt;&lt;br /&gt;  &amp;lt;xa-datasource-property name="User"&amp;gt;esb&amp;lt;/xa-datasource-property&amp;gt;&lt;br /&gt;  &amp;lt;xa-datasource-property name="Password"&amp;gt;esb&amp;lt;/xa-datasource-property&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) --&amp;gt;&lt;br /&gt;  &amp;lt;metadata&amp;gt;&lt;br /&gt;      &amp;lt;type-mapping&amp;gt;Derby&amp;lt;/type-mapping&amp;gt;&lt;br /&gt;  &amp;lt;/metadata&amp;gt;&lt;br /&gt;&amp;lt;/xa-datasource&amp;gt;&lt;br /&gt;&amp;lt;/datasources&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;datasources&amp;gt;&lt;br /&gt;&amp;lt;xa-datasource&amp;gt;&lt;br /&gt;  &amp;lt;jndi-name&amp;gt;jdbc/XADerbyDS1&amp;lt;/jndi-name&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;!-- uncomment to enable interleaving &amp;lt;interleaving/&amp;gt; --&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;isSameRM-override-value&amp;gt;false&amp;lt;/isSameRM-override-value&amp;gt;&lt;br /&gt;  &amp;lt;xa-datasource-class&amp;gt;org.apache.derby.jdbc.ClientXADataSource&amp;lt;/xa-datasource-class&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;!-- path to the database. (${jboss.server.data.dir}${/}derby${/}default didn't work on win) --&amp;gt;&lt;br /&gt;  &amp;lt;xa-datasource-property name="portNumber"&amp;gt;1527&amp;lt;/xa-datasource-property&amp;gt;&lt;br /&gt;  &amp;lt;xa-datasource-property name="DatabaseName"&amp;gt;esbdb1&amp;lt;/xa-datasource-property&amp;gt;&lt;br /&gt;  &amp;lt;!--&amp;lt;xa-datasource-property name="portNumber"&amp;gt;1527&amp;lt;/xa-datasource-property&amp;gt;--&amp;gt;&lt;br /&gt;  &amp;lt;xa-datasource-property name="User"&amp;gt;esb&amp;lt;/xa-datasource-property&amp;gt;&lt;br /&gt;  &amp;lt;xa-datasource-property name="Password"&amp;gt;esb&amp;lt;/xa-datasource-property&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) --&amp;gt;&lt;br /&gt;  &amp;lt;metadata&amp;gt;&lt;br /&gt;      &amp;lt;type-mapping&amp;gt;Derby&amp;lt;/type-mapping&amp;gt;&lt;br /&gt;  &amp;lt;/metadata&amp;gt;&lt;br /&gt;&amp;lt;/xa-datasource&amp;gt;&lt;br /&gt;&amp;lt;/datasources&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6. We are using a variation of sample 361. So you can follow the same steps to and run the sample client.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color: rgb(251, 245, 239); color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;ant stockquote -Daddurl=http://localhost:9000/services/SimpleStockQuoteService -Dtrpurl=http://localhost:8280/ -Dsymbol=SUN&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;7. Have a look at the database table, you can see the table entry has been updated successfully.&lt;br /&gt;&lt;br /&gt;8. Now try to add an entry say symbol SUN again into the second database. You'll get an exception for duplicate entries and the whole transaction will be rolled back.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note:&lt;/span&gt;&lt;br /&gt;If you come across ClassCast exceptions make sure you don't have any *jta.jar in the app specially check the $CARBON_HOME/repository/components/dropins  folder.&lt;br /&gt;[1]-&lt;a href="http://www.atomikos.com/"&gt;http://www.atomikos.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-2305711933909986455?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/2305711933909986455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2009/08/transactional-esb-part-1-transaction.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/2305711933909986455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/2305711933909986455'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2009/08/transactional-esb-part-1-transaction.html' title='Transactional ESB - Part 1, The transaction mediator'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-7125770596384126902</id><published>2009-07-30T10:09:00.000+05:30</published><updated>2009-08-01T17:24:26.278+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='JBOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='JMS'/><title type='text'>Switching transport from JMS to https in WSO2 ESB deplyed in JBoss5</title><content type='html'>This post going to describe how you can switch transports (here from JMS to http/s) when WSO2 ESB is deployed in JBoss. The JMS provider will be the inbuilt JMS provider in JBoss application server.&lt;br /&gt;&lt;br /&gt;This was tested with the following.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;WSO2 &lt;a href="http://wso2.org/projects/esb/java"&gt;ESB 2.1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;JBoss-&lt;a href="http://www.jboss.org/jbossas/downloads/"&gt;5.0.0.GA&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;A &lt;a href="http://rajikak.blogspot.com/2009/06/deploying-wso2-esb-on-jboss-application.html"&gt;detailed description&lt;/a&gt; how WSO2 ESB2.1 can be deployed in JBoss can be found here.&lt;br /&gt;1. Before running the script do the followings. Please remove the jar &lt;span style="font-weight: bold;"&gt;geronimo-jms_1.1_spec-1.1.0.wso2v1.jar&lt;/span&gt; from the ESB2.1 distribution. The problem is this classes clashes with the JMS jars ship with JBoss application server.&lt;br /&gt;&lt;br /&gt;2. Next starts the JBoss application server. You'll end up with having the following execpetion.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(60, 120, 181); margin: 10px 10px 10px 30px; padding: 3px; background-color:#FBF5EF; color: black; overflow-x: auto; text-align: left; width: 680px;"&gt;&lt;br /&gt;10:27:28,124 INFO  [STDOUT] 10:27:28,123 FATAL [CarbonServerManager] WSO2 Carbon initialization Failed&lt;br /&gt;org.apache.axis2.deployment.DeploymentException: javax/jms/JMSException&lt;br /&gt;at org.apache.axis2.deployment.AxisConfigBuilder.processTransportSenders(AxisConfigBuilder.java:712)&lt;br /&gt;at org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfigBuilder.java:121)&lt;br /&gt;at org.wso2.carbon.core.CarbonAxisConfigurator.populateAxisConfiguration(CarbonAxisConfigurator.java:259)&lt;br /&gt;at org.wso2.carbon.core.CarbonAxisConfigurator.getAxisConfiguration(CarbonAxisConfigurator.java:179)&lt;br /&gt;at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:64)&lt;br /&gt;at org.wso2.carbon.core.CarbonConfigurationContextFactory.createNewConfigurationContext(CarbonConfigurationContextFactory.java:76)&lt;br /&gt;at org.wso2.carbon.core.init.CarbonServerManager.initializeCarbon(CarbonServerManager.java:310)&lt;br /&gt;at org.wso2.carbon.core.init.CarbonServerManager.removePendingItem(CarbonServerManager.java:228)&lt;br /&gt;at org.wso2.carbon.core.init.OSGiAxis2ServicesListener.bundleChanged(OSGiAxis2ServicesListener.java:82)&lt;br /&gt;at org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:916)&lt;br /&gt;at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:220)&lt;br /&gt;at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:330)&lt;br /&gt;Caused by: java.lang.NoClassDefFoundError: javax/jms/JMSException&lt;br /&gt;at java.lang.Class.getDeclaredConstructors0(Native Method)&lt;br /&gt;at java.lang.Class.privateGetDeclaredConstructors(Class.java:2357)&lt;br /&gt;at java.lang.Class.getConstructor0(Class.java:2671)&lt;br /&gt;at java.lang.Class.newInstance0(Class.java:321)&lt;br /&gt;at java.lang.Class.newInstance(Class.java:303)&lt;br /&gt;at org.apache.axis2.deployment.AxisConfigBuilder.processTransportSenders(AxisConfigBuilder.java:697)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This is due to a class loading problem which is &lt;a href="http://wso2.org/mailarchive/carbon-dev/2009-July/035115.html"&gt;describes&lt;/a&gt; here. To avoid this do the following.  Shut down the JBOss server and open the jar &lt;span style="font-weight: bold;"&gt;org.wso2.carbon.servletbridge_1.0.0.jar&lt;/span&gt; located in $CARBON_HOME/repository/components/plugins directory. Open  the jar with archive manager and open the MANIFEST.MF in the jar. We know, this is not the proper way to do it and we are &lt;a href="http://wso2.org/projects/carbon"&gt;working &lt;/a&gt;on it getting it right.&lt;br /&gt;&lt;br /&gt;Your MANIFEST.MF will looks like follows.&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;Manifest-Version: 1.0&lt;br /&gt;Bundle-Name: Servletbridge Extension Bundle&lt;br /&gt;Bundle-ManifestVersion: 2&lt;br /&gt;Fragment-Host: system.bundle; extension:=framework&lt;br /&gt;Bundle-SymbolicName: org.wso2.carbon.servletbridge&lt;br /&gt;Export-Package: org.wso2.carbon.bridge; version=1.0.0, org.wso2.carbon&lt;br /&gt;.server.transports; version=1.0.0, javax.servlet; version=2.5, javax.&lt;br /&gt;servlet.http; version=2.5, javax.servlet.resources; version=2.5&lt;br /&gt;Bundle-Version: 1.0.0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Add &lt;span style="font-weight: bold;"&gt;javax.jms&lt;/span&gt; to the list of Export-Package, so that it will looks like below, or just copy the following into the MNIFEST.MF&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;Manifest-Version: 1.0&lt;br /&gt;Bundle-Name: Servletbridge Extension Bundle&lt;br /&gt;Bundle-ManifestVersion: 2&lt;br /&gt;Fragment-Host: system.bundle; extension:=framework&lt;br /&gt;Bundle-SymbolicName: org.wso2.carbon.servletbridge&lt;br /&gt;Export-Package: org.wso2.carbon.bridge; version=1.0.0, org.wso2.carbon&lt;br /&gt;.server.transports; version=1.0.0, javax.servlet; version=2.5, javax.&lt;br /&gt;servlet.http; version=2.5, javax.servlet.resources; version=2.5,javax.jms&lt;br /&gt;Bundle-Version: 1.0.0&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;3. Now you need to configure the Queues in JBoss JMS provider. We are using the sample &lt;a href="http://wso2.org/project/esb/java/2.1.0/docs/samples/transport_samples.html#Sample250"&gt;250&lt;/a&gt;. Add the following stockquote-proxy-service.xml into $JBOSS_HOME/server/default/deploy so that it will create the required queues. WSO2 ESB uses WSO2 carbon underline and it requires few other services to run. So we create queues for those services as well.&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;&amp;lt;server&gt;&lt;br /&gt;&amp;lt;!--       The Default Dead Letter Queue. This destination is a dependency of an EJB MDB container.    --&gt;&lt;br /&gt;&amp;lt;mbean code="org.jboss.jms.server.destination.QueueService" name="jboss.messaging.destination:service=Queue,name=XKMS" dd="xmdesc/Queue-xmbean.xml"&gt;&lt;br /&gt; &amp;lt;depends name="ServerPeer"&gt;jboss.messaging:service=ServerPeer&lt;/depends&gt;&lt;br /&gt; &amp;lt;depends&gt;jboss.messaging:service=PostOffice&lt;/depends&gt;&lt;br /&gt;&amp;lt;/mbean&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mbean code="org.jboss.jms.server.destination.QueueService" name="jboss.messaging.destination:service=Queue,name=wso2carbon-sts" dd="xmdesc/Queue-xmbean.xml"&amp;gt;&lt;br /&gt; &amp;lt;depends name="ServerPeer"&gt;jboss.messaging:service=ServerPeer&amp;lt;/depends&amp;gt;&lt;br /&gt; &amp;lt;depends&gt;jboss.messaging:service=PostOffice&amp;lt;/depends&amp;gt;&lt;br /&gt;&amp;lt;/mbean&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mbean code="org.jboss.jms.server.destination.QueueService" name="jboss.messaging.destination:service=Queue,name=StockQuoteProxy" dd="xmdesc/Queue-xmbean.xml"&amp;gt;&lt;br /&gt; &amp;lt;depends name="ServerPeer"&gt;jboss.messaging:service=ServerPeer&amp;lt;/depends&amp;gt;&lt;br /&gt; &amp;lt;depends&gt;jboss.messaging:service=PostOffice&amp;lt;/depends&amp;gt;&lt;br /&gt;&amp;lt;/mbean&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mbean code="org.jboss.jms.server.destination.QueueService" name="jboss.messaging.destination:service=Queue,name=echo" dd="xmdesc/Queue-xmbean.xml"&amp;gt;&lt;br /&gt; &amp;lt;depends name="ServerPeer"&gt;jboss.messaging:service=ServerPeer&amp;lt;/depends&amp;gt;&lt;br /&gt; &amp;lt;depends&gt;jboss.messaging:service=PostOffice&amp;lt;/depends&amp;gt;&lt;br /&gt;&amp;lt;/mbean&amp;gt;&lt;br /&gt;&amp;lt;/server&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;4. Now it's time to run the client. Your the following client to run. Add the following JBoss JMS client libraries into client's class path. These jars can be found inside client folder within Jboss discribution.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;jnp-client.jar&lt;/li&gt;&lt;li&gt;jboss-logging-jdk.jar&lt;/li&gt;&lt;li&gt;jboss-logging-log4j.jar&lt;/li&gt;&lt;li&gt;jboss-logging-spi.jar&lt;/li&gt;&lt;li&gt;jboss-messaging-client.jar&lt;/li&gt;&lt;li&gt;jboss-aop-client.jar&lt;/li&gt;&lt;li&gt;jboss-mdr.jar&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt; The set up is same as sample# 250, just deploy the Simple StockQuote service on simple axis2 server. Just follow the &lt;a href="http://wso2.org/project/esb/java/2.1.0/docs/samples_index.html"&gt;sample guide&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;/*&lt;br /&gt;*  Licensed to the Apache Software Foundation (ASF) under one&lt;br /&gt;*  or more contributor license agreements.  See the NOTICE file&lt;br /&gt;*  distributed with this work for additional information&lt;br /&gt;*  regarding copyright ownership.  The ASF licenses this file&lt;br /&gt;*  to you under the Apache License, Version 2.0 (the&lt;br /&gt;*  "License"); you may not use this file except in compliance&lt;br /&gt;*  with the License.  You may obtain a copy of the License at&lt;br /&gt;*&lt;br /&gt;*   http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;*&lt;br /&gt;*  Unless required by applicable law or agreed to in writing,&lt;br /&gt;*  software distributed under the License is distributed on an&lt;br /&gt;*   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY&lt;br /&gt;*  KIND, either express or implied.  See the License for the&lt;br /&gt;*  specific language governing permissions and limitations&lt;br /&gt;*  under the License.&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;package samples.userguide;&lt;br /&gt;&lt;br /&gt;import javax.jms.BytesMessage;&lt;br /&gt;import javax.jms.Queue;&lt;br /&gt;import javax.jms.QueueConnection;&lt;br /&gt;import javax.jms.QueueConnectionFactory;&lt;br /&gt;import javax.jms.QueueSender;&lt;br /&gt;import javax.jms.QueueSession;&lt;br /&gt;import javax.jms.TextMessage;&lt;br /&gt;import javax.naming.InitialContext;&lt;br /&gt;import javax.naming.NamingException;&lt;br /&gt;import java.util.Properties;&lt;br /&gt;import java.io.File;&lt;br /&gt;import java.io.FileInputStream;&lt;br /&gt;import java.io.InputStream;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;&lt;br /&gt;public class GenericJMSClient {&lt;br /&gt; private QueueConnection connection;&lt;br /&gt; private QueueSession session;&lt;br /&gt; private QueueSender sender;&lt;br /&gt;&lt;br /&gt; private static String getProperty(String name, String def) {&lt;br /&gt;     String result = System.getProperty(name);&lt;br /&gt;     if (result == null || result.length() == 0) {&lt;br /&gt;         result = def;&lt;br /&gt;     }&lt;br /&gt;     return result;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String[] args) throws Exception {&lt;br /&gt;&lt;br /&gt;     String dest  = getProperty("jms_dest", "dynamicQueues/JMSTextProxy");&lt;br /&gt;     String type  = getProperty("jms_type", "text");&lt;br /&gt;     String param = getProperty("jms_payload",&lt;br /&gt;         getRandom(100, 0.9, true) + " " + (int) getRandom(10000, 1.0, true) + " IBM");&lt;br /&gt;     String sMsgCount = getProperty("jms_msgcount", null);&lt;br /&gt;&lt;br /&gt;     GenericJMSClient app = new GenericJMSClient();&lt;br /&gt;     int msgCount = sMsgCount == null ? 1 : Integer.parseInt(sMsgCount);&lt;br /&gt;     app.connect(dest);&lt;br /&gt;     if ("text".equalsIgnoreCase(type)) {&lt;br /&gt;         for (int i=0; i&lt;msgcount; else="" if="" binary="" for="" int="" i="0;"&gt;&lt;msgcount; else="" if="" pox="" for="" int="" i="0;"&gt;&lt;msgcount;&gt;&lt;m:placeorder m="\&amp;quot;http://services.samples\&amp;quot;"&gt;\n" +&lt;br /&gt;                 "    &lt;m:order&gt;\n" +&lt;br /&gt;                 "        &lt;m:price&gt;" + getRandom(100, 0.9, true) + "&lt;/m:price&gt;\n" +&lt;br /&gt;                 "        &lt;m:quantity&gt;" + (int) getRandom(10000, 1.0, true) + "&lt;/m:quantity&gt;\n" +&lt;br /&gt;                 "        &lt;m:symbol&gt;" + param + "&lt;/m:symbol&gt;\n" +&lt;br /&gt;                 "    &lt;/m:order&gt;\n" +&lt;br /&gt;                 "&lt;/m:placeorder&gt;");&lt;br /&gt;         }&lt;br /&gt;     } else {&lt;br /&gt;         System.out.println("Unknown JMS message type");&lt;br /&gt;     }&lt;br /&gt;     app.shutdown();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private void connect(String destName) throws Exception {&lt;br /&gt;     Properties env = new Properties();&lt;br /&gt;     String factoryURL = getProperty("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");&lt;br /&gt;     String connectionFactoryName = getProperty("transport.jms.ConnectionFactoryJNDIName","ConnectionFactory");&lt;br /&gt;     if (System.getProperty("java.naming.provider.url") == null) {&lt;br /&gt;         env.put("java.naming.provider.url", "tcp://localhost:61616");&lt;br /&gt;     }&lt;br /&gt;     if (System.getProperty("java.naming.factory.initial") == null) {&lt;br /&gt;         env.put("java.naming.factory.initial",&lt;br /&gt;             "org.apache.activemq.jndi.ActiveMQInitialContextFactory");&lt;br /&gt;     }&lt;br /&gt;     if(factoryURL != null){&lt;br /&gt;         env.put("java.naming.factory.url.pkgs", factoryURL);&lt;br /&gt;     }&lt;br /&gt;     if(connectionFactoryName != null){&lt;br /&gt;         env.put("transport.jms.ConnectionFactoryJNDIName", connectionFactoryName);&lt;br /&gt;     }&lt;br /&gt;     InitialContext ic = new InitialContext(env);&lt;br /&gt;     QueueConnectionFactory confac = (QueueConnectionFactory) ic.lookup("ConnectionFactory");&lt;br /&gt;     connection = confac.createQueueConnection();&lt;br /&gt;     session = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);&lt;br /&gt;     sender = session.createSender((Queue)ic.lookup(destName));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private void shutdown() throws Exception {&lt;br /&gt;     sender.close();&lt;br /&gt;     session.close();&lt;br /&gt;     connection.close();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private void sendBytesMessage(byte[] payload) throws Exception {&lt;br /&gt;     BytesMessage bm = session.createBytesMessage();&lt;br /&gt;     bm.writeBytes(payload);&lt;br /&gt;     sender.send(bm);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private void sendTextMessage(String payload) throws Exception {&lt;br /&gt;     TextMessage tm = session.createTextMessage(payload);&lt;br /&gt;     sender.send(tm);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static byte[] getBytesFromFile(String fileName) throws IOException {&lt;br /&gt;&lt;br /&gt;     File file = new File(fileName);&lt;br /&gt;     InputStream is = new FileInputStream(file);&lt;br /&gt;     long length = file.length();&lt;br /&gt;&lt;br /&gt;     byte[] bytes = new byte[(int) length];&lt;br /&gt;&lt;br /&gt;     int offset = 0;&lt;br /&gt;     int numRead = 0;&lt;br /&gt;     while (offset &lt; numread =" is.read(bytes,"&gt;= 0) {&lt;br /&gt;         offset += numRead;&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     // Ensure all the bytes have been read in&lt;br /&gt;     if (offset &lt; rand =" Math.random();"&gt; 0.5 ? 1 : -1) * varience * base * rand))&lt;br /&gt;         * (onlypositive ? 1 : (rand &gt; 0.5 ? 1 : -1));&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/msgcount;&gt;&lt;/msgcount;&gt;&lt;/msgcount;&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5. Run the client with following argument.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;ant jmsclien -Djms_type=pox -Djms_dest=queue/StockQuoteProxy -Djms_payload=MSFT -Djava.naming.provider.url=jnp://localhost:1099&lt;br /&gt;-Djava.naming.factory.initial=org.jnp.interfaces.NamingContextFactory&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/8648017967226408418-7125770596384126902?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/7125770596384126902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2009/07/switching-transport-from-jms-to-https.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7125770596384126902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7125770596384126902'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2009/07/switching-transport-from-jms-to-https.html' title='Switching transport from JMS to https in WSO2 ESB deplyed in JBoss5'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-5096126204076589395</id><published>2009-07-27T21:41:00.000+05:30</published><updated>2009-08-01T17:25:22.441+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='JBOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='JBoss messeging'/><title type='text'>Getting JBossMessaging(JBM) working with Apache Synpase</title><content type='html'>This is a step by step guide to get JBossMessaging(JBM) working with synapse latest trunk(SNAPSHOT). You need to download JBM from here. I tested with Beta3 release.&lt;br /&gt;&lt;br /&gt;1. Download JBM and put the following jars into synapse lib folder&lt;br /&gt;&lt;ul&gt;&lt;li&gt;jbm-core-client.jar&lt;/li&gt;&lt;li&gt;jbm-jms-client.jar&lt;/li&gt;&lt;li&gt;jnp-client.jar&lt;/li&gt;&lt;li&gt;jbm-transports.jar&lt;/li&gt;&lt;li&gt;netty.jar&lt;/li&gt;&lt;/ul&gt;The fist three jars can be found in the client folder and the last two jars can be found in the lib folder once you unzipped JBM distribution.&lt;br /&gt;&lt;br /&gt;2. Add the following entry to axis2.xml which can be found in $SYNAPSE_HOME/repository/conf/axis2.xml&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;&amp;lt;transportreceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener"&amp;gt;&lt;br /&gt;  &amp;lt;parameter name="java.naming.factory.initial"&amp;gt;org.jnp.interfaces.NamingContextFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;  &amp;lt;parameter name="java.naming.provider.url"&amp;gt;jnp://localhost:1099&amp;lt;/parameter&amp;gt;&lt;br /&gt;  &amp;lt;parameter name="java.naming.factory.url.pkgs"&amp;gt;org.jboss.naming:org.jnp.interfaces&amp;lt;/parameter&amp;gt;&lt;br /&gt;  &amp;lt;parameter name="transport.jms.ConnectionFactoryJNDIName"&amp;gt;ConnectionFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/transportreceiver&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;transportsender name="jms" class="org.apache.axis2.transport.jms.JMSSender"&amp;gt;&lt;br /&gt;&amp;lt;/transportsender&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. Add the following entry to the jbossmq-jms configuration file(config/stand-alone/non-clustered/jbm-jms.xml once you unzipped the JBM distribution) to define the queue for the service.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;&amp;lt;queue name="StockQuoteProxy"&amp;gt;&lt;br /&gt; &amp;lt;entry name="StockQuoteProxy"&amp;gt;&lt;br /&gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;&amp;lt;/queue&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;4. Change the sample JMS client which comes with synapse distribution to have the JBM releated JNDI configurations.&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;Properties env = new Properties();&lt;br /&gt;if (System.getProperty("java.naming.provider.url") == null) {&lt;br /&gt;           //env.put("java.naming.provider.url", "tcp://localhost:61616");&lt;br /&gt;           env.put("java.naming.provider.url", "jnp://localhost:1099");&lt;br /&gt;}&lt;br /&gt;if (System.getProperty("java.naming.factory.initial") == null) {&lt;br /&gt;           //env.put("java.naming.factory.initial","org.apache.activemq.jndi.ActiveMQInitialContextFactory");&lt;br /&gt;           env.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");&lt;br /&gt;}&lt;br /&gt;env.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");&lt;br /&gt;env.put("transport.jms.ConnectionFactoryJNDIName","ConnectionFactory");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;5. Run the sample client.&lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;ant jmsclient -Djms_type=pox -Djms_dest=StockQuoteProxy -Djms_payload=MSFT&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/8648017967226408418-5096126204076589395?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/5096126204076589395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2009/07/getting-jbossmessagingjbm-working-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5096126204076589395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/5096126204076589395'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2009/07/getting-jbossmessagingjbm-working-with.html' title='Getting JBossMessaging(JBM) working with Apache Synpase'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-7749873301638586804</id><published>2009-07-25T21:40:00.000+05:30</published><updated>2009-07-25T23:01:28.350+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='CMake'/><category scheme='http://www.blogger.com/atom/ns#' term='axis2/c'/><title type='text'>CMake based build system for Axis2/C</title><content type='html'>This post is about the new &lt;a href="http://www.cmake.org/"&gt;CMake&lt;/a&gt; based build system for &lt;a href="http://ws.apache.org/axis2/c/"&gt;Axis2/C&lt;/a&gt;. Once the &lt;a href="https://issues.apache.org/jira/browse/AXIS2C-1381"&gt;patch&lt;/a&gt; applies to the Axis2/C trunk the Axis2/C community will benefit from it.&lt;br /&gt;&lt;a href="http://cmake.org/"&gt;&lt;br /&gt;CMake&lt;/a&gt; is a cross platform build system. It generates build files for native build environments(i.e. Makefile for UNIX/Linux, VS Projects/Workspaces for Windows and Xcode for Apple). It's doing the same job as popular &lt;a href="http://en.wikipedia.org/wiki/GNU_build_system"&gt;GNU build tools&lt;/a&gt;(autoconf, automake, Libtool). CMake has a lot of cool &lt;a href="http://www.cmake.org/Wiki/Really_Cool_CMake_Features"&gt;features&lt;/a&gt;. Some of are listed below. And CMake is opensource.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CMake features&lt;/span&gt;&lt;br /&gt;1. Manage, complex and large build environments (eg: KDE4)&lt;br /&gt;2. Very Flexible and Extensible.&lt;br /&gt;3. Very simple script language for build script writing.&lt;br /&gt;4. Support both in-source and out-source builds.&lt;br /&gt;5. Cross compiling.&lt;br /&gt;6. Integrated testing and packaging tools(CTest, CPack)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Instructions to use CMake build system for Axis2/C on UNIX/Linux&lt;/span&gt;&lt;br /&gt;The build has written to run as a out of source build. This mean that the build files and then object files will be generated out side of the main source tree.&lt;br /&gt;Once you checkout the soure from the trunk, issue the following commands to build Axis2/C using CMake. You need to have &lt;a href="http://cmake.org/cmake/resources/software.html"&gt;CMake installed&lt;/a&gt;(2.6 or above)  on your system.&lt;br /&gt;&lt;br /&gt;1. &lt;span style="font-weight:bold;"&gt;export AXIS2C_HOME=/path/where/you/want/axis2c/to/live&lt;/span&gt;&lt;br /&gt;(e.g.: export AXIS2C_HOME=/home/rajika/project/axis2c/axis2-build/deploy)&lt;br /&gt;&lt;br /&gt;2. &lt;span style="font-weight:bold;"&gt;mkdir axis2c-build&lt;/span&gt;(assuming you are at /home/rajika/project/axis2c/)&lt;br /&gt;&lt;br /&gt;3. &lt;span style="font-weight:bold;"&gt;cd axis2c-build&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4. &lt;span style="font-weight:bold;"&gt;cmake ../&lt;/span&gt; (you have checked out the Axis2/C source into /home/rajika/project/axis2c/)&lt;br /&gt;&lt;br /&gt;5. &lt;span style="font-weight:bold;"&gt;make&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;6. &lt;span style="font-weight:bold;"&gt;make install&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Done!. You'll see all the binaries are available inside deploy directory together with the libraries and the configuration files requires to run the server and the samples successfully.&lt;br /&gt;&lt;br /&gt;It built within less than 20 seconds in my laptop(running Fedora 10 with gcc 4.3.2 with Dual core processors-2.20GHz,2.20GHz and with 3GB of physical memory). Following are few screen shots of Axis2/C CMake build in action. You'll notice the cool CMake features there.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hha64Sbr4OI/Sms_yMI9cFI/AAAAAAAAABM/iOpWx2ZcYqc/s1600-h/Screenshot-2.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 250px;" src="http://3.bp.blogspot.com/_hha64Sbr4OI/Sms_yMI9cFI/AAAAAAAAABM/iOpWx2ZcYqc/s320/Screenshot-2.png" alt="" id="BLOGGER_PHOTO_ID_5362449912799522898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hha64Sbr4OI/SmtAGOIgPBI/AAAAAAAAABU/AxP9hzUBgh8/s1600-h/Screenshot-3.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 250px;" src="http://2.bp.blogspot.com/_hha64Sbr4OI/SmtAGOIgPBI/AAAAAAAAABU/AxP9hzUBgh8/s320/Screenshot-3.png" alt="" id="BLOGGER_PHOTO_ID_5362450256931863570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_hha64Sbr4OI/SmtAay8ChcI/AAAAAAAAABc/k5yl6VLemGQ/s1600-h/Screenshot-4.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 250px;" src="http://3.bp.blogspot.com/_hha64Sbr4OI/SmtAay8ChcI/AAAAAAAAABc/k5yl6VLemGQ/s400/Screenshot-4.png" alt="" id="BLOGGER_PHOTO_ID_5362450610409080258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A separate blog will follow describing how to extend the new build system when extending Axis2/C using samples(client+services), transports and message receivers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-7749873301638586804?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/7749873301638586804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2009/07/cmake-based-build-system-for-axis2c.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7749873301638586804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7749873301638586804'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2009/07/cmake-based-build-system-for-axis2c.html' title='CMake based build system for Axis2/C'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_hha64Sbr4OI/Sms_yMI9cFI/AAAAAAAAABM/iOpWx2ZcYqc/s72-c/Screenshot-2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-7888347045199340866</id><published>2009-07-10T17:19:00.000+05:30</published><updated>2009-07-10T17:26:12.653+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='carbon'/><title type='text'>WSO2 Enterprise Service Bus (ESB) 2.1.0 Released!</title><content type='html'>The WSO2 ESB team is pleased to announce the release of version 2.1.0 of the Open Source Enterprise Service Bus (ESB).&lt;br /&gt;&lt;br /&gt;WSO2 ESB is a lightweight and easy-to-use Open Source Enterprise Service Bus (ESB) available under the Apache Software License v2.0. 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 Apache Synapse core.&lt;br /&gt;&lt;br /&gt;WSO2 ESB 2.1.0 is developed on top of the revolutionary Carbon platform (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;br /&gt;&lt;br /&gt;You can download this distribution from http://wso2.org/downloads/esb and give it a try.&lt;br /&gt;How to Run&lt;br /&gt;&lt;br /&gt;   1. Extract the downloaded zip&lt;br /&gt;   2. Go to the bin directory in the extracted folder&lt;br /&gt;   3. Run the wso2server.sh or wso2server.bat as appropriate&lt;br /&gt;   4. Point your browser to the URL https://localhost:9443/carbon&lt;br /&gt;   5. Use "admin", "admin" as the username and password to login as an admin and create a user account&lt;br /&gt;   6. Assign the required permissions to the user through a role&lt;br /&gt;   7. 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;br /&gt;   8. 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;br /&gt;&lt;br /&gt;Key Features of WSO2 ESB&lt;br /&gt;&lt;br /&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;br /&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;br /&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;br /&gt;    * Easily extendable via custom Java class (mediator and command)/Spring mediators, or BSF Scripting languages (Javascript, Ruby, Groovy, etc.)&lt;br /&gt;    * Built in support for scheduling tasks using the Quartz scheduler.&lt;br /&gt;    * Load-balancing (with or without sticky sessions)/Fail-over, and clustered Throttling and Caching support&lt;br /&gt;    * WS-Security, WS-Reliable Messaging, Caching &amp; Throttling configurable via (message/operation/service level) WS-Policies&lt;br /&gt;    * Lightweight, XML and Web services centric messaging model&lt;br /&gt;    * Support for industrial standards (Hessian binary web service protocol/ Financial Information eXchange protocol and optional Helth Level-7 protocol)&lt;br /&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;br /&gt;    * Support for message splitting &amp; aggregation using the EIP and service callouts&lt;br /&gt;    * Database lookup &amp; store support with DBMediators with reusable database connection pools&lt;br /&gt;    * WS-Eventing support with event sources and event brokering&lt;br /&gt;    * Rule based mediation of the messages using the Drools rule engine&lt;br /&gt;    * Transactions support via the JMS transport and Transaction mediator for database mediators&lt;br /&gt;    * Internationalized GUI management console with user/permission management for configuration development and monitoring support with statistics, configurable logging and tracing&lt;br /&gt;    * JMX monitoring support and JMX management capabilities like, Gracefull/Forcefull shutdown/restart&lt;br /&gt;&lt;br /&gt;New Features of the WSO2 ESB 2.1.0&lt;br /&gt;&lt;br /&gt;    * This ESB release is based on Carbon "Middleware a' la carte" which is an OSGi based SOA platform version 2.0 by WSO2 Inc.&lt;br /&gt;    * Rule based mediation via Drools&lt;br /&gt;    * Fine grained autherization for services via the Entitlement mediator&lt;br /&gt;    * Reliable-Messaging specification 1.1 support&lt;br /&gt;    * Enhanced WS-Eventing support and Event Sources making it an even broker&lt;br /&gt;    * Enhanced AJAX based sequence, endpoint and proxy service editors&lt;br /&gt;    * Enhanced transport configuration management through the graphical console&lt;br /&gt;    * Enhanced integrated registry and search functionalities with versionning, notifications, rating of resources, and commenting&lt;br /&gt;    * Enhanced remote registry support&lt;br /&gt;    * Default persistence to the registry for the configuration elements&lt;br /&gt;    * Enhanced permission model with the user management&lt;br /&gt;    * Enhanced REST/GET and other HTTP method support&lt;br /&gt;    * P2 based OSGi feature support, for optional features like service management, runtime governance and so on..&lt;br /&gt;&lt;br /&gt;How You Can Contribute&lt;br /&gt;Mailing Lists&lt;br /&gt;&lt;br /&gt;Join our mailing list and correspond with the developers directly.&lt;br /&gt;&lt;br /&gt;    * Developer List : esb-java-dev@wso2.org | Subscribe | Mail Archive&lt;br /&gt;    * User List : esb-java-user@wso2.org | Subscribe | Mail Archive&lt;br /&gt;&lt;br /&gt;Reporting Issues&lt;br /&gt;&lt;br /&gt;WSO2 encourages you to report issues and your enhancement requests for the WSO2 ESB using the public JIRA.&lt;br /&gt;&lt;br /&gt;You can also watch how they are resolved, and comment on the progress..&lt;br /&gt;Discussion Forums&lt;br /&gt;&lt;br /&gt;Alternatively, questions could be raised using the forums available.&lt;br /&gt;&lt;br /&gt;WSO2 ESB Forum : Discussion forum for WSO2 ESB developers/users&lt;br /&gt;Training&lt;br /&gt;&lt;br /&gt;WSO2 Inc. offers a variety of professional Training Programs, including training on general Web services as well as WSO2 ESB, Apache Synapse, Apache Axis2 and number of other products.&lt;br /&gt;&lt;br /&gt;For additional support information please refer to http://wso2.com/training/course-catalog/&lt;br /&gt;Support&lt;br /&gt;&lt;br /&gt;WSO2 Inc. offers a variety of development and production support programs, ranging from Web-based support up through normal business hours, to premium 24x7 phone support.&lt;br /&gt;&lt;br /&gt;For additional support information please refer to http://wso2.com/support/&lt;br /&gt;&lt;br /&gt;For more information on WSO2 ESB, visit the WSO2 Oxygen Tank (http://wso2.org)&lt;br /&gt;&lt;br /&gt;We welcome your feedback on this implementation. Thank you for your interest in WSO2 ESB.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-- The WSO2 ESB Team --&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-7888347045199340866?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/7888347045199340866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2009/07/wso2-enterprise-service-bus-esb-210.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7888347045199340866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7888347045199340866'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2009/07/wso2-enterprise-service-bus-esb-210.html' title='WSO2 Enterprise Service Bus (ESB) 2.1.0 Released!'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-1753818085226279557</id><published>2009-06-15T21:00:00.000+05:30</published><updated>2009-08-01T17:48:07.471+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='JBOSS'/><category scheme='http://www.blogger.com/atom/ns#' term='WSO2 ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='carbon'/><title type='text'>Deploying wso2 ESB on JBOSS application server</title><content type='html'>This is a step by step guide describing deploying &lt;a href="http://wso2.org/projects/esb/java"&gt;WSO2 ESB&lt;/a&gt; on jboss-5.1.0.GA on linux platform. The steps should be same for windows as well. &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Step1&lt;/span&gt;&lt;br /&gt;* &lt;a href="http://www.jboss.org/jbossas/downloads/"&gt;Download&lt;/a&gt;, unzip and install JBOSS 5.1 GA. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step2&lt;/span&gt;&lt;br /&gt;* &lt;a href="http://wso2.org/downloads/esb"&gt;Download&lt;/a&gt;, unzip WSO2 ESB 2.0.2&lt;br /&gt;* Copy conf, database, repository and resources directories in to a folder namely wso2esb (Eg: /home/rajika/wso2esb)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step3&lt;/span&gt;&lt;br /&gt;* Create a new folder called wso2esb.war in location JBOSS_HOME/server/default/deploy directory.&lt;br /&gt;Where JBOSS_HOME point to the JBOSS unzipped location in Step1.&lt;br /&gt;* Copy the WEB-INF folder located in wso2esb-2.0.2/webapps/ROOT/WEB-INF to JBOSS_HOME/server/default/deploy/wso2esb.war &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step4&lt;/span&gt;&lt;br /&gt;* Open file JBOSS_HOME/server/default/deploy/jbossweb.sar/server.xml and paste the following entry.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Note:&lt;/span&gt; Remember to replace the keystoreFile path to the place where you have unzipped wso2 esb.&lt;br /&gt; &lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;&amp;lt;Connector protocol="HTTP/1.1" SSLEnabled="true"&lt;br /&gt;           port="8443" address="${jboss.bind.address}"&lt;br /&gt;           scheme="https" secure="true" clientAuth="false"&lt;br /&gt;           keystoreFile="/home/rajika/work/esb-repo/resources/security/wso2carbon.jks"&lt;br /&gt;           keystorePass="wso2carbon" sslProtocol="TLS"&amp;gt;&lt;br /&gt;&amp;lt;/Connector&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step5&lt;/span&gt;&lt;br /&gt;* Open file carbon.xml which can be found at location wso2esb/conf directory.&lt;br /&gt;Edit the ServerURL element as &lt;span style="font-style:italic;"&gt;&lt;ServerURL&gt;https://localhost:8443/wso2esb/services/&lt;/ServerURL&gt;&lt;/span&gt;&lt;br /&gt;* Save and close the carbon.xml file&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step6&lt;/span&gt;&lt;br /&gt;* Open registry.xml which can be found at location wso2esb/conf directory.&lt;br /&gt;Edit the DB URL as &lt;span style="font-style:italic;"&gt;&lt;url&gt;jdbc:h2:/home/rajika/work/esb-repo/database/WSO2CARBON_DB&lt;/url&gt;&lt;/span&gt;&lt;br /&gt;* Save and close the registry.xml file.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step7&lt;/span&gt;&lt;br /&gt;* Open user-mgt.xml which can be found at location wso2esb/conf directory.  &lt;br /&gt;Edit the DB URL as &lt;span style="font-style:italic;"&gt;&lt;url&gt;jdbc:h2:/home/rajika/work/esb-repo/database/WSO2CARBON_DB&lt;/url&gt;&lt;/span&gt;&lt;br /&gt;* Save and close the user-mgt.xml file.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step8&lt;/span&gt;&lt;br /&gt;* Open file axis2.xml which can be found at location wso2esb/conf directory.&lt;br /&gt;Edit the port as&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;transportReceiver name="http" class="org.wso2.carbon.core.transports.http.HttpTransportListener"&gt;&lt;parameter name="port"&gt;8080&lt;/parameter&gt;&lt;/transportReceiver&gt;&lt;br /&gt;&lt;transportReceiver name="https" class="org.wso2.carbon.core.transports.http.HttpsTransportListener"&gt;&lt;parameter name="port"&gt;8443&lt;/parameter&gt;&lt;/transportReceiver&gt;&lt;/span&gt;&lt;br /&gt;* Save and close the axis2.xml file&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Step9&lt;/span&gt;&lt;br /&gt;* export CARBON_HOME=/where/you/placed/esb-repo&lt;br /&gt;* Run JBOSS using run.sh script which can be found inside bin directory. &lt;br /&gt;* Point your web browser to &lt;a href="http://localhost:8443/esb/carbon"&gt;https://localhost:8443/esb/carbon&lt;/a&gt;. &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Note:&lt;/span&gt; You can edit the context root in axis2.xml (contextRoot parameter)&lt;br /&gt;&lt;br /&gt;Following is a ruby script which automate the process. Again remember to edit the locations to suit your requirement. &lt;br /&gt;&lt;pre style="background-color:#FBF5EF;border:1px dashed&lt;br /&gt;#3C78B5;color:black;margin:10px 10px 10px 30px;overflow-x:auto;padding:&lt;br /&gt;3px;text-align:left;width:680px;"&gt;&lt;br /&gt;require 'rexml/document'&lt;br /&gt;include REXML&lt;br /&gt;&lt;br /&gt;#Set esb_repo (Any directory in the local file system), CARBON_BIN_HOME(Home directory of the CARBON binary distribution) and JBOSS_HOME (Home directory of the jboss binary)&lt;br /&gt;&lt;br /&gt;$esb_repo = "/home/rajika/work/esb-repo"&lt;br /&gt;$CARBON_BIN_HOME= "/home/rajika/projects/esbjava/java/modules/distribution/target/wso2esb-2.1.0.SNAPSHOT"&lt;br /&gt;$JBOSS_HOME= "/home/rajika/installtion/jboss/jboss-5.1.0.GA"&lt;br /&gt;&lt;br /&gt;############################################################################################################&lt;br /&gt;&lt;br /&gt;def createCarbonDirs()&lt;br /&gt;&lt;br /&gt;system("mkdir #$esb_repo")&lt;br /&gt;system("mkdir #$esb_repo/conf")&lt;br /&gt;system("mkdir #$esb_repo/repository")&lt;br /&gt;system("mkdir #$esb_repo/database")&lt;br /&gt;system("mkdir #$esb_repo/resources")&lt;br /&gt;system ("cp -r #$CARBON_BIN_HOME/conf/* #$esb_repo/conf/ ")&lt;br /&gt;system ("cp -r #$CARBON_BIN_HOME/repository/* #$esb_repo/repository/ ")&lt;br /&gt;system ("cp -r #$CARBON_BIN_HOME/database/* #$esb_repo/database/ " )&lt;br /&gt;system ("cp -r #$CARBON_BIN_HOME/resources/* #$esb_repo/resources/ ")&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;################################################################################################################&lt;br /&gt;&lt;br /&gt;def createJbossDirs()&lt;br /&gt;&lt;br /&gt;system("mkdir #$JBOSS_HOME/server/default/deploy/esb.war")&lt;br /&gt;system("mkdir #$JBOSS_HOME/server/default/deploy/esb.war/WEB-INF")&lt;br /&gt;system ("cp -r #$CARBON_BIN_HOME/webapps/ROOT/WEB-INF/* #$JBOSS_HOME/server/default/deploy/esb.war/WEB-INF ")&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;###############################################################################################################&lt;br /&gt;&lt;br /&gt;def enableHTTPSInjboss()&lt;br /&gt;&lt;br /&gt;jboss_xml_file= "#{$JBOSS_HOME}/server/default/deploy/jbossweb.sar/server.xml"&lt;br /&gt;carbon_ks_path="#$esb_repo/resources/security/wso2carbon.jks"&lt;br /&gt;file = File.open("#{jboss_xml_file}", "r")&lt;br /&gt;doc2 = Document.new(file)&lt;br /&gt;#puts doc2&lt;br /&gt;doc2.root.elements['Service'].add_element("Connector", {"maxSpareThreads" =&gt; "76", "port" =&gt; "8443", "protocol" =&gt; "HTTP/1.1", "address" =&gt; "${jboss.bind.address}", "SSLEnabled" =&gt; "true", "maxThreads" =&gt; "150", "scheme" =&gt; "https", "secure" =&gt; "true", "clientAuth" =&gt; "false", "sslProtocol" =&gt; "TLS", "keystoreFile" =&gt; "#{carbon_ks_path}", "keystorePass" =&gt; "wso2carbon"})&lt;br /&gt;formatter = REXML::Formatters::Default.new&lt;br /&gt;File.open("#{jboss_xml_file}", 'w') do |result|&lt;br /&gt;formatter.write(doc2, result)&lt;br /&gt; end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#################################################################################################################&lt;br /&gt;&lt;br /&gt;def updateCarbonxml()&lt;br /&gt;carbon_xml_file= "#$esb_repo/conf/carbon.xml"&lt;br /&gt; File.open("#{carbon_xml_file}") do |config_file|&lt;br /&gt;  # Open the document and edit the port (carbon.xml)&lt;br /&gt;   config = Document.new(config_file)&lt;br /&gt;   puts config.root.elements['ServerURL']&lt;br /&gt;   config.root.elements['ServerURL'].text = 'https://localhost:8443/esb/services/'&lt;br /&gt;   &lt;br /&gt;    # Write the result to the same file.&lt;br /&gt;   formatter = REXML::Formatters::Default.new&lt;br /&gt;   File.open("#{carbon_xml_file}", 'w') do |result|&lt;br /&gt;     formatter.write(config, result)&lt;br /&gt;   end&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;####################################################################################################################&lt;br /&gt;&lt;br /&gt;def updateRegistryxml()&lt;br /&gt;registry_xml_file= "#$esb_repo/conf/registry.xml"&lt;br /&gt;db_path = "jdbc:h2:#$esb_repo/database/WSO2CARBON_DB"&lt;br /&gt; File.open("#{registry_xml_file}") do |config_file|&lt;br /&gt;  # Open the document and edit the port (registry.xml)&lt;br /&gt;   config = Document.new(config_file)&lt;br /&gt;   puts config.root.elements[2].elements['url']&lt;br /&gt;   config.root.elements[2].elements['url'].text = "#{db_path}"&lt;br /&gt;   &lt;br /&gt;     #Write the result to the same file.&lt;br /&gt;   formatter = REXML::Formatters::Default.new&lt;br /&gt;   File.open("#{registry_xml_file}", 'w') do |result|&lt;br /&gt;    formatter.write(config, result)&lt;br /&gt;   end&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#############################################################################################################################&lt;br /&gt;&lt;br /&gt;def updateusermgtxml()&lt;br /&gt;usermgt_xml_file= "#$esb_repo/conf/user-mgt.xml"&lt;br /&gt;db_path = "jdbc:h2:#$esb_repo/database/WSO2CARBON_DB"&lt;br /&gt; File.open("#{usermgt_xml_file}") do |config_file|&lt;br /&gt;  # Open the document and edit the port (user_mgt.xml)&lt;br /&gt;   config = Document.new(config_file)&lt;br /&gt;   puts config.root.elements[1].elements['URL']&lt;br /&gt;   config.root.elements[1].elements['URL'].text = "#{db_path}"&lt;br /&gt;   &lt;br /&gt;     #Write the result to the same file.&lt;br /&gt;   formatter = REXML::Formatters::Default.new&lt;br /&gt;   File.open("#{usermgt_xml_file}", 'w') do |result|&lt;br /&gt;    formatter.write(config, result)&lt;br /&gt;   end&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#############################################################################################################################&lt;br /&gt;&lt;br /&gt;def updateCarbonaxis2xml()&lt;br /&gt;axis2_xml_file= "#$esb_repo/conf/axis2.xml"&lt;br /&gt;synapse_xml_file="#$esb_repo/conf/synapse.xml"&lt;br /&gt;carbon_ks_path="#$esb_repo/resources/security/wso2carbon.jks"&lt;br /&gt;trustore_path = "#$esb_repo/resources/security/client-truststore.jks"&lt;br /&gt; File.open("#{axis2_xml_file}") do |config_file|&lt;br /&gt;  # Open the document and edit the port (axis2.xml)&lt;br /&gt;   config = Document.new(config_file)&lt;br /&gt;   #puts config.root.elements['transportReceiver[@name="http"]'].elements['parameter']&lt;br /&gt;   config.root.elements['transportReceiver[@name="http"]'].elements['parameter'].text = '8280'&lt;br /&gt;   config.root.elements['transportReceiver[@name="https"]'].elements['parameter'].text = '8243'&lt;br /&gt;   config.root.elements['transportReceiver[@name="https"]'].elements['parameter[@name="keystore"]'].elements['KeyStore'].elements['Location'].text="#{carbon_ks_path}"&lt;br /&gt;   config.root.elements['transportReceiver[@name="https"]'].elements['parameter[@name="truststore"]'].elements['TrustStore'].elements['Location'].text="#{trustore_path}"&lt;br /&gt;   config.root.elements['parameter[@name="contextRoot"]'].text='/esb'&lt;br /&gt;   &lt;br /&gt;   config.root.elements['transportSender[@name="https"]'].elements['parameter[@name="keystore"]'].elements['KeyStore'].elements['Location'].text="#{carbon_ks_path}"&lt;br /&gt;   config.root.elements['transportSender[@name="https"]'].elements['parameter[@name="truststore"]'].elements['TrustStore'].elements['Location'].text="#{trustore_path}"&lt;br /&gt;   &lt;br /&gt;   config.root.elements['parameter[@name="SynapseConfig.ConfigurationFile"]'].text="#{synapse_xml_file}"&lt;br /&gt;   &lt;br /&gt;     #Write the result to the same file.&lt;br /&gt;   formatter = REXML::Formatters::Default.new&lt;br /&gt;   File.open("#{axis2_xml_file}", 'w') do |result|&lt;br /&gt;   formatter.write(config, result)&lt;br /&gt;   end&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;###############################################################################################################################&lt;br /&gt;createCarbonDirs()&lt;br /&gt;createJbossDirs()&lt;br /&gt;updateCarbonxml()&lt;br /&gt;updateRegistryxml()&lt;br /&gt;updateusermgtxml()&lt;br /&gt;updateCarbonaxis2xml()&lt;br /&gt;enableHTTPSInjboss()&lt;br /&gt;#startTomcat()&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/8648017967226408418-1753818085226279557?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/1753818085226279557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2009/06/deploying-wso2-esb-on-jboss-application.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/1753818085226279557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/1753818085226279557'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2009/06/deploying-wso2-esb-on-jboss-application.html' title='Deploying wso2 ESB on JBOSS application server'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-4141638440612009891</id><published>2009-05-19T00:55:00.000+05:30</published><updated>2009-05-19T00:58:24.844+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sri Lanka'/><category scheme='http://www.blogger.com/atom/ns#' term='civil war'/><title type='text'>One country..one nation..</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_hha64Sbr4OI/ShG2h_On7RI/AAAAAAAAAAk/fMnwrYfb2Nc/s1600-h/SriLankaF.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://2.bp.blogspot.com/_hha64Sbr4OI/ShG2h_On7RI/AAAAAAAAAAk/fMnwrYfb2Nc/s320/SriLankaF.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5337247728435457298" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-4141638440612009891?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/4141638440612009891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2009/05/one-countryone-nation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/4141638440612009891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/4141638440612009891'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2009/05/one-countryone-nation.html' title='One country..one nation..'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_hha64Sbr4OI/ShG2h_On7RI/AAAAAAAAAAk/fMnwrYfb2Nc/s72-c/SriLankaF.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-7806571075769199443</id><published>2009-05-08T16:08:00.000+05:30</published><updated>2009-05-08T16:17:15.730+05:30</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='endpints'/><category scheme='http://www.blogger.com/atom/ns#' term='UI'/><category scheme='http://www.blogger.com/atom/ns#' term='carbon components'/><title type='text'>New endpoint UI</title><content type='html'>I re-wrote the &lt;a href="https://wso2.org/repos/wso2/trunk/carbon-components/endpoint"&gt;endpoint UI component&lt;/a&gt; which is a part of &lt;a href="https://wso2.org/repos/wso2/trunk/carbon-components"&gt;carbon components&lt;/a&gt;. Now it is just like the &lt;a href="https://wso2.org/repos/wso2/trunk/carbon-components/sequence-editor"&gt;sequences component&lt;/a&gt; which has a tree like structure representing the parent child relation ship, show that a user can add loadbalance and failover endpoints (of course which has child endpoints) more easily. This new UI will be available with the new up coming &lt;a href="http://wso2.org/projects/carbon"&gt;carbon&lt;/a&gt; release.  Followings are few screenshots of new endpoint UI.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_hha64Sbr4OI/SgQNHiHw3dI/AAAAAAAAAAM/GNsVYyI7BFc/s1600-h/1.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 174px;" src="http://1.bp.blogspot.com/_hha64Sbr4OI/SgQNHiHw3dI/AAAAAAAAAAM/GNsVYyI7BFc/s320/1.png" alt="" id="BLOGGER_PHOTO_ID_5333402281783123410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hha64Sbr4OI/SgQNaEQdmZI/AAAAAAAAAAU/DYjmgic2QX8/s1600-h/2.png"&gt;&lt;img style="cursor: pointer; width: 269px; height: 320px;" src="http://4.bp.blogspot.com/_hha64Sbr4OI/SgQNaEQdmZI/AAAAAAAAAAU/DYjmgic2QX8/s320/2.png" alt="" id="BLOGGER_PHOTO_ID_5333402600184060306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_hha64Sbr4OI/SgQNkNHZTWI/AAAAAAAAAAc/HnZ9po9QFGQ/s1600-h/3.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 174px;" src="http://4.bp.blogspot.com/_hha64Sbr4OI/SgQNkNHZTWI/AAAAAAAAAAc/HnZ9po9QFGQ/s320/3.png" alt="" id="BLOGGER_PHOTO_ID_5333402774360640866" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8648017967226408418-7806571075769199443?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/7806571075769199443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2009/05/new-endpoint-ui.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7806571075769199443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/7806571075769199443'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2009/05/new-endpoint-ui.html' title='New endpoint UI'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_hha64Sbr4OI/SgQNHiHw3dI/AAAAAAAAAAM/GNsVYyI7BFc/s72-c/1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8648017967226408418.post-3653922703374890543</id><published>2009-04-22T11:23:00.001+05:30</published><updated>2009-04-22T11:23:58.147+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='axis2/c'/><category scheme='http://www.blogger.com/atom/ns#' term='c'/><title type='text'>Apache Axis2/C 1.6.0 Released</title><content type='html'>We are pleased to announce the release of Apache Axis2/C version 1.6.0.&lt;br /&gt;You can download this release from&lt;br /&gt;&lt;a href="http://ws.apache.org/axis2/c/download.cgi" target="_blank"&gt;http://ws.apache.org/axis2/c/&lt;wbr&gt;download.cgi&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Key Features&lt;br /&gt;============&lt;br /&gt;&lt;br /&gt;   1. Support for one-way messaging (In-Only) and&lt;br /&gt;      request response messaging (In-Out)&lt;br /&gt;   2. Client APIs : Easy to use service client API and&lt;br /&gt;          more advanced operation client API&lt;br /&gt;   3. Transports supported : HTTP&lt;br /&gt;          * Inbuilt HTTP server called simple axis server&lt;br /&gt;          * Apache2 httpd module called mod_axis2 for server side&lt;br /&gt;          * IIS module for server side. Supports IIS 5.1, 6 and 7.&lt;br /&gt;          * Client transport with ability to enable SSL support&lt;br /&gt;          * Basic HTTP Authentication&lt;br /&gt;          * Digest HTTP Authentication&lt;br /&gt;          * libcurl based client transport&lt;br /&gt;          * CGI interface&lt;br /&gt;   4. Transports supported : HTTPS&lt;br /&gt;          * HTTPS Transport implementation using OpenSSL&lt;br /&gt;   5. Transports supported : TCP&lt;br /&gt;          * for both client and server side&lt;br /&gt;   6. Transports supported : AMQP&lt;br /&gt;          * AMQP Transport implementation using Apache Qpid&lt;br /&gt;            * Available only in Linux platforms.&lt;br /&gt;            * At an experimental stage. Please refer the INSTALL file to&lt;br /&gt;build this.&lt;br /&gt;   7. Transport proxy support (HTTP)&lt;br /&gt;          * Proxy Authentication (Basic/Digest)&lt;br /&gt;   8. Module architecture, mechanism to extend the SOAP processing&lt;br /&gt;model.&lt;br /&gt;   9. WS-Addressing support, both the submission (2004/08) and&lt;br /&gt;          final (2005/08) versions, implemented as a module.&lt;br /&gt;  10. MTOM/XOP support.&lt;br /&gt;  11. AXIOM, an XML object model optimized for SOAP 1.1/1.2 messages;&lt;br /&gt;      This has complete XML infoset support.&lt;br /&gt;  12. XPath support for Axiom XML Object model&lt;br /&gt;  13. XML parser abstraction&lt;br /&gt;          * Libxml2 wrapper&lt;br /&gt;          * Guththila pull parser support&lt;br /&gt;  14. Both directory based and archive based deployment models for&lt;br /&gt;deploying services and modules&lt;br /&gt;  15. Description hierarchy providing access to static data of Axis2/C&lt;br /&gt;runtime (configuration, service groups, services, operations and&lt;br /&gt;messages)&lt;br /&gt;  16. Context hierarchy providing access to dynamic&lt;br /&gt;      Axis2/C runtime information (corresponding contexts to map to&lt;br /&gt;          each level of description hierarchy)&lt;br /&gt;  17. Message receiver abstraction&lt;br /&gt;          * Inbuilt raw XML message receiver&lt;br /&gt;  18. Code generation tool for stub and skeleton generation for a given&lt;br /&gt;      WSDL (based on Java tool)&lt;br /&gt;          *  Axis Data Binding (ADB) support&lt;br /&gt;  19. REST support (more POX like) using HTTP POST, GET, HEAD, PUT and&lt;br /&gt;DELETE&lt;br /&gt;          *  Support for RESTful Services&lt;br /&gt;  20. Comprehensive documentation&lt;br /&gt;          * Axis2/C Manual&lt;br /&gt;  21. WS-Policy implementation called Neethi/C, with WS-SecurityPolicy&lt;br /&gt;extension&lt;br /&gt;&lt;br /&gt;Major Changes Since Last Release&lt;br /&gt;==============================&lt;div id=":1w1" class="ii gt"&gt;&lt;wbr&gt;==&lt;br /&gt;&lt;br /&gt;   1. XPath support for Axiom XML object model&lt;br /&gt;   2. CGI support&lt;br /&gt;   3. Improvements to MTOM to send, receive very large attachments&lt;br /&gt;   4. Improvements to AMQP transport&lt;br /&gt;   5. Improvements to WSDL2C codegen tool&lt;br /&gt;   6. Many bug fixes.&lt;br /&gt;   7. Memory leak fixes&lt;br /&gt;&lt;br /&gt;We welcome your early feedback on this implementation.&lt;br /&gt;&lt;br /&gt;Thanks for your interest in Axis2/C !!!&lt;br /&gt;&lt;br /&gt;-- Apache Axis2/C Team --&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/8648017967226408418-3653922703374890543?l=rajikak.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rajikak.blogspot.com/feeds/3653922703374890543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://rajikak.blogspot.com/2009/04/apache-axis2c-160-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/3653922703374890543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8648017967226408418/posts/default/3653922703374890543'/><link rel='alternate' type='text/html' href='http://rajikak.blogspot.com/2009/04/apache-axis2c-160-released.html' title='Apache Axis2/C 1.6.0 Released'/><author><name>Rajika Kumarasiri</name><uri>http://www.blogger.com/profile/05640585707889215510</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
