<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;AkYCSHcyeyp7ImA9WhRbEUw.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388</id><updated>2012-02-01T09:42:49.993-08:00</updated><category term="सॉफ्टवेर enginnering" /><category term="concurrent" /><category term="forward" /><category term="UDP" /><category term="java" /><category term="transport" /><category term="बुक्स" /><category term="ESB" /><category term="Web Services" /><category term="Synapse" /><category term="jsp" /><category term="architecture" /><category term="SOA" /><category term="WSO2" /><title>Life of a Software Engineer</title><subtitle type="html">Developing software is fun..</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://supunk.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>87</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/SupunKamburugamuvasBlog" /><feedburner:info uri="supunkamburugamuvasblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;C0YMRXg6cSp7ImA9WhdUEEQ.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-5586473643575165174</id><published>2011-09-25T20:47:00.001-07:00</published><updated>2011-09-26T19:39:44.619-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-26T19:39:44.619-07:00</app:edited><title>Is the innovation in movie industry diminishing?</title><content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Here are the top 10 box office movies of the year 2011 so far.&lt;br /&gt;
&lt;br /&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: 19px; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;table class="wikitable sortable" id="sortable_table_id_0" style="background-attachment: initial; background-clip: initial; background-color: #f9f9f9; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-collapse: collapse; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; color: black; font-size: 13px; margin-bottom: auto; margin-left: auto; margin-right: auto; margin-top: auto;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;th style="background-attachment: initial; background-clip: initial; background-color: #f2f2f2; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em; text-align: center;"&gt;Rank&lt;a class="sortheader" href="http://en.wikipedia.org/wiki/2011_in_film#" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; margin-bottom: 0px; margin-left: 0.3em; margin-right: 0.3em; margin-top: 0px; text-decoration: none;"&gt;&lt;span class="sortarrow"&gt;&lt;img alt="↓" src="http://bits.wikimedia.org/skins-1.17/common/images/sort_none.gif" style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; vertical-align: middle;" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/th&gt;&lt;th style="background-attachment: initial; background-clip: initial; background-color: #f2f2f2; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em; text-align: center;"&gt;Title&lt;a class="sortheader" href="http://en.wikipedia.org/wiki/2011_in_film#" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; margin-bottom: 0px; margin-left: 0.3em; margin-right: 0.3em; margin-top: 0px; text-decoration: none;"&gt;&lt;span class="sortarrow"&gt;&lt;img alt="↓" src="http://bits.wikimedia.org/skins-1.17/common/images/sort_none.gif" style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; vertical-align: middle;" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/th&gt;&lt;th style="background-attachment: initial; background-clip: initial; background-color: #f2f2f2; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em; text-align: center;"&gt;Studio&lt;a class="sortheader" href="http://en.wikipedia.org/wiki/2011_in_film#" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; margin-bottom: 0px; margin-left: 0.3em; margin-right: 0.3em; margin-top: 0px; text-decoration: none;"&gt;&lt;span class="sortarrow"&gt;&lt;img alt="↓" src="http://bits.wikimedia.org/skins-1.17/common/images/sort_none.gif" style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; vertical-align: middle;" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/th&gt;&lt;th style="background-attachment: initial; background-clip: initial; background-color: #f2f2f2; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em; text-align: center;"&gt;Worldwide&lt;a class="sortheader" href="http://en.wikipedia.org/wiki/2011_in_film#" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; margin-bottom: 0px; margin-left: 0.3em; margin-right: 0.3em; margin-top: 0px; text-decoration: none;"&gt;&lt;span class="sortarrow"&gt;&lt;img alt="↓" src="http://bits.wikimedia.org/skins-1.17/common/images/sort_none.gif" style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; vertical-align: middle;" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/th&gt;&lt;th style="background-attachment: initial; background-clip: initial; background-color: #f2f2f2; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em; text-align: center;"&gt;US and Canada&lt;a class="sortheader" href="http://en.wikipedia.org/wiki/2011_in_film#" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; margin-bottom: 0px; margin-left: 0.3em; margin-right: 0.3em; margin-top: 0px; text-decoration: none;"&gt;&lt;span class="sortarrow"&gt;&lt;img alt="↓" src="http://bits.wikimedia.org/skins-1.17/common/images/sort_none.gif" style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; vertical-align: middle;" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/th&gt;&lt;th style="background-attachment: initial; background-clip: initial; background-color: #f2f2f2; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em; text-align: center;"&gt;UK&lt;a class="sortheader" href="http://en.wikipedia.org/wiki/2011_in_film#" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; margin-bottom: 0px; margin-left: 0.3em; margin-right: 0.3em; margin-top: 0px; text-decoration: none;"&gt;&lt;span class="sortarrow"&gt;&lt;img alt="↓" src="http://bits.wikimedia.org/skins-1.17/common/images/sort_none.gif" style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; vertical-align: middle;" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/th&gt;&lt;th style="background-attachment: initial; background-clip: initial; background-color: #f2f2f2; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em; text-align: center;"&gt;Australia&lt;a class="sortheader" href="http://en.wikipedia.org/wiki/2011_in_film#" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; margin-bottom: 0px; margin-left: 0.3em; margin-right: 0.3em; margin-top: 0px; text-decoration: none;"&gt;&lt;span class="sortarrow"&gt;&lt;img alt="↓" src="http://bits.wikimedia.org/skins-1.17/common/images/sort_none.gif" style="border-bottom-style: none; border-color: initial; border-left-style: none; border-right-style: none; border-top-style: none; border-width: initial; vertical-align: middle;" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;1&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Harry_Potter_and_the_Deathly_Hallows_%E2%80%93_Part_2" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="Harry Potter and the Deathly Hallows – Part 2"&gt;Harry Potter and the Deathly Hallows – Part 2&lt;/a&gt;&lt;/i&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Warner_Bros." style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="Warner Bros."&gt;Warner Bros.&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$1,325,066,054&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$378,366,054&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$114,820,753&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$54,319,291&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;2&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Transformers:_Dark_of_the_Moon" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="Transformers: Dark of the Moon"&gt;Transformers: Dark of the Moon&lt;/a&gt;&lt;/i&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Paramount_Pictures" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="Paramount Pictures"&gt;Paramount Pictures&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$1,117,601,953&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$351,458,166&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$45,470,012&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$38,820,321&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;3&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Pirates_of_the_Caribbean:_On_Stranger_Tides" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="Pirates of the Caribbean: On Stranger Tides"&gt;Pirates of the Caribbean: On Stranger Tides&lt;/a&gt;&lt;/i&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Walt_Disney_Pictures" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="Walt Disney Pictures"&gt;Walt Disney Pictures&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$1,039,529,902&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$241,011,325&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$54,187,325&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$29,006,640&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;4&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Kung_Fu_Panda_2" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="Kung Fu Panda 2"&gt;Kung Fu Panda 2&lt;/a&gt;&lt;/i&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;a href="http://en.wikipedia.org/wiki/DreamWorks_Animation" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="DreamWorks Animation"&gt;DreamWorks Animation&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$659,146,003&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$165,146,003&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$27,062,099&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$20,219,645&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;5&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Fast_Five" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="Fast Five"&gt;Fast Five&lt;/a&gt;&lt;/i&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Universal_Studios" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="Universal Studios"&gt;Universal Pictures&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$609,484,033&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$209,837,675&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$30,243,825&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$26,794,607&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;6&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/The_Hangover_Part_II" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="The Hangover Part II"&gt;The Hangover Part II&lt;/a&gt;&lt;/i&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;Warner Bros.&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$581,464,305&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$254,464,305&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$53,496,869&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$35,371,018&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;7&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Cars_2" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="Cars 2"&gt;Cars 2&lt;/a&gt;&lt;/i&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;Walt Disney Pictures /&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Pixar" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="Pixar"&gt;Pixar&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$550,079,088&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$189,679,088&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$24,894,721&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$20,811,602&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;8&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Rio_%28film%29" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="Rio (film)"&gt;Rio&lt;/a&gt;&lt;/i&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;a href="http://en.wikipedia.org/wiki/20th_Century_Fox" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="20th Century Fox"&gt;20th Century Fox&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$483,886,518&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$143,619,809&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$21,536,048&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$17,230,382&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;9&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/The_Smurfs_%28film%29" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="The Smurfs (film)"&gt;The Smurfs&lt;/a&gt;&lt;/i&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Columbia_Pictures" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="Columbia Pictures"&gt;Columbia Pictures&lt;/a&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$483,360,857&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$137,759,100&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$24,454,426&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$3,634,929&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;10&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;&lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Thor_%28film%29" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; background-position: initial initial; background-repeat: initial initial; color: #0645ad; text-decoration: none;" title="Thor (film)"&gt;Thor&lt;/a&gt;&lt;/i&gt;&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;Paramount Pictures&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$448,512,824&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$181,030,624&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$22,521,717&lt;/td&gt;&lt;td style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; padding-bottom: 0.2em; padding-left: 0.2em; padding-right: 0.2em; padding-top: 0.2em;"&gt;$20,135,378&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
Out of the 10, first seven movies are attempts to create the same glory as they did with the very successful first movie of the sequel. But the ratings of all these seven movies are pretty low and their success is mainly due to the fact that they are part of sequel with a very successful first movie. &lt;br /&gt;
&lt;br /&gt;
Here are the ratings given to these movies by yahoo users. The critics ratings are worst than that. &lt;br /&gt;
&lt;br /&gt;
1. Harry potter&amp;nbsp;&amp;nbsp; A-&lt;br /&gt;
2. Transformers&amp;nbsp; B&lt;br /&gt;
3. Pirates&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B&lt;br /&gt;
4. Panda&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A-&lt;br /&gt;
5. Fast Five&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A-&lt;br /&gt;
6. Hangover&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B-&lt;br /&gt;
7. Cars 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B+&lt;br /&gt;
&lt;br /&gt;
Some of the movies like Transformers and Pirates are very lame attempts  to create a movie out of thin air and they are more like putting  together some random scenes.&lt;br /&gt;
&lt;br /&gt;
So what does this mean? Aren't there any ideas left that can be turned in to a great movie? Or we have seen so many movies that any new idea is just a new way of looking at an old idea. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1197843169524706388-5586473643575165174?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nqRvg2Adwy4W2WY64dZszJemGZQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nqRvg2Adwy4W2WY64dZszJemGZQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nqRvg2Adwy4W2WY64dZszJemGZQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nqRvg2Adwy4W2WY64dZszJemGZQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/KmEr3cb9lF4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/5586473643575165174/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=5586473643575165174" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/5586473643575165174?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/5586473643575165174?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/KmEr3cb9lF4/is-innovation-in-movie-industry.html" title="Is the innovation in movie industry diminishing?" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://supunk.blogspot.com/2011/09/is-innovation-in-movie-industry.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IDQX8_eSp7ImA9WhdWFUk.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-1260457144995486112</id><published>2011-09-08T21:12:00.001-07:00</published><updated>2011-09-08T21:12:50.141-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-08T21:12:50.141-07:00</app:edited><title>After a long time</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;It is being a long time since I've posted my last blog entry. It was a busy time with a lot happening. To make it short I've started my higher studies in Indiana University Bloomington as a Compute Science Graduate student under Prof. Geoffrey Fox. I did resign from WSO2. I had a great time at WSO2 and would like to thank all the friends and specially Dr. Sanjiva Weerawarana&lt;span class='tl'/&gt; for the great time I had in WSO2. &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1197843169524706388-1260457144995486112?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SwbRGJIIkjONMz_0WWPahzbM34E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SwbRGJIIkjONMz_0WWPahzbM34E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SwbRGJIIkjONMz_0WWPahzbM34E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SwbRGJIIkjONMz_0WWPahzbM34E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/yIyfr5D8ykc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/1260457144995486112/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=1260457144995486112" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/1260457144995486112?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/1260457144995486112?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/yIyfr5D8ykc/after-long-time.html" title="After a long time" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://supunk.blogspot.com/2011/09/after-long-time.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcAQXo9eip7ImA9Wx5WEkg.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-8575461166518034606</id><published>2010-09-23T09:05:00.001-07:00</published><updated>2010-09-23T09:07:20.462-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-23T09:07:20.462-07:00</app:edited><title>Approaching the Tipping point of Web Services</title><content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;style type="text/css"&gt;
   
&lt;/style&gt;    &lt;br /&gt;
&lt;div style="margin-bottom: 0in;"&gt;Every technology that is meant to last has similar adoption patterns. Here is a graph describing the time vs users.&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_UVlnyapwF90/TJt7CldV_bI/AAAAAAAAAKA/Qt1O6Jv8Qy0/s1600/tipping.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="241" src="http://1.bp.blogspot.com/_UVlnyapwF90/TJt7CldV_bI/AAAAAAAAAKA/Qt1O6Jv8Qy0/s320/tipping.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;At the initial stages only the early adopters  dare to use a fresh technology. Early adopters has advantages as well as disadvantages. &lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;Biggest disadvantage or risk comes for an early adopter because the implementations of the technology are not matured. A product implementing a fresh technology may seize to work in a critical moment. But early adopters do get lots of advantages as well. They get the best support and special attention from the vendors as well as they get to influence the implementation of the technology. Also early adopters has the competitive advantage over their competitors because of the adoption of advanced technologies. In these stages the usage of the products is a random and there is no increase of decrease to be seen in terms of users.&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;After the early adopters the technology is open to more general users. In these stages the usage of the technology or the products slowly increases.  This is where general users start to think about adopting the new technologies. But majority of the users still not comfortable to use the new products and they are waiting for their confidence to build up to the right level.&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;This means during this adoption period where gradual increase of usage happens there is a very large group of people building up, who are hoping to use the products but the attributes are not at the correct level for them. These are the normal users who uses a technology for every day usages. They just wait until the correct moment.&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;When we reach the state where normal people start using the technology we can see a sudden dramatic increase in a technology because of this large group of people who were waiting. This is what we call a “&lt;b&gt;Tipping Point&lt;/b&gt;”.&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;Web Services are now in the adoption stage where there is a gradual smooth increase. Web services was founded around six seven years ago. But the adoption was slow due to its complexity. Although it is complex web services provides the only solution agreed across all the key player for a very real problem. Problem is to connect the various computing resources. So web services as a technology is bound to be used by the majority.&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;Right now it is used mostly by the high tech companies with a long vision and a pile of money to spend. But I believe in a few years time we will reach the tipping point of web services. It will at least take another year and a half to reach that point. But we will hit that tipping point for sure.&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;Reaching the tipping point will be great from the technological point of view. But it will bring greater challenges to the companies creating web services middle ware as well. The biggest challenge will be the diverse use of web services. We will see people using it for all kinds of crazy things. Best way to succeed in this kind of a wide customer base is to have technologically sound products.  Companies with the most technically sound products will prosper and others will gradually fade away.&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="zemanta-pixie"&gt;&lt;img alt="" class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=29da0b39-e86b-87ec-a065-82b2c21cf044" /&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/1197843169524706388-8575461166518034606?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vaxe6O5iJnk-_dAe1hQk54eOV3c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vaxe6O5iJnk-_dAe1hQk54eOV3c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vaxe6O5iJnk-_dAe1hQk54eOV3c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vaxe6O5iJnk-_dAe1hQk54eOV3c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/q6Waf4ww3og" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/8575461166518034606/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=8575461166518034606" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/8575461166518034606?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/8575461166518034606?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/q6Waf4ww3og/approaching-tipping-point-of-web.html" title="Approaching the Tipping point of Web Services" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_UVlnyapwF90/TJt7CldV_bI/AAAAAAAAAKA/Qt1O6Jv8Qy0/s72-c/tipping.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://supunk.blogspot.com/2010/09/approaching-tipping-point-of-web.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QGSH0-cSp7ImA9Wx5XFU4.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-6037508530143405113</id><published>2010-09-14T23:15:00.001-07:00</published><updated>2010-09-14T23:15:29.359-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-14T23:15:29.359-07:00</app:edited><title>Refactoring Java Singletons to regular classes</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;One of the really bad things about a Java singleton is when you use it, you never think about  the correct place to create it. Even if a class is implemented as a singleton there is always a logical place for a singleton. This is really important in getting your design right. But with singletons we tend to forget about this and design the things incorrectly.&lt;br/&gt;&lt;br/&gt;When the time comes to get rid of the singletons it becomes very hard due to the design constraints.&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=91c6fe47-d13f-88b6-9f44-acd33120fdac' alt='' class='zemanta-pixie-img'/&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/1197843169524706388-6037508530143405113?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dRG9kvs_BAM4hg5fI3Yin2eBNoE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dRG9kvs_BAM4hg5fI3Yin2eBNoE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dRG9kvs_BAM4hg5fI3Yin2eBNoE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dRG9kvs_BAM4hg5fI3Yin2eBNoE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/GQW4MF1R7Sk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/6037508530143405113/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=6037508530143405113" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/6037508530143405113?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/6037508530143405113?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/GQW4MF1R7Sk/refactoring-java-singletons-to-regular.html" title="Refactoring Java Singletons to regular classes" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://supunk.blogspot.com/2010/09/refactoring-java-singletons-to-regular.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08FQXw7eSp7ImA9WxFWGU8.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-1955097333440606935</id><published>2010-06-07T07:43:00.001-07:00</published><updated>2010-06-07T07:43:30.201-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-07T07:43:30.201-07:00</app:edited><title>Difference between service chaining and callouts in WSO2 ESB</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;In a typical integration there can be a single service exposed supported by two implementation services.  &lt;br/&gt;&lt;br/&gt;Client ---------&amp;gt; ESB ------&amp;gt; Service 1&lt;br/&gt;                                ------&amp;gt; Service 2&lt;br/&gt;Scenario 1:&lt;br/&gt;When the request comes to the ESB it should be validated by sending to the Service 1. If the request is valid it should be sent to service 2&lt;br/&gt;&lt;br/&gt;Scenario 2:&lt;br/&gt;Request only has few information. In order to access the service 2,  there is some information that need to be retrieved from service 1. After retrieving this information request must be transformed. In this case before sending the request to service 2, request must be enhanced with information from service 1.&lt;br/&gt;&lt;br/&gt;Obviously Scenario 1 fits Service chaining because it is chained invocation. You invoke service 1 then invoke service 2. This kind of invocation should be done using the &lt;a href='http://wso2.org/project/esb/java/3.0.0/docs/configuration_language.html#send'&gt;send&lt;/a&gt; mediator instead of &lt;a href='http://wso2.org/project/esb/java/3.0.0/docs/configuration_language.html#callout'&gt;callout&lt;/a&gt; mediator of &lt;a href='http://wso2.com/products/enterprise-service-bus/'&gt;WSO2 ESB&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Scenario 2 is bit different. Before proceeding with the request message we need to enhance it with information from service 1. So by looking at the problem we can see it requires a blocking call to the service 1 to get some information. This kind of invocation can be done using the &lt;a href='http://wso2.org/project/esb/java/3.0.0/docs/configuration_language.html#send'&gt;send&lt;/a&gt; mediator. But my belief is it fits more with the &lt;a href='http://wso2.org/project/esb/java/3.0.0/docs/configuration_language.html#callout'&gt;callout&lt;/a&gt; mediator which does blocking calls.&lt;br/&gt;&lt;br/&gt;For more info please refer the &lt;a href='http://wso2.org/project/esb/java/3.0.0/docs/configuration_language.html'&gt;configuration langauge guide&lt;/a&gt; of WSO2 ESB.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=bf6a2e8a-36dd-8fb8-a8f3-ea02d0d59c22' alt='' class='zemanta-pixie-img'/&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/1197843169524706388-1955097333440606935?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5LMN6Ebh8LyO24lbT85X_F2NrI0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5LMN6Ebh8LyO24lbT85X_F2NrI0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5LMN6Ebh8LyO24lbT85X_F2NrI0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5LMN6Ebh8LyO24lbT85X_F2NrI0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/v1TJU3sL_0M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/1955097333440606935/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=1955097333440606935" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/1955097333440606935?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/1955097333440606935?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/v1TJU3sL_0M/difference-between-service-chaining-and.html" title="Difference between service chaining and callouts in WSO2 ESB" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://supunk.blogspot.com/2010/06/difference-between-service-chaining-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMGQXk4eSp7ImA9WxFTF0w.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-6458061882893655835</id><published>2010-03-29T05:41:00.001-07:00</published><updated>2010-04-08T02:03:40.731-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-08T02:03:40.731-07:00</app:edited><title>Worshiped Sri Pada (Adam's Peak)</title><content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;a href="http://lh6.ggpht.com/_UVlnyapwF90/S7DBDJ8xuOI/AAAAAAAAAJs/upa7eetX0rw/s1600-h/IMG_3604%5B8%5D.jpg"&gt;&lt;img alt="IMG_3604" border="0" height="304" src="http://lh6.ggpht.com/_UVlnyapwF90/S7DBE2xGn_I/AAAAAAAAAJw/CSMztNUja3s/IMG_3604_thumb%5B6%5D.jpg?imgmax=800" style="border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline;" title="IMG_3604" width="640" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;/div&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;We went to Sri Pada during the last week end (27th &amp;amp; 28th March). It was a family trip with my family and my mother's sister's family.    &lt;br /&gt;
&lt;br /&gt;
We went through the Hatton Road. The most beautiful road to Sri Pada is through Ratnapura Kuruwita. But it is the hardest as well. We didn't take that road because it could be very hard for my mother and aunt.     &lt;br /&gt;
&lt;br /&gt;
We started climbing around 8 p.m. Then it was raining very hard. We climbed very slowly. We often climbed 50 steps and took a rest for 15 mins.     &lt;br /&gt;
&lt;br /&gt;
Week end was very busy for Sri Pada&amp;nbsp;because&amp;nbsp;people were pouring in to visit this great mountain.     &lt;br /&gt;
&lt;br /&gt;
When we were at Mahagiridambe it was really crowded and there was a long line to the peak. It was a very hard journey through Mahagiridambe because we had to stand waiting in a line wasn't moving very fast.     &lt;br /&gt;
&lt;br /&gt;
We went to the peak around 5 p.m in the morning. We worshiped the Sri Pada pathula and stayed in the peak for around 30 mins. It wasn't cold as I thought it would be on the peak.     &lt;br /&gt;
&lt;br /&gt;
Then we started descending. Unfortunately the Eastern Sky was full with rainy clouds. We coudn't see the Ira Savaya.     &lt;br /&gt;
&lt;br /&gt;
Descending was harder than climbing. But we managed it around 11 a.m in the morning. After that we took a little break and came&amp;nbsp;straight&amp;nbsp;home.     &lt;br /&gt;
&lt;br /&gt;
Few friends and myself were lucky enough to clime Sri Pada in the off season last year. I must say climbing Sri Pada in off-season was ten times&amp;nbsp;beautiful,&amp;nbsp;peaceful and adventurous than the journey we took this year in the regular Sri Pada season.     &lt;br /&gt;
&lt;br /&gt;
&lt;div class="zemanta-pixie"&gt;&lt;img alt="" class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=4fff6a68-2ad6-83f9-8fc4-4e8e08025c76" /&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/1197843169524706388-6458061882893655835?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3KI8PXFsxAJJNUionSADeXk7Pv0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3KI8PXFsxAJJNUionSADeXk7Pv0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3KI8PXFsxAJJNUionSADeXk7Pv0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3KI8PXFsxAJJNUionSADeXk7Pv0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/6iwQAsl6EIo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/6458061882893655835/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=6458061882893655835" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/6458061882893655835?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/6458061882893655835?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/6iwQAsl6EIo/worshiped-sri-pada-adam-peak.html" title="Worshiped Sri Pada (Adam&amp;#39;s Peak)" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_UVlnyapwF90/S7DBE2xGn_I/AAAAAAAAAJw/CSMztNUja3s/s72-c/IMG_3604_thumb%5B6%5D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://supunk.blogspot.com/2010/03/worshiped-sri-pada-adam-peak.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUHR3s4fSp7ImA9WxBbGUU.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-2549317210883715656</id><published>2010-03-19T01:43:00.001-07:00</published><updated>2010-03-19T01:43:56.535-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-19T01:43:56.535-07:00</app:edited><title>WSO2 ESB Reffering to Resources over a HTTP proxy connection</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;With the 3.0.0 upcoming release WSO2 ESB can retrieve resources through a HTTP proxy server. Usually these resources are WSDLs.&lt;br/&gt;&lt;br/&gt;A WSDL may be in a remote server and WSO2 ESB can refer that. But in order to reach the WSDL ESB may have to go through a Proxy Server. &lt;br/&gt;&lt;br/&gt;To configure the proxy settings user has to update the synapse.properties file in the webapps/ROOT/WEB-INF/classes directory. Here is the configuration for enabling the proxy. &lt;br/&gt;&lt;br/&gt;# address of the proxy server&lt;br/&gt;#synapse.http.proxy.host=&lt;br/&gt;# Proxy server port&lt;br/&gt;#synapse.http.proxy.port=&lt;br/&gt;# Proxy server user name, this is used for HTTP basic authentication&lt;br/&gt;#synapse.http.proxy.user=&lt;br/&gt;# Proxy server user password, this is used for HTTP basic authentication&lt;br/&gt;#synapse.http.proxy.password=&lt;br/&gt;# list of host address excluded from going through the proxy, list is comma separated&lt;br/&gt;#synapse.http.proxy.excluded.hosts=localhost, 127.0.0.1&lt;br/&gt;&lt;br/&gt;All the configurations are self explanatory. If user name and password is set ESB will use HTTP basic authentication.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=5bbbcd73-ed61-8786-8ea9-11ac4b08e7ed' alt='' class='zemanta-pixie-img'/&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/1197843169524706388-2549317210883715656?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cH-o1pyYTxicBdY3bP5eE_raQgc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cH-o1pyYTxicBdY3bP5eE_raQgc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cH-o1pyYTxicBdY3bP5eE_raQgc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cH-o1pyYTxicBdY3bP5eE_raQgc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/hRmgRGAtqeg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/2549317210883715656/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=2549317210883715656" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/2549317210883715656?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/2549317210883715656?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/hRmgRGAtqeg/wso2-esb-reffering-to-resources-over.html" title="WSO2 ESB Reffering to Resources over a HTTP proxy connection" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://supunk.blogspot.com/2010/03/wso2-esb-reffering-to-resources-over.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MEQnk-fSp7ImA9WxBbGUo.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-4136930427282115665</id><published>2010-03-18T22:42:00.001-07:00</published><updated>2010-03-18T23:16:43.755-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-18T23:16:43.755-07:00</app:edited><title>HTTP Basic Authentication over a proxy server with WSO2 ESB</title><content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;ESB may be behind a firewall and it may want to talk to a server through a proxy server. A proxy server may require HTTP basic authentication. Here is the scenario I'm talking about. This full scenario is only available with upcoming &lt;a href="http://wso2.org/downloads/esb"&gt;WSO2 ESB&lt;/a&gt; 3.0.0 release.&lt;br /&gt;
&lt;br /&gt;
Client ----&amp;gt; ESB ----&amp;gt; HTTP Proxy Server -----&amp;gt; Service Provider&lt;br /&gt;
&lt;br /&gt;
There are several configurations that needs to be done in-order to configure ESB to handle this.&lt;br /&gt;
&lt;br /&gt;
First you need to tell ESB that is is behind a Proxy Server. To do this edit the axis2.xml file in the repository/conf directory.&lt;br /&gt;
&lt;br /&gt;
You need to edit the transportSender configuration of the http transport in axis2.xml. The configurations are self explanatory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;transportSender name="http" class="org.apache.synapse.transport.nhttp.HttpCoreNIOSender"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter name="non-blocking" locked="false"&amp;gt;true&amp;lt;/parameter&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter name="http.proxyHost" locked="false"&amp;gt;localhost&amp;lt;/parameter&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;parameter name="http.proxyPort" locked="false"&amp;gt;8080&amp;lt;/parameter&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;/transportSender&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you need to set the following two properties in the synapse configuration before doing the send through the proxy server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syn:property name="Proxy-Authorization" expression="fn:concat('Basic ', base64Encode('userName:password'))" scope="transport"/&amp;gt;&lt;br /&gt;
&amp;lt;syn:property name="POST_TO_URI" value="true" scope="axis2"/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first property set the Proxy-Authorization HTTP transport header with the base64 encoded user name and password as expected by the HTTP basic authentication.&lt;br /&gt;
&lt;br /&gt;
Second property make the out-going url a complete URL understandable by the proxy server.&lt;br /&gt;
&lt;br /&gt;
For example in normal scenarios we send the outgoing request as following&lt;br /&gt;
POST /services/SimpleStockQuoteService HTTP/1.1  &lt;br /&gt;
&lt;br /&gt;
But for proxy server we need to send the actual URL:&lt;br /&gt;
POST http://localhost:9000/services/SimpleStockQuoteService HTTP/1.1 &lt;br /&gt;
&lt;br /&gt;
Here is a Simple sample Proxy service with these two properties&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&amp;lt;syn:proxy name="StockQuoteProxy" startOnLoad="true"&amp;gt;
    &amp;lt;syn:target&amp;gt;
        &amp;lt;syn:inSequence&amp;gt;
            &amp;lt;syn:property name="Proxy-Authorization" expression="fn:concat('Basic ', base64Encode('supun:test123'))" scope="transport"/&amp;gt;
            &amp;lt;syn:property name="POST_TO_URI" value="true" scope="axis2"/&amp;gt;
            &amp;lt;syn:send&amp;gt;
                &amp;lt;syn:endpoint name="endpoint_urn_uuid_379C485AD3CB65037F10216600509076498395882"&amp;gt;
                    &amp;lt;syn:address uri="http://localhost:9000/services/SimpleStockQuoteService"/&amp;gt;
                &amp;lt;/syn:endpoint&amp;gt;
            &amp;lt;/syn:send&amp;gt;
        &amp;lt;/syn:inSequence&amp;gt;
        &amp;lt;syn:outSequence&amp;gt;
            &amp;lt;syn:send/&amp;gt;
        &amp;lt;/syn:outSequence&amp;gt;
    &amp;lt;/syn:target&amp;gt;
    &amp;lt;syn:publishWSDL uri="file:repository/samples/resources/proxy/sample_proxy_1.wsdl"/&amp;gt;
&amp;lt;/syn:proxy&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;div class="zemanta-pixie"&gt;&lt;img alt="" class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=86759a0a-6b05-8633-9649-d9f2c7f957cf" /&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/1197843169524706388-4136930427282115665?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TLmAwNW7v5_qf1ebycZWn2vY4dc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TLmAwNW7v5_qf1ebycZWn2vY4dc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TLmAwNW7v5_qf1ebycZWn2vY4dc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TLmAwNW7v5_qf1ebycZWn2vY4dc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/wJ6NEsI0ndo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/4136930427282115665/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=4136930427282115665" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/4136930427282115665?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/4136930427282115665?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/wJ6NEsI0ndo/http-basic-authentication-over-proxy.html" title="HTTP Basic Authentication over a proxy server with WSO2 ESB" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://supunk.blogspot.com/2010/03/http-basic-authentication-over-proxy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYBQnw_cCp7ImA9WxBbEEg.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-365811111216732764</id><published>2010-03-07T06:36:00.001-08:00</published><updated>2010-03-08T06:05:53.248-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-08T06:05:53.248-08:00</app:edited><title>My thoughts on WSO2 Carbon Registry Seperation</title><content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;For the upcoming Carbon release (3.0.0) we are going to introduce a new registry separation model for all the carbon based applications. I feel there is something fundamentally wrong with this registry separation. But still I'm not clear why I got that feeling. So I thought of writing down my thoughts. This is not a structured post. I'm just writing down my thoughts. &lt;br /&gt;
&lt;br /&gt;
Under the new Registry model there are three registries.&lt;br /&gt;
&lt;br /&gt;
1. Local registry&lt;br /&gt;
2. Configuration registry&lt;br /&gt;
3. Governance registry&lt;br /&gt;
&lt;br /&gt;
First lets look at the problem we are trying to solve using these three registries.&lt;br /&gt;
&lt;br /&gt;
Every program needs configurations to run. These configurations can be coming from a file or can be coming from a UI. Also every program has a state. When we change some configurations or deploy a new component or enable something program state can be changed. A program usually saves its state transparently to the user. For example when we run a program like IntelliJ Idea or ecclipse we can specify some configurations like temp directory, using a configuration file . Some configurations like editing options are saved interanally by these applications and users doesn't know the format of the stored configuration information. &lt;br /&gt;
&lt;br /&gt;
There is another type of information that a program require. They are application specific configurations. For example an IntelliJ Idea project may be using a JSP Tag Library. IntelliJ Idea has to know the location of this tag library in order to property render the JSP tags. An ESB may require a XSLT file for message transformation. This file has to be stored somewhere accessible from the ESB. &lt;br /&gt;
&lt;br /&gt;
With a tool like intellij Idea configuration storage is always the file system. But with carbon configuraion storage is the WSO2 Governance Registry.&lt;br /&gt;
&lt;br /&gt;
Carbon is another program that has all sorts of configurations. Also a carbon program can run in multiple topologies like Standalone mode with a remote registry. Clustered mode with a remote registry etc. From the carbon perspective it shouldn't matter weather it is running against a remote registry or a embedded registry. Standalone mode and clustering mode are very important.&lt;br /&gt;
&lt;br /&gt;
There is a very very important concept when it comes to storage requirement of a program. There are only two types of storage requirements to a program.&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;There is state information internal to a program that shouldn't be exposed to the user as it is. &lt;/li&gt;
&lt;li&gt;There are configurations specified by the user&lt;/li&gt;
&lt;/ol&gt;If we agree to the above fundamental principle there can be two configuration areas to a program.&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Internal storage space used to store the state information&lt;/li&gt;
&lt;li&gt;Storage space to put user specified configurations&lt;/li&gt;
&lt;/ol&gt;But Carbon introduces three configuration areas. But I think there should be only two configuration areas. A local registry that can be used to store internal stuff to carbon that shouldn't be exposed to the user and a general registry that can contain all sorts of user configurations.&lt;br /&gt;
&lt;br /&gt;
Different components behave differently in different topologies. One of the ideas behind carbon is when a application runs in standalone mode it should be able to run in clustering mode without any changes. That is one of the fundamental reasons behind registry separation. But clustering and standalone modes are vary different and trying to design a application to run a standalone app in cluster mode can be a bad design decision.&lt;br /&gt;
&lt;br /&gt;
Also carbon wants to start two clusters and share information among the two clusters using the registry. That is why we have the governance registry. But this is a feature that we could have simply achieve at the carbon level without&amp;nbsp;over complicating&amp;nbsp;the registry model.&lt;br /&gt;
&lt;br /&gt;
For me registry is just a storage. It is like a file system or a database. A database provide a generic programming model so does the registry. It is the application level programmers responsibility to use the database properly. Also it is the carbon's responsibility to use the registry correctly to suite its needs. Changing the registry model to suite carbon's need is not a good idea.&lt;br /&gt;
&lt;br /&gt;
I may be completely wrong. Every technical decision has its pros and cons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="zemanta-pixie"&gt;&lt;img alt="" class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=d86700e2-006f-8d79-99e9-c47625ca3ede" /&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/1197843169524706388-365811111216732764?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RrXVsyQS_8aOAIOGTaZlD5DKNOA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RrXVsyQS_8aOAIOGTaZlD5DKNOA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RrXVsyQS_8aOAIOGTaZlD5DKNOA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RrXVsyQS_8aOAIOGTaZlD5DKNOA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/PSeu3iPXco0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/365811111216732764/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=365811111216732764" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/365811111216732764?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/365811111216732764?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/PSeu3iPXco0/my-thoughts-on-wso2-registry-seperation_07.html" title="My thoughts on WSO2 Carbon Registry Seperation" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://supunk.blogspot.com/2010/03/my-thoughts-on-wso2-registry-seperation_07.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMCR3o4cCp7ImA9WxBUGU4.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-2579158875147430833</id><published>2010-03-06T20:01:00.001-08:00</published><updated>2010-03-06T20:01:06.438-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-06T20:01:06.438-08:00</app:edited><title>Amazon Prime, Amazing service</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;I've subscribed to &lt;a href='http://www.amazon.com/gp/subs/primeclub/signup/main.html'&gt;Amazon prime shipping&lt;/a&gt;. It is free for the first month. I did not want to subscribe to it any longer than the first month because I'm not living in USA. But I forgot to cancel the prime membership after the first month. So Amazon continued with my prime membership and charged my credit card for the first year membership.&lt;br/&gt;&lt;br/&gt;Amazing thing is I could cancel the prime membership with the total refund. The only condition is I shouldn't have bought anything after I pay for the prime membership. Isn't it a wonderful service?&lt;br/&gt;&lt;br/&gt;I just did the cancellation and waiting for Amazon refund. Hope it will arrive as they said.&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=9f38ea11-6bed-8a23-9b88-a4a546682610' alt='' class='zemanta-pixie-img'/&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/1197843169524706388-2579158875147430833?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nujNO39DCuWVPCV4x-B6lM4kdto/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nujNO39DCuWVPCV4x-B6lM4kdto/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nujNO39DCuWVPCV4x-B6lM4kdto/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nujNO39DCuWVPCV4x-B6lM4kdto/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/cBVShelZaVE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/2579158875147430833/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=2579158875147430833" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/2579158875147430833?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/2579158875147430833?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/cBVShelZaVE/amazon-prime-amazing-service.html" title="Amazon Prime, Amazing service" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://supunk.blogspot.com/2010/03/amazon-prime-amazing-service.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QNSH06cCp7ImA9WxBUE0o.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-4613393278160892693</id><published>2010-02-28T09:49:00.000-08:00</published><updated>2010-02-28T09:49:59.318-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-28T09:49:59.318-08:00</app:edited><title>Writing a Load Balance algorithm for WSO2 ESB</title><content type="html">Load balance algorithms are very interesting. They need to be fast and efficient. Otherwise we will spend most of our time trying to find the next route rather than doing the actual message sending.&lt;br /&gt;
&lt;br /&gt;
Also load balancing algorithms involve lots of synchronization operations as well. So they should be coded with care.&lt;br /&gt;
&lt;br /&gt;
The load balance algorithm I was interested in should have the&amp;nbsp;benefits&amp;nbsp;of Round Robin, Weighted and Least connection based algorithms. So it is a combination of all those three algorithms.&lt;br /&gt;
&lt;br /&gt;
Round Robin is a pretty&amp;nbsp;powerful&amp;nbsp;algorithm mainly due to its&amp;nbsp;simplicity. One assumption it made is all the servers are identical and has the exact same capacity. But in practice this may not be the case always.&lt;br /&gt;
&lt;br /&gt;
Static Weighted algorithms assume machines have different capacities and based on those they are configured statically. Combined with round robin algorithms these can be&amp;nbsp;pretty&amp;nbsp;useful in some scenarios. But both these algorithms neglects the run-time&amp;nbsp;behavior&amp;nbsp;of servers.&lt;br /&gt;
&lt;br /&gt;
Some times due to various reasons these servers can get slow or un-responsive. If we don't take these situations in to account, a Load balancer can effectively kill some of the already slow servers. This happens because the load balancer pumps the messages at the same rate even if the server gets slow.&lt;br /&gt;
&lt;br /&gt;
Least connection can be used to some what overcome this problem. Least connection algorithms take the current number of connections in to account. More active connections than usual indicates a server saturation. At this point if the load balancer can reduce the number of messages send to this server, it can save the server from being killed.&lt;br /&gt;
&lt;br /&gt;
So my goal was to write an algorithm that take all these three factors. I wrote the algorithm but still couldn't do enough testing. Also there are improvements in core ESB as well as the algorithm for this to work.&lt;br /&gt;
&lt;br /&gt;
More on these later...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1197843169524706388-4613393278160892693?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5zDqlHMl39s7CmFVog3ze_ilGe8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5zDqlHMl39s7CmFVog3ze_ilGe8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5zDqlHMl39s7CmFVog3ze_ilGe8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5zDqlHMl39s7CmFVog3ze_ilGe8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/Y6zAtXD3gdM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/4613393278160892693/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=4613393278160892693" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/4613393278160892693?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/4613393278160892693?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/Y6zAtXD3gdM/writing-load-balance-algorithm-for-wso2.html" title="Writing a Load Balance algorithm for WSO2 ESB" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://supunk.blogspot.com/2010/02/writing-load-balance-algorithm-for-wso2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8HQXc8eSp7ImA9WxBVGUw.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-4005463658835211649</id><published>2010-02-23T01:53:00.000-08:00</published><updated>2010-02-23T01:53:50.971-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-23T01:53:50.971-08:00</app:edited><title>Priority Based Mediation for WSO2 ESB - Part 2</title><content type="html">In the previous post I was talking about the requirements for priority based mediation. Now I'll explain how we have solved this within the WSO2 ESB.&lt;br /&gt;
&lt;br /&gt;
We have implemented the priority based mediation in two levels. They are HTTP transport level and message mediation level. From the users perspective, key to any priority mediation is to determine the priority of an incoming message.&lt;br /&gt;
&lt;br /&gt;
At the Message mediation layer this can be done using content filters. Tis means the full power of ESB configuration language is available to the user for determining the priority of a given message. For example a message may contain an element called priority and depending on its value the priority can be determined.&lt;br /&gt;
&lt;br /&gt;
At the HTTP layer, user has access to HTTP headers, HTTP parameters and URL values. By looking at these values, user can determine the priority of a given message. We have come up with a configuration language to determine the priority at the HTTP level using these different HTTP param values.&lt;br /&gt;
&lt;br /&gt;
Now lets go in to the actual details of how priority based mediation is implemented. The approach is based on Queues and ThreadPoolExecutors.&lt;br /&gt;
&lt;br /&gt;
We are using the ThreadPoolExecutor provide by Java. ThreadPoolExecutor accepts a BlockingQueue implementation. We have implemented a&amp;nbsp;custom&amp;nbsp;blocking queue that can be used to order the jobs based on priority. ThreadPoolExecutor starts queuing only when the all the core threads are busy. So this suites our model perfectly. We believe, every message should get equal priority&amp;nbsp;until all the core threads are used. This is a fair assumption in most cases.&lt;br /&gt;
&lt;br /&gt;
Internally our custom BlockingQueue uses multiple queues for accepting jobs with different priorities. Once jobs are put in to the queue, it uses an pluggable algorithm for choosing the next job. The default algorithm chooses the jobs based on a priority based round robin algorithm. For example lets say we have two priorities, 10 and 1. This algorithm tries to fetch 10 items with priority 10 and then 1 item with the priority 1.&lt;br /&gt;
&lt;br /&gt;
We have put the priority implementation in two levels due to following reasons. Some users would like to use the ESB as a pure router. In those cases it is better to determine the priority at the HTTP level.&lt;br /&gt;
&lt;br /&gt;
Some users use ESB for heavy processing like XSLT and XQuery. For them it is better to have this at the mediation level.&lt;br /&gt;
&lt;br /&gt;
I'll explain the configuration model in the next post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1197843169524706388-4005463658835211649?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HZzuiquu1dVQFSHvsgwDtn69fzc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HZzuiquu1dVQFSHvsgwDtn69fzc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HZzuiquu1dVQFSHvsgwDtn69fzc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HZzuiquu1dVQFSHvsgwDtn69fzc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/aKJERAVxkEM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/4005463658835211649/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=4005463658835211649" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/4005463658835211649?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/4005463658835211649?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/aKJERAVxkEM/priority-based-mediation-for-wso2-esb_23.html" title="Priority Based Mediation for WSO2 ESB - Part 2" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://supunk.blogspot.com/2010/02/priority-based-mediation-for-wso2-esb_23.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEFRn8_eSp7ImA9WxBVEUg.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-7922851919320747966</id><published>2010-02-14T05:59:00.000-08:00</published><updated>2010-02-14T06:43:37.141-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-14T06:43:37.141-08:00</app:edited><title>Priority Based Mediation for WSO2 ESB</title><content type="html">&lt;p&gt;An ESB can be deployed as a front end for various services with a very high load passing through it. The traffic passing through it may be of different priorities and can have different load charasterisitcs. Also in some situations load of different types of messages can vary dramatically over time.&lt;/p&gt;&lt;p&gt;
The goal is to serve high priority traffic when there are resources available in the system. The serving of different priority messages should be independent as much as possible. For example an ESB can be bombarded with very high volume of low priority traffic. Even in this case ESB should obey its contract to serve high priority traffic.&lt;/p&gt;&lt;p&gt;
Usually a person deploying an ESB expects a certain guarantee of message deliverance from the ESB. ESB should be able to honor that.&lt;/p&gt;&lt;p&gt;
Here is a possible scenario with a high volume of traffic.&lt;/p&gt;&lt;p&gt;
Lets assume ESB is configured to serve two types of messages with different priorities. Message type m1 has the priority p1 and message type m2 has priority p2. p1 is about ten times the priority of p2. In a very high volume traffic scenario the services can afford to loose some amount of m2 messages. But it cannot afford to loose any of m1 messages.&lt;/p&gt;&lt;p&gt;
In normal operation mode, volume of m2 is about twice as m1. But in some situations m1 can be higher and m2 can be low.&lt;/p&gt;&lt;p&gt;
The expectation is to serve the m1 traffic no matter what the volume of m2 traffic is.&lt;/p&gt;&lt;p&gt;
The problem is very interesting. I'll explain how we have solved this problem with next major release of WSO2 ESB (3.0) in the next post.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1197843169524706388-7922851919320747966?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7c7rg1LpmLjSt7kOvixZa2zp-rU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7c7rg1LpmLjSt7kOvixZa2zp-rU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7c7rg1LpmLjSt7kOvixZa2zp-rU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7c7rg1LpmLjSt7kOvixZa2zp-rU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/a3xk_DmRGNk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/7922851919320747966/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=7922851919320747966" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/7922851919320747966?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/7922851919320747966?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/a3xk_DmRGNk/priority-based-mediation-for-wso2-esb.html" title="Priority Based Mediation for WSO2 ESB" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://supunk.blogspot.com/2010/02/priority-based-mediation-for-wso2-esb.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8DQHsyfip7ImA9WxBTEk8.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-3297369242801522267</id><published>2009-12-07T14:50:00.000-08:00</published><updated>2009-12-07T15:01:11.596-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-07T15:01:11.596-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="बुक्स" /><category scheme="http://www.blogger.com/atom/ns#" term="सॉफ्टवेर enginnering" /><title>Books</title><content type="html">Recently I got the chance to read 

The Mythical Man Month by Fred Brooks 
Code Complete Second edition by Steve McConnell. 

I would recommend these two books to anyone interested software engineering. They are truly excellent books.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1197843169524706388-3297369242801522267?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WC1bMAOxRUGd8a4dUJYOeUnHkh4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WC1bMAOxRUGd8a4dUJYOeUnHkh4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WC1bMAOxRUGd8a4dUJYOeUnHkh4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WC1bMAOxRUGd8a4dUJYOeUnHkh4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/m4fx_G-nlmI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/3297369242801522267/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=3297369242801522267" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/3297369242801522267?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/3297369242801522267?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/m4fx_G-nlmI/books.html" title="Books" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://supunk.blogspot.com/2009/12/books.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQAQHc8eyp7ImA9WxNaFE4.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-87801897668804860</id><published>2009-11-28T11:25:00.001-08:00</published><updated>2009-11-28T11:25:41.973-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-28T11:25:41.973-08:00</app:edited><title>WSO2 ESB error handling in Endpoints</title><content type="html">&lt;p&gt;I’ve written an article, &lt;a href="http://wso2.org/library/articles/wso2-enterprise-service-bus-endpoint-error-handling"&gt;WSO2 Enterprise Service Bus - Endpoint Error Handling&lt;/a&gt;, to the WSO2 Oxygen Tank. It is written aiming the advanced users who are already familiar with WSO2 ESB and want to do real deployments. It covers lot of details in depth. So a beginner can quickly grasp some of the internal workings by reading the article as well.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1197843169524706388-87801897668804860?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/useUNpp2k1kopq1Fl6O9LmIYg68/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/useUNpp2k1kopq1Fl6O9LmIYg68/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/useUNpp2k1kopq1Fl6O9LmIYg68/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/useUNpp2k1kopq1Fl6O9LmIYg68/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/kqScvW6Ds30" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/87801897668804860/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=87801897668804860" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/87801897668804860?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/87801897668804860?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/kqScvW6Ds30/wso2-esb-error-handling-in-endpoints.html" title="WSO2 ESB error handling in Endpoints" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://supunk.blogspot.com/2009/11/wso2-esb-error-handling-in-endpoints.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MCQH48eyp7ImA9WxNWFEg.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-4164154618049652593</id><published>2009-10-13T11:34:00.001-07:00</published><updated>2009-10-13T11:44:21.073-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-13T11:44:21.073-07:00</app:edited><title>A Rock Solid Release of WSO2 ESB 2.1.1</title><content type="html">&lt;p&gt;We did a very stable release of WSO2 ESB 2.1 some time ago. Now we have a more robust version of it available. This version has many bug fixes for app server deployment. Also quite a number of general bug fixes. We have changed the registry to support transactions. All the ESB features are very stable and ready to go in to production.&lt;/p&gt;  &lt;p&gt;You can grab the latest release from&lt;/p&gt;  &lt;p&gt;&lt;a href="http://wso2.org/downloads/esb"&gt;http://wso2.org/downloads/esb&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1197843169524706388-4164154618049652593?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XDAw3fXs-Q--cj-nnCE9deVhVZA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XDAw3fXs-Q--cj-nnCE9deVhVZA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XDAw3fXs-Q--cj-nnCE9deVhVZA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XDAw3fXs-Q--cj-nnCE9deVhVZA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/mmqmN2BcoXc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/4164154618049652593/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=4164154618049652593" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/4164154618049652593?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/4164154618049652593?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/mmqmN2BcoXc/rock-solid-release-of-wso2-esb-211.html" title="A Rock Solid Release of WSO2 ESB 2.1.1" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://supunk.blogspot.com/2009/10/rock-solid-release-of-wso2-esb-211.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIESXg-fCp7ImA9WxNSF00.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-4642020015596114005</id><published>2009-08-31T01:23:00.001-07:00</published><updated>2009-08-31T01:31:48.654-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-31T01:31:48.654-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="concurrent" /><title>Java Double checked locking – don’t use it!!</title><content type="html">&lt;p&gt;First lets look at what is double checked locking. Double checked locking has 4 steps&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Check a variable &lt;/li&gt;    &lt;li&gt;Synchronize &lt;/li&gt;    &lt;li&gt;Check the variable again &lt;/li&gt;    &lt;li&gt;Change the variable &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Here is a scenario where this can be used theoretically. There is a object shared by multiple threads. Creation of this object happens at the runtime. Multiple threads can see the need for creating this object. Even if multiple threads want to create the object we only want a single thread to create the object. &lt;/p&gt;  &lt;p&gt;Here is a simple demonstration.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:9a422ab5-8fba-4504-9a7f-85d5b1190eb6" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: java"&gt;public class Test {
    // this is the shared variable accessed by many threads
    private MyObject myObject = null;

    /**
     * This method is invoked by many threads.
     */
    public void doWork() {
        if (myObject == null) {
            synchronized (this) {
                if (myObject == null) {
                    myObject = new MyObject("Supun", 24);
                }
            }
        }
        // do our work
    }
}

class MyObject {
    private String name;    
    private int age;
    MyObject(String name, int age) {
        this.name = name;
        this.age = age;
    }
}&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;You might think this will work. Theoretically it should work. But in practice it won’t work. Specially in production servers with multiple CPU’s and shared memory there is a high chance for this to fail.&lt;/p&gt;

&lt;p&gt;Let me explain why it fails. Here is a demonstration of how java may be implementing the call to new. This order can be different in different compilers. But there is no guarantee. &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:3ee462a0-9dd7-46ef-8a29-098d02f7dd6e" class="wlWriterEditableSmartContent"&gt;&lt;pre class="brush: java"&gt;    public void doWork() {
        if (myObject == null) {
            synchronized (this) {
                if (myObject == null) {
                    // here is how the java code may be actually executed by the JVM
                    myObject = allocateMemory;
                    myObject_constructor();
                }
            }
        }
        // do our work
    }&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;It first allocates memory and assign it to the reference. At this point myObject is not null. But the myObject is not fully initialized yet. At this point a thread can come to the first null check and see it is not null and can try to access the object fields. This will produce unexpected behavior.&lt;/p&gt;

&lt;p&gt;You can solve this problem by using volatile keyword for myObject reference. But volatile is not guaranteed to work across JVMs and the most of the implementations of volatile are slower than synchronization. &lt;/p&gt;

&lt;p&gt;So avoid using double checked locking in Java.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1197843169524706388-4642020015596114005?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CmlrNjwHAONaGdRAxbARR-e7vjk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CmlrNjwHAONaGdRAxbARR-e7vjk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CmlrNjwHAONaGdRAxbARR-e7vjk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CmlrNjwHAONaGdRAxbARR-e7vjk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/5ExZ5GUj5Dc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/4642020015596114005/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=4642020015596114005" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/4642020015596114005?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/4642020015596114005?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/5ExZ5GUj5Dc/java-double-checked-locking-dont-use-it.html" title="Java Double checked locking – don’t use it!!" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://supunk.blogspot.com/2009/08/java-double-checked-locking-dont-use-it.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIDSHwzfCp7ImA9WxNTF0k.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-3087556669698037733</id><published>2009-08-19T22:55:00.001-07:00</published><updated>2009-08-19T23:09:39.284-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-19T23:09:39.284-07:00</app:edited><title>Fancy cars, Beautiful houses, Bank loans &amp; SRI LANKA</title><content type="html">&lt;a href="http://lh6.ggpht.com/_UVlnyapwF90/SozlHYSwj_I/AAAAAAAAAJU/oudIu3phhXA/s1600-h/11772_1%5B2%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="11772_1" border="0" alt="11772_1" src="http://lh6.ggpht.com/_UVlnyapwF90/SozlK5BKrrI/AAAAAAAAAJY/yTY_raEYHpQ/11772_1_thumb.jpg?imgmax=800" width="244" height="164" /&gt;&lt;/a&gt;&lt;a href="http://lh6.ggpht.com/_UVlnyapwF90/SozlOEzd9vI/AAAAAAAAAJc/zKZutzt54EE/s1600-h/Toyota-MR2-Carbon-Bonnet-600%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Toyota-MR2-Carbon-Bonnet-600" border="0" alt="Toyota-MR2-Carbon-Bonnet-600" src="http://lh3.ggpht.com/_UVlnyapwF90/SozlR7dLMHI/AAAAAAAAAJg/khBhULevSrw/Toyota-MR2-Carbon-Bonnet-600_thumb%5B1%5D.jpg?imgmax=800" width="202" height="164" /&gt;&lt;/a&gt;   &lt;p&gt;Everybody loves to have a fancy car and a peaceful beautiful place to live in. This is the dream of Sri Lankans. They all want to by a car. They all want to build the biggest and the most beautiful house possible. All this is fine until they do it with their own money. But they don’t. They do it by getting the biggest loan from some bank. &lt;/p&gt;  &lt;p&gt;Still Sri Lanka is a developing country. Every year it goes to World Bank or IMF for getting loans for running the country. So as Sri Lankans we are in a great debt to the world. Actually not to the whole world but to few powerful countries like USA, Japan etc. So obviously a big portion of every loan a Sri Lankan get from a local bank comes from a loan Sri Lanka took from one of these global organizations.&lt;/p&gt;  &lt;p&gt;But the problem lies with the way we spend this money. We spend it for building a house that has no capability of generating revenue. It is like every time we build a house we are burying some of the money we took from some other country. Also to build these houses we get raw material from the same countries that we took the loan itself. So we are doubling our debts.&lt;/p&gt;  &lt;p&gt;Situation is worse with Cars. From the car itself to spares parts to fuel we are importing from other countries. So we get loans from other countries, we buy cars from these same countries from the loans we got and then we get fuel from these countries as well. So we are entitled to an eternal debt.&lt;/p&gt;  &lt;p&gt;There is another sad side to these loans. Most of these loans are taken by people who don’t do work worth of what they get as their salary. This happens mostly in government sector. Still government sector plays a big role in Sri Lanka. 90 percent of the government workers don’t do work worth of what they get. So ultimately some poor guy has to pay dearly for what these people do. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1197843169524706388-3087556669698037733?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WdONijCEvbhtS7tde0ScbB-4V4M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WdONijCEvbhtS7tde0ScbB-4V4M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WdONijCEvbhtS7tde0ScbB-4V4M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WdONijCEvbhtS7tde0ScbB-4V4M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/iD6FDRrUCcU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/3087556669698037733/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=3087556669698037733" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/3087556669698037733?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/3087556669698037733?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/iD6FDRrUCcU/fancy-cars-beautiful-houses-bank-loans.html" title="Fancy cars, Beautiful houses, Bank loans &amp;amp; SRI LANKA" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_UVlnyapwF90/SozlK5BKrrI/AAAAAAAAAJY/yTY_raEYHpQ/s72-c/11772_1_thumb.jpg?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://supunk.blogspot.com/2009/08/fancy-cars-beautiful-houses-bank-loans.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIHSHw_eCp7ImA9WxNTFks.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-4583621301179333420</id><published>2009-08-18T23:15:00.001-07:00</published><updated>2009-08-18T23:15:39.240-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-18T23:15:39.240-07:00</app:edited><title>WSO2 ESB 2.1 Places for putting custom mediators</title><content type="html">&lt;p&gt;There are three places for putting a mediator. They are&lt;/p&gt;  &lt;p&gt;&amp;lt;esb_carbon_home&amp;gt;\repository\components\mediators   &lt;br /&gt;&amp;lt;esb_carbon_home&amp;gt;\repository\components\dropins    &lt;br /&gt;&amp;lt;esb_carbon_home&amp;gt;\repository\components\lib&lt;/p&gt;  &lt;h4&gt;mediators directory&lt;/h4&gt;  &lt;p&gt;User can put a regular non OSGI mediator jar in to this directory. The system will convert the mediator jar in to an OSGI jar and deploy it in to the server. This way is easy and simple to use. In this way user cannot specifically use the OSGI features for the mediator. For example user cannot make certain packages private or import specific versions of packages. Other than that as I said earlier this is pretty easy. Also user can put mediators that are class mediator as well as mediators that have its own xml configuration.&lt;/p&gt;  &lt;h4&gt;dropins directory&lt;/h4&gt;  &lt;p&gt;User need to build an OSGI bundle of the mediator and put it in to the dropins directory. This requires a basic knowledge about the OSGI and maven bundle plug-in. So it can be little bit difficult for an programmer who doesn't aware of the OSGI technologies. Since user is creating the OSGI bundle he can use the OSGI features as he wish. When creating the OSGI bundle a mediator with a XML configuration should be a fragment of the synapse-core. If it is a class mediator it can be a normal bundle.&lt;/p&gt;  &lt;h4&gt;lib directory&lt;/h4&gt;  &lt;p&gt;User can only put class mediator jars in to this directory. A regular jar can be put in to this directory and it will be automatically converted to an OSGI bundle by the system.   &lt;br /&gt;The recommended way is to put the jar in to the mediators directory.&lt;/p&gt;  &lt;p&gt;Note: in all these cases you need to restart the server after putting the mediator..&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1197843169524706388-4583621301179333420?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nMb1OUyD6IFJ7jHktrDFcwOl-mM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nMb1OUyD6IFJ7jHktrDFcwOl-mM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nMb1OUyD6IFJ7jHktrDFcwOl-mM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nMb1OUyD6IFJ7jHktrDFcwOl-mM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/YkLDHbyynuM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/4583621301179333420/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=4583621301179333420" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/4583621301179333420?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/4583621301179333420?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/YkLDHbyynuM/wso2-esb-21-places-for-putting-custom.html" title="WSO2 ESB 2.1 Places for putting custom mediators" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://supunk.blogspot.com/2009/08/wso2-esb-21-places-for-putting-custom.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMMQ384eyp7ImA9WxNTE04.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-2669051028230385254</id><published>2009-08-15T01:52:00.001-07:00</published><updated>2009-08-15T03:01:22.133-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-15T03:01:22.133-07:00</app:edited><title>The WAY I like to see future Carbon architecture</title><content type="html">&lt;p&gt;WSo2 Carbon provides a SOA Framework with Configuration + Monitoring. It has the concept of Front end and Back end. Front end and back end communicates through SOAP. Front end is JSP driven. So the actual configuration is done through the browser. Then this configuration is transferred to JSP layer with HTTPS. JSP layer uses SOAP to communicate with the back end. So back end has a series of Services deployed in an Axi2 instance for configuring and monitoring the server. &lt;/p&gt;  &lt;p&gt;At the moment users deploy there services to the same Axis2 instance that hosts the Admin services. This has few drawbacks. Axis2 doesn’t have the concept of user. Also a service has access to the whole Axis2 instance. This means a service can virtually do anything in Axis2. So if several user deploy services in carbon they can access services deploy buy others. Also this service has access to all the admin services as well. But at the moment we consider this type of situations as user errors. System doesn’t enforce any restrictions on the user. But if we want to use Carbon to provide services in a multitenant way(As in gmail or Amazon ec2) this model won’t work.&lt;/p&gt;  &lt;p&gt;Here is how I would like to see carbon architecture in the future that will solve all the above issues.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_UVlnyapwF90/SoZ3VUhbkwI/AAAAAAAAAJI/TSYf4hMeEos/s1600-h/carbon-architecture%5B9%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="carbon-architecture" border="0" alt="carbon-architecture" src="http://lh6.ggpht.com/_UVlnyapwF90/SoZ3XYlyKoI/AAAAAAAAAJM/3HPkitHlbzI/carbon-architecture_thumb%5B5%5D.png?imgmax=800" width="654" height="339" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Here most important thing is Administrative services run in a separate Axis2 instance and user services run in their own Axis2 instances. This will clearly separate the administrative configuration from the service hosting environment providing better security and reliability. Also by nature this architecture is multitenant.&lt;/p&gt;  &lt;p&gt;Different user groups or realms can have their own Axis2 instance as their hosting environment. Mapping the user to their respective Axis2 instance can be done by the management layer. These Axis2 instances should have their own modules, services, and transports. &lt;/p&gt;  &lt;p&gt;Although it is simple to describe in a high level, this can be very hard to implement. But writing software is not an easy task anyway.&amp;#160; &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1197843169524706388-2669051028230385254?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lXKkHTLuL-h543Oc4tquOtAesqU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lXKkHTLuL-h543Oc4tquOtAesqU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lXKkHTLuL-h543Oc4tquOtAesqU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lXKkHTLuL-h543Oc4tquOtAesqU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/nwasVcZLjOs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/2669051028230385254/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=2669051028230385254" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/2669051028230385254?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/2669051028230385254?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/nwasVcZLjOs/way-i-like-to-see-future-carbon.html" title="The WAY I like to see future Carbon architecture" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_UVlnyapwF90/SoZ3XYlyKoI/AAAAAAAAAJM/3HPkitHlbzI/s72-c/carbon-architecture_thumb%5B5%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://supunk.blogspot.com/2009/08/way-i-like-to-see-future-carbon.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MNQ346cCp7ImA9WxJaEkU.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-7499378655989848044</id><published>2009-08-03T01:45:00.001-07:00</published><updated>2009-08-03T01:51:32.018-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-03T01:51:32.018-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Web Services" /><title>Most painful task in Web Services Development</title><content type="html">&lt;h4&gt;it is Testing!!&lt;/h4&gt;  &lt;p&gt;I have being writing web services related technologies for almost three years now. Testing is the most boring, time consuming task in Web Service Stack Development. I’m not talking about developing just Services. I’m talking about developing the tools needed for these services. Stuff like web service engines, ESBs etc..&lt;/p&gt;  &lt;p&gt;It takes few weeks to write the actual code. Then it takes months to test it properly and get it to a stable enterprise ready application. If you look at the code behind web services tools they are pretty simple and doesn’t have lots of very hard to understand algorithms. But these applications takes years to develop and mature and surprisingly there are not much good web service engines around.&lt;/p&gt;  &lt;p&gt;Here are some of the points I’ve noticed&lt;/p&gt;  &lt;p&gt;When a bug is found we need to compile the classes, deploy it in the server and then test it. This implies shutting down the server copy the compiled files and then starting it again. Also to go to the actual place where error is found we need to configure the server as well. If you made another mistake you have to repeat the cycle which can lead to a vicious cycle. Normally shutting and starting up the server can take about 1 min. &lt;/p&gt;  &lt;p&gt;Web Services are distributed in nature. Typically to test something we need a client + server. If you write a server component you need to write a client as well. Every time a bug is found we need to run the server + client. For products like ESBs we need client + ESB + web services server to test a full scenario.&lt;/p&gt;  &lt;p&gt;Since we are writing the client, it can be implemented according to the server implementation we have. This only implies our server and client can work together. It doesn’t imply our implementation is correct. &lt;/p&gt;  &lt;p&gt;Web Services invocations are not tangible. They get messages in and produce messages. So if we want to find a bug we need to analyze the messages. This is a hard thing to do as well as automate.&lt;/p&gt;  &lt;p&gt;When an UI is involved with the these tools things get much more complicated. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1197843169524706388-7499378655989848044?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZC6rjiFQUzxJ4H6_lHQy7d1YwUQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZC6rjiFQUzxJ4H6_lHQy7d1YwUQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZC6rjiFQUzxJ4H6_lHQy7d1YwUQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZC6rjiFQUzxJ4H6_lHQy7d1YwUQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/FeJLWhVjjSo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/7499378655989848044/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=7499378655989848044" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/7499378655989848044?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/7499378655989848044?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/FeJLWhVjjSo/most-painful-task-in-web-services.html" title="Most painful task in Web Services Development" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://supunk.blogspot.com/2009/08/most-painful-task-in-web-services.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MGRX0zfSp7ImA9WxJbEEU.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-3680501640310008335</id><published>2009-07-19T01:05:00.001-07:00</published><updated>2009-07-20T02:17:04.385-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-20T02:17:04.385-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WSO2" /><category scheme="http://www.blogger.com/atom/ns#" term="Synapse" /><category scheme="http://www.blogger.com/atom/ns#" term="architecture" /><category scheme="http://www.blogger.com/atom/ns#" term="ESB" /><title>WSO2 ESB – A High Level Architectural Perspective</title><content type="html">&lt;p&gt;Enterprises are inherently complex, comprising of hundreds of applications with completely different semantics. Some of these applications are custom built, some are acquired from third parties and some can be a combination of both and they can be operating in different system environments.&lt;/p&gt;  &lt;p&gt;Integration among these heterogeneous applications is vital to the enterprise. But conventional integration mechanisms can lead to a maintenance nightmare by coupling different components too tightly. &lt;/p&gt;  &lt;p&gt;SOA is today’s integration technology. But SOA alone will not solve all the problems at hand. Service interfaces can change. Different services may be using different data formats and communication protocols. Physical locations of services can change arbitrarily. All these constraints means your applications are still tightly coupled together.&lt;/p&gt;  &lt;p&gt;An &lt;a href="http://en.wikipedia.org/wiki/Enterprise_service_bus"&gt;ESB&lt;/a&gt; can be used for loosen up these couplings between different services and service consumers.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://wso2.org/projects/esb/java"&gt;WSO2 ESB&lt;/a&gt; is a full fledged enterprise ready ESB. WSO2 ESB is built around Apache Synapse project. &lt;a href="http://syanse.apache.org"&gt;Apache Synapse&lt;/a&gt; is built using the &lt;a href="ws.apache.org/axis2/ "&gt;Apache Axis2&lt;/a&gt; Project. &lt;/p&gt;  &lt;p&gt;Below is a diagram describing WSO2 ESB architecture from a messaging perspective. There are lot of other areas like Tasks, Events which are not describe in this diagram. This article focus on how messaging is handled in the ESB.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_UVlnyapwF90/SmLf6ppiLPI/AAAAAAAAAI4/kvzXqvO-SLk/s1600-h/esb%20architecture_1%5B4%5D.png"&gt;&lt;img title="esb architecture_1" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="301" alt="esb architecture_1" src="http://lh3.ggpht.com/_UVlnyapwF90/SmLf-uS2gRI/AAAAAAAAAJA/oSKsSEIpEHs/esb%20architecture_1_thumb%5B2%5D.png?imgmax=800" width="744" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="center"&gt;&lt;strong&gt;Figure&lt;/strong&gt;: High Level Architecture of WSO2 ESB&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Various components of the pipes doesn’t imply any order in this diagram.&lt;/p&gt;  &lt;p&gt;An application sends a message to the ESB.&lt;/p&gt;  &lt;p&gt;The message is picked up by the ESB transport.&lt;/p&gt;  &lt;p&gt;Transport sends the message through a message pipe. Quality of service aspects like Security and reliable messaging of the message is taken care in this pipe. Internally this pipe is the in-flow and out-flow of Axis2. ESB can operate in two modes. Message mediation or proxy services. In case of message mediation a single pipe is used. In case of proxy services we can think of separate pipes connecting transport to different proxy services. &lt;/p&gt;  &lt;p&gt;Message transformation + routing can be seen as a single unit. As the diagram specifies there is no clear separation between message transformation components and routing components. WSO2 ESB call this the mediation framework. Some transformations happens before routing decision has taken. Some transformations happens after the the routing decision has taken. This part is the Synapse implementation. &lt;/p&gt;  &lt;p&gt;After this message is injected to the separate pipes depending on the destinations. Here again quality of service aspects of the messages is determined. &lt;/p&gt;  &lt;p&gt;At the end there is a transport layer. This transport layer takes care of the transport protocol transformations required by the ESB.&amp;#160; &lt;/p&gt;  &lt;p&gt;I have explained how a request propagates to its actual endpoint through ESB using its architecture. Response handling is the reverse of this operation.&lt;/p&gt;  &lt;p&gt;All these components cab be managed and monitored through WSO2 ESB management console. &lt;/p&gt;  &lt;p&gt;This is a birds eye view of the ESB architecture. Definitely Architecture can be seen in a more detailed view. Possibly in a few more blogs I’ll explain each and every aspect in a more detailed manner.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1197843169524706388-3680501640310008335?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yrgRZy31vhGU2JFl1Fc48ZheVIY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yrgRZy31vhGU2JFl1Fc48ZheVIY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yrgRZy31vhGU2JFl1Fc48ZheVIY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yrgRZy31vhGU2JFl1Fc48ZheVIY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/8iP0DaW5JMg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/3680501640310008335/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=3680501640310008335" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/3680501640310008335?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/3680501640310008335?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/8iP0DaW5JMg/wso2-esb-high-level-architectural.html" title="WSO2 ESB – A High Level Architectural Perspective" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_UVlnyapwF90/SmLf-uS2gRI/AAAAAAAAAJA/oSKsSEIpEHs/s72-c/esb%20architecture_1_thumb%5B2%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://supunk.blogspot.com/2009/07/wso2-esb-high-level-architectural.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcNSHgycCp7ImA9WxJUGEQ.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-866500054123743658</id><published>2009-07-16T02:17:00.001-07:00</published><updated>2009-07-17T22:14:59.698-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-17T22:14:59.698-07:00</app:edited><title>Writing a WSO2 ESB mediator</title><content type="html">&lt;p&gt;Mediators provide a easy way of extending the ESB functionalities. WSO2 ESB is based on WSO2 Carbon platform which uses OSGI as the underlying technology. This implies everything that runs inside the WSO2 ESB to be OSGI bundles. No exception for mediators. &lt;/p&gt;  &lt;p&gt;There are two ways of writing&amp;#160; a ESB mediator. &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Using Class mediator, this doesn’t allow mediator specific XML configurations &lt;/li&gt;    &lt;li&gt;Writing the mediator with Factory and Serialize methods which allows it to have its own XML configuration &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Writing the mediator is straightforward in any of these cases. Easiest way to write the mediator is to extend your mediator class from org.apache.synapse.mediators.AbstractMediator class. I’m not going to go in to details of how to write the mediator. Here are two good articles about how to write a mediator in each of the above cases.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://wso2.org/library/2898"&gt;Writing a Mediator in WSO2 ESB - Part I | &lt;em&gt;WSO2&lt;/em&gt; Oxygen Tank&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://wso2.org/library/2936"&gt;Writing a Mediator in WSO2 ESB - Part 2 | &lt;em&gt;WSO2&lt;/em&gt; Oxygen Tank&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;After you write the mediator you need to build it with WSO2 ESB. This is the tricky part. You have to make your mediator an OSGI bundle in order to make it work with ESB. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Easier Way&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You just need to create a regular jar which links to the Synpase core jar and put it in to the repository/component/mediators directory. The platform will automatically make it an OSGI bundle and deploy it to the server.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Harder Way&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;But if you want the full control of how your mediator should be created as an OSGI bundle you have to write the following POM files. I have given two maven pom files that can be used to build the mediator in each of the above cases. This way you can export the packages you want, you can import packages you want etc. This comes handy if your mediator is using some versioned jar files.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Important&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Both pom files are created for the ESB 2.1 release. If you want to use them for another release make sure you change the versions accordingly.&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;Here is a POM file if you use class mediator to create the mediator.&lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: scroll; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 1200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;   &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;project&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://maven.apache.org/POM/4.0.0&amp;quot;&lt;/span&gt;
         &lt;span style="color: #ff0000"&gt;xmlns:xsi&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;/span&gt;
         &lt;span style="color: #ff0000"&gt;xsi:schemaLocation&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;    

    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;modelVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;4.0.0&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;modelVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;groupId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;org.test&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;groupId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;artifactId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;org.test&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;artifactId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;1.0.0&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;packaging&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;bundle&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;packaging&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;My Samples - Test mediator&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;http://www.test.com&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;

    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;repositories&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;repository&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;wso2-maven2-repository&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;http://dist.wso2.org/maven2&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;repository&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;repository&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;apache-Incubating-repo&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Maven Incubating Repository&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;http://people.apache.org/repo/m2-incubating-repository&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;repository&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;repository&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;apache-maven2-repo&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Apache Maven2 Repository&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;http://repo1.maven.org/maven2/&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;repository&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;repositories&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;

    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;build&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;plugins&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;plugin&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;groupId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;org.apache.maven.plugins&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;groupId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;artifactId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;maven-compiler-plugin&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;artifactId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;2.0&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;configuration&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;source&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;1.5&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;source&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;target&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;1.5&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;target&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;configuration&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;plugin&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;plugin&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;groupId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;org.apache.felix&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;groupId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;artifactId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;maven-bundle-plugin&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;artifactId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;1.4.0&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;extensions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;extensions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;configuration&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;instructions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Bundle-SymbolicName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;org.test&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Bundle-SymbolicName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Bundle-Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;org.test&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Bundle-Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Export-Package&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                            org.test.mediator.*,
                        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Export-Package&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Import-Package&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;                                                                                    
                            *; resolution:=optional
                        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Import-Package&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;                        
                    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;instructions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;configuration&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;plugin&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;plugins&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;build&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;

    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;dependencies&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;        
        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;dependency&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;groupId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;org.apache.synapse&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;groupId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;artifactId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;synapse-core&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;artifactId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;1.3.0.wso2v1&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;dependency&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;        
    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;dependencies&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;project&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;You can see we are using the maven bundle plugin for creating the OSGI bundle. Make sure you export the correct package which contains the mediator code. Unless you do this your mediator won’t work.&lt;/p&gt;

&lt;p&gt;Here is a POM file if you use Serialize and Factory classes to create the mediator with it’s own XML configuration&lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: scroll; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 1200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;project&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://maven.apache.org/POM/4.0.0&amp;quot;&lt;/span&gt;
         &lt;span style="color: #ff0000"&gt;xmlns:xsi&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;/span&gt;
         &lt;span style="color: #ff0000"&gt;xsi:schemaLocation&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;    

    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;modelVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;4.0.0&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;modelVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;groupId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;org.test&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;groupId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;artifactId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;org.test&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;artifactId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;1.0.0&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;packaging&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;bundle&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;packaging&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;My Samples - Test mediator&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;http://www.test.com&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;

    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;repositories&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;repository&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;wso2-maven2-repository&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;http://dist.wso2.org/maven2&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;repository&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;repository&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;apache-Incubating-repo&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Maven Incubating Repository&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;http://people.apache.org/repo/m2-incubating-repository&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;repository&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;repository&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;apache-maven2-repo&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Apache Maven2 Repository&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;http://repo1.maven.org/maven2/&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;url&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;repository&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;repositories&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;

    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;build&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;plugins&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;plugin&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;groupId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;org.apache.maven.plugins&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;groupId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;artifactId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;maven-compiler-plugin&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;artifactId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;2.0&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;configuration&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;source&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;1.5&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;source&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;target&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;1.5&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;target&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;configuration&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;plugin&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;plugin&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;groupId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;org.apache.felix&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;groupId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;artifactId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;maven-bundle-plugin&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;artifactId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;1.4.0&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;extensions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;extensions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;configuration&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;instructions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Bundle-SymbolicName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;org.test&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Bundle-SymbolicName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Bundle-Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;org.test&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Bundle-Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Export-Package&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                            org.test.mediator.*,
                        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Export-Package&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Import-Package&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;                                                                                    
                            *; resolution:=optional
                        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Import-Package&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;                        
                        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Fragment-Host&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;synapse-core&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Fragment-Host&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;instructions&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
                &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;configuration&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;plugin&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;plugins&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;build&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;

    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;dependencies&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;        
        &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;dependency&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;groupId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;org.apache.synapse&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;groupId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;artifactId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;synapse-core&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;artifactId&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
            &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;1.3.0.wso2v1&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
        &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;dependency&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;        
    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;dependencies&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;project&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;In this case we have to make the mediator an OSGI fragment of the synapse-core bundler. To achieve this we are using the &amp;lt;Fragment-Host&amp;gt;synapse-core&amp;lt;/Fragment-Host&amp;gt;. &lt;/p&gt;

&lt;p&gt;After you create the mediator drop the jar file in to the {ESB HOME}\repository\components\dropins folder. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1197843169524706388-866500054123743658?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eo-pbW89XddaZD_8WnJYZapBMsQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eo-pbW89XddaZD_8WnJYZapBMsQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eo-pbW89XddaZD_8WnJYZapBMsQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eo-pbW89XddaZD_8WnJYZapBMsQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/3Z0fUBTBhZA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/866500054123743658/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=866500054123743658" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/866500054123743658?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/866500054123743658?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/3Z0fUBTBhZA/writing-wso2-esb-mediator.html" title="Writing a WSO2 ESB mediator" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://supunk.blogspot.com/2009/07/writing-wso2-esb-mediator.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UCQXw7fip7ImA9WxJUE0o.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-8729703183029553441</id><published>2009-07-11T00:09:00.001-07:00</published><updated>2009-07-11T21:01:00.206-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-11T21:01:00.206-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WSO2" /><category scheme="http://www.blogger.com/atom/ns#" term="SOA" /><category scheme="http://www.blogger.com/atom/ns#" term="architecture" /><category scheme="http://www.blogger.com/atom/ns#" term="ESB" /><title>Why you need WSO2 ESB 2.1 in your SOA?</title><content type="html">&lt;p&gt;ESB is a key component in any SOA based solution. &lt;a href="http://wso2.org"&gt;WSO2&lt;/a&gt; has released it’s latest version of &lt;a href="http://wso2.org/projects/esb/java"&gt;ESB 2.1.0.&lt;/a&gt; Here are some of the key features of WSO2 ESB that you are expecting to see in your ESB.&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="93"&gt;Functionality&lt;/td&gt;        &lt;td valign="top" width="700"&gt;Description&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="98"&gt;Invocation&lt;/td&gt;        &lt;td valign="top" width="696"&gt;Support for synchronous and asynchronous transport protocols like http, jms, mail, vfs, udp, fix and&amp;#160; service mapping (locating and binding) through proxy services&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="102"&gt;Routing&lt;/td&gt;        &lt;td valign="top" width="692"&gt;addressability, static/deterministic routing, content-based routing, rules-based routing&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="106"&gt;Mediation&lt;/td&gt;        &lt;td valign="top" width="689"&gt;protocol transformation, service mapping&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="109"&gt;Messaging&lt;/td&gt;        &lt;td valign="top" width="687"&gt;message-processing, message transformation and message enhancement through mediation framework&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="111"&gt;         &lt;p&gt;Service orchestration&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="685"&gt;coordination of multiple implementation services exposed as a single, aggregate service&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="113"&gt;Quality of service&lt;/td&gt;        &lt;td valign="top" width="684"&gt;security (encryption and signing), reliable delivery, transaction management, throttling, caching&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="114"&gt;Management&lt;/td&gt;        &lt;td valign="top" width="683"&gt;monitoring, audit, logging, metering, admin console&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="115"&gt;Component architecture&lt;/td&gt;        &lt;td valign="top" width="682"&gt;built on the revolutionary WSO2 carbon architecture which allows you to build your own ESB that suites your enterprise&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="116"&gt;Clustering&lt;/td&gt;        &lt;td valign="top" width="681"&gt;Running in a cluster for better load handling&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="117"&gt;Load balancing&lt;/td&gt;        &lt;td valign="top" width="681"&gt;ESB can load balance the requests to a cluster&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;You can see WSO2 ESB offers a comprehensive list of functionalities which can be seen only in enterprise grade ESBs. &lt;/p&gt;  &lt;p&gt;Hmm quite a lot of features… Now you must be wondering what is the price for all of this? You won’t believe this. It is ZERO. Also the code is available for free download and it is &lt;a href="http://www.apache.org/licenses/LICENSE-2.0.html"&gt;Apache 2.0 license&lt;/a&gt;. You know what you can do with Apache 2.0 license. If you are looking for commercial support, &lt;a href="http://wso2.com"&gt;WSO2&lt;/a&gt; offers it for may be quarter of what you are paying for other commercial ESBs.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;Bottom line is WSO2 ESB is an enterprise grade ESB, free of charge. I don’t see any reason why you shouldn’t have it!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1197843169524706388-8729703183029553441?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2ZtaRXA1eLfeDIzKqfWjLZ8fbQU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2ZtaRXA1eLfeDIzKqfWjLZ8fbQU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2ZtaRXA1eLfeDIzKqfWjLZ8fbQU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2ZtaRXA1eLfeDIzKqfWjLZ8fbQU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/ypGQJ9HsoRY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/8729703183029553441/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=8729703183029553441" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/8729703183029553441?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/8729703183029553441?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/ypGQJ9HsoRY/why-you-need-wso2-esb-21-in-your-soa.html" title="Why you need WSO2 ESB 2.1 in your SOA?" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://supunk.blogspot.com/2009/07/why-you-need-wso2-esb-21-in-your-soa.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQNQXw9fyp7ImA9WxJUEkw.&quot;"><id>tag:blogger.com,1999:blog-1197843169524706388.post-8185217981405890948</id><published>2009-07-10T01:09:00.001-07:00</published><updated>2009-07-10T01:09:50.267-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-10T01:09:50.267-07:00</app:edited><title>WSO2 ESB 2.1 Released</title><content type="html">&lt;p&gt;&lt;a href="http://wso2.org/downloads/esb"&gt;http://wso2.org/downloads/esb&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It is more stable, more user friendly and has lots of new features. You must give it a try……&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1197843169524706388-8185217981405890948?l=supunk.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4F4cHZ6D_vAZ2NcMmDX0ssHxZFk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4F4cHZ6D_vAZ2NcMmDX0ssHxZFk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4F4cHZ6D_vAZ2NcMmDX0ssHxZFk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4F4cHZ6D_vAZ2NcMmDX0ssHxZFk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SupunKamburugamuvasBlog/~4/sGpzISuR1dc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://supunk.blogspot.com/feeds/8185217981405890948/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=1197843169524706388&amp;postID=8185217981405890948" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/8185217981405890948?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1197843169524706388/posts/default/8185217981405890948?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SupunKamburugamuvasBlog/~3/sGpzISuR1dc/wso2-esb-21-released.html" title="WSO2 ESB 2.1 Released" /><author><name>Supun Kamburugamuva</name><uri>http://www.blogger.com/profile/14361364937700874215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="23" height="32" src="http://3.bp.blogspot.com/_UVlnyapwF90/TJt8MW5cmpI/AAAAAAAAAKI/pmlsTS6co8o/S220/45695_439733319920_594774920_4769125_1165489_n.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://supunk.blogspot.com/2009/07/wso2-esb-21-released.html</feedburner:origLink></entry></feed>

