<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4206392247746930256</id><updated>2012-02-16T11:29:44.973-08:00</updated><category term='mediation'/><category term='barcamp'/><category term='quartz'/><category term='protocol'/><category term='transport'/><category term='cse'/><category term='documentation'/><category term='derby'/><category term='web'/><category term='lake tahoe'/><category term='air show'/><category term='registry'/><category term='avatar'/><category term='soa'/><category term='open source'/><category term='ws-discovery'/><category term='chrome'/><category term='firefox'/><category term='osgi'/><category term='travel'/><category term='update manager'/><category term='xpath'/><category term='top'/><category term='eclipse'/><category term='nbqsa'/><category term='mashup'/><category term='bps'/><category term='performance tuning'/><category term='facebook'/><category term='xml'/><category term='xerces'/><category term='attack'/><category term='cdma'/><category term='scalability'/><category term='java'/><category term='error handling'/><category term='vga'/><category term='security'/><category term='sequence'/><category term='esb'/><category term='schema'/><category term='language'/><category term='ea'/><category term='terminator'/><category term='cloud'/><category term='game'/><category term='apachecon'/><category term='olap'/><category term='automobile'/><category term='rest'/><category term='websphere mq'/><category term='mooshup'/><category term='movie'/><category term='activemq'/><category term='carbon'/><category term='problems'/><category term='integration'/><category term='bandwidth'/><category term='intel'/><category term='software'/><category term='faults'/><category term='summer of code'/><category term='grid computing'/><category term='fix'/><category term='rank'/><category term='middleware'/><category term='race'/><category term='wso2con'/><category term='ubuntu'/><category term='release'/><category term='jms'/><category term='california'/><category term='error'/><category term='wso2'/><category term='google'/><category term='1.2'/><category term='proxy'/><category term='infoworld'/><category term='javascript'/><category term='PaaS'/><category term='utah'/><category term='messaging'/><category term='cbr'/><category term='jira'/><category term='business intelligence'/><category term='conference'/><category term='http'/><category term='museum'/><category term='dial-up'/><category term='tasks'/><category term='committer'/><category term='grammar'/><category term='gutsy'/><category term='social networking'/><category term='ibm'/><category term='shell'/><category term='issues'/><category term='browser'/><category term='internet'/><category term='wso2 esb'/><category term='quickfix/j'/><category term='nfs'/><category term='netherlands'/><category term='axis2'/><category term='amsterdam'/><category term='visual effects'/><category term='enterprise integration'/><category term='apache'/><category term='linux'/><category term='yacc'/><category term='wsas'/><category term='huawie'/><category term='research'/><category term='alps'/><category term='programming'/><category term='university of moratuwa'/><category term='1.7'/><category term='modem'/><category term='synapse'/><category term='moinc'/><category term='web services'/><category term='award'/><category term='ie'/><category term='tcp'/><category term='cool'/><category term='failover'/><category term='fleet week'/><category term='hello world'/><category term='jordan'/><category term='wsas. 2.3'/><category term='identity'/><category term='garbage collection'/><category term='history'/><category term='server'/><category term='lex'/><category term='parser'/><category term='axis2. web services'/><category term='software testing'/><category term='NASA'/><category term='discovery'/><title type='text'>The Tech Feast</title><subtitle type='html'>A Glimpse at the World of Computer Science</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>90</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-3584123284601064530</id><published>2012-01-20T05:21:00.001-08:00</published><updated>2012-01-20T05:32:55.714-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2con'/><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><title type='text'>High Volume Web API management with WSO2 ESB</title><content type='html'>&lt;div style="text-align: justify;"&gt;During last year's &lt;a href="http://wso2con.com/"&gt;WSO2Con&lt;/a&gt;, &lt;a href="http://pzf.fremantle.org/"&gt;Paul Fremantle&lt;/a&gt; and I co-presented on the topic "High Volume Web API management with WSO2 ESB". There we discussed how &lt;a href="http://wso2.com/products/enterprise-service-bus/"&gt;WSO2 ESB&lt;/a&gt; is specifically designed to handle large volumes of traffic received over many concurrent connections. We explained the multithreading, streaming and non-blocking IO aspects of the ESB while looking at some of the high performance extensions we offer such as the message relay and the pass through HTTP transport. We also went through some ESB and JVM performance tuning basics taking the &lt;a href="http://wso2.com/landing/ebay-the-esb-casestudy/"&gt;WSO2 ESB deployment at eBay&lt;/a&gt; as a case study.&lt;/div&gt;&lt;iframe width="420" height="315" src="http://www.youtube.com/embed/sRSmyIc40Qc" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-3584123284601064530?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/3584123284601064530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=3584123284601064530' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/3584123284601064530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/3584123284601064530'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2012/01/high-volume-web-api-management-with.html' title='High Volume Web API management with WSO2 ESB'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/sRSmyIc40Qc/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-6281782051787282187</id><published>2012-01-08T00:54:00.000-08:00</published><updated>2012-01-08T01:32:01.897-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='enterprise integration'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='messaging'/><title type='text'>WSO2 ESB Tips &amp; Tricks 08: Message Stores and Processors</title><content type='html'>&lt;div style="text-align: justify;"&gt;Ability to store a message in a temporary storage is a fundamental requirement in many enterprise integration scenarios. There are many occasions where a systems integrator would have to design a message flow which simply dumps all the messages into some kind of a storage facility for later retrieval. Here are several scenarios that I’ve encountered while working on real-life integration projects which required me to consider using an intermediate message store:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Matching Request Rates&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Some services can only process requests at a given rate. But the service consumers, who are generally unaware of the service implementation details, may send requests at any rate they prefer. In this case we should not directly expose the service to consumers who might overwhelm the service by sending too many requests. Therefore consumers should be provided with a virtual service interface (a proxy service) which stores all incoming requests in a persistent store. A separate component would retrieve these messages from the temporary store and play them at the actual service at the preferred rate. This type of a messaging system is generally known as a store-and-forward messaging system.&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/-gOekANElhuc/Twld1AvFIII/AAAAAAAAAMc/MB_no2gmK_I/s1600/store-n-fwd.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 145px;" src="http://1.bp.blogspot.com/-gOekANElhuc/Twld1AvFIII/AAAAAAAAAMc/MB_no2gmK_I/s400/store-n-fwd.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5695186369098621058" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Guaranteed Delivery&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In certain integration scenarios it is of utmost importance that all requests are received and processed by the back-end services (i.e. no message loss).  However this is a rather tricky requirement to implement as the back-end services could be unavailable at times due to various reasons like maintenance activities and hardware faults. Here also we can use a persistent message store to solve the problem. We can configure the messaging system or the middleware to detect communication errors that may occur while sending requests and then save the failed requests in a message store for later delivery. Depending on the availability of tools an automated retry mechanism or a manual retry mechanism can be implemented for the failed messages. In this case the persistent store is acting as a &lt;a href="http://eaipatterns.com/DeadLetterChannel.html"&gt;dead letter channel&lt;/a&gt;.&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/-l05TtTosy7o/Twld1T8tdMI/AAAAAAAAAMk/l2L_8t8IiUk/s1600/dlc.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 161px;" src="http://2.bp.blogspot.com/-l05TtTosy7o/Twld1T8tdMI/AAAAAAAAAMk/l2L_8t8IiUk/s400/dlc.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5695186374256063682" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;In-Order Delivery&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Some scenarios require that systems consume messages in the exact order they were produced. In such situations respective middleware should be programmed to deliver the requests in the received order. If a request fails due to a temporary outage, the middleware should not send the rest of the messages because that would disrupt the order at which the messages are consumed. The middleware should retry and make sure the failed message is indeed received by the back-end system before the rest of the messages can be sent. A temporary message store is a natural fit for implementing a solution of this nature. However unlike in the previous cases, the message store should be capable of retaining the order in which messages are stored. In general it should be a message queue which provides basic FIFO semantics. The middleware would enqueue all the incoming requests in the store and a different component will pick them up, one at a time, for delivery. In order to preserve the order of messages under error conditions, the delivery component should not remove a message from the store until a satisfactory response has been received from the back-end system for each message sent. This type of systems also falls under the store-and-forward category.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Separation of Concerns&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Sometimes it is necessary to run messages through expensive logging and audit routines. However such additional processing can put a lot of overhead on message flows thus contributing to huge delays and sluggish user experience. Using a message store, it is possible to decouple concerns like logging from the fundamental requirements like routing. For an example middleware can be configured to create a copy of each incoming message and dump that into a temporary store. The original message can be routed through the middleware to the desired endpoint without any additional processing. The logging and audit systems can asynchronously consume the messages in the store and perform all the necessary processing on them off-line. This is one of the simplest as well as most common uses of a message store. In fact the standard enterprise integration pattern named "&lt;a href="http://eaipatterns.com/MessageStore.html"&gt;Message Store pattern&lt;/a&gt;" describes this very specific use case of intermediate message stores.&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/-CqpbUaTAPvQ/Twld1VNk7yI/AAAAAAAAAM0/ANuiMYFdP88/s1600/audit.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 160px;" src="http://1.bp.blogspot.com/-CqpbUaTAPvQ/Twld1VNk7yI/AAAAAAAAAM0/ANuiMYFdP88/s400/audit.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5695186374595243810" /&gt;&lt;/a&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;As seen from the above examples, the concept of message stores can be used to solve countless enterprise integration problems. The asynchronous and persistent messaging patterns that result from message stores are at the crux of modern message-oriented middleware (MOM). It is an accepted norm that message stores are ideal for constructing complex distributed systems while keeping the overall architecture cohesive but loosely coupled.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Starting from version 4.0.0, &lt;a href="http://wso2.com/products/enterprise-service-bus/"&gt;WSO2 ESB&lt;/a&gt; has built-in support for creating and managing message stores. In fact we took a revolutionary step forward in the enterprise integration space by introducing the “message store – message processor” architecture to WSO2 ESB. At high level a message store is a logical entity in which messages can be stored for later retrieval. Additionally a message store may provide some QoS features such as persistence, message order retention and random access support. The exact runtime behavior and the features offered by a message store are determined by the message store implementation being used. WSO2 ESB currently ships with following two message store implementations.&lt;/div&gt;&lt;/div&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://docs.wso2.org/display/ESB/In+Memory+Message+Store"&gt;In-Memory Message Store&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Stores messages in an in-memory queue. Not persistent. Supports random access. Retains message order.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://docs.wso2.org/display/ESB/JMS+Message+Store"&gt;JMS Message Store&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Stores message in a JMS queue (works with any JMS/JNDI compliant broker). Persistent. Does not support random access. Retains message order.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;WSO2 ESB also provides an API using which a user can develop his/her own message store implementations. For an example one can come up with a file system based message store, a JDBC based message store or a NoSQL based message store and use them in WSO2 ESB. XML syntax for configuring a message store is as follows:&lt;/div&gt;&lt;pre&gt;&amp;lt;messageStore name="string" class="classname" &amp;gt;&lt;br /&gt;  &amp;lt;parameter name="string" &amp;gt; "string" &amp;lt;/parameter&amp;gt;*&lt;br /&gt;&amp;lt;/messageStore&amp;gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;The &lt;a href="http://docs.wso2.org/display/ESB/Store+Mediator"&gt;store mediator&lt;/a&gt; is used to enqueue messages in a given message store. This mediator can be used in any sequence or proxy service. Therefore any message flow in WSO2 ESB runtime can be linked up with a message store. By using the store mediator in a fault sequence a message store can be used as a dead letter channel. &lt;/div&gt;&lt;pre&gt;&amp;lt;store messageStore="storename"/&amp;gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;Message stores in WSO2 ESB can be managed via the ESB management console or JMX. One may list the available stores, browse the objects stored in them and perform various operations on the stored messages using the above techniques.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Message processors work hand-in-hand with message stores. They are used to consume messages stored in message stores. Every message processor must be associated with an existing message store. Similar to the case with message stores, there can be multiple message processor implementations. The exact behavior and functionality provided by a processor is determined by its type. Currently WSO2 ESB ships with following two message processor implementations:&lt;/div&gt;&lt;/div&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://docs.wso2.org/display/ESB/Message+Forwarding+Processor"&gt;Message Forwarding Processor&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Retrieves the messages stored in a message store and reliably forwards them to a specified endpoint. This processor attempts to send one message at a time and it does not dequeue a message from the store until it receives a response from the target endpoint. Therefore this processor is ideal for implementing in-order delivery scenarios and guaranteed delivery scenarios.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://docs.wso2.org/display/ESB/Message+Sampling+Processor"&gt;Sampling Processor&lt;/a&gt;&lt;/td&gt;&lt;td&gt;Retrieves the messages stored in a message store and injects them to a given sequence at specified intervals. This processor utilizes the Quartz scheduler framework for periodically processing messages. This can be used to implement message rate throttling scenarios.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Message processors also come with an API using which any custom message processor can be implemented. A message processor is configured as follows in the WSO2 ESB configuration:&lt;/div&gt;&lt;pre&gt;&amp;lt;messageProcessor name="string" class="classname" messageStore="storename"&amp;gt;&lt;br /&gt;  &amp;lt;parameter name="string" &amp;gt; "string" &amp;lt;/parameter&amp;gt;*&lt;br /&gt;&amp;lt;/messageProcessor&amp;gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt; As you can see the message store-message processor architecture and the associated API form a very powerful framework on which a wide range of enterprise messaging scenarios can be implemented. Generally speaking, any integration scenario that involves asynchronous or persistent messaging can be easily realized using these components of WSO2 ESB. We have already received some very positive feedback on this architecture from our users and I believe in the long run this will become one of the most widely used features of our middleware stack. &lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you are interested in leaning more about the "message store-message processor" architecture of WSO2 ESB following resources will provide some useful details:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;Official documentation: &lt;a href="http://docs.wso2.org/display/ESB/Message+Stores"&gt;Message stores&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Official documentation: &lt;a href="http://docs.wso2.org/display/ESB/Message+Processors"&gt;Message processors&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Article: &lt;a href="http://wso2.org/library/articles/2011/10/implementing-store-forward-messaging-patterns-wso2esb-part-1"&gt;Implementing store and forward messaging patterns with WSO2 ESB - part 1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Article: &lt;a href="http://wso2.org/library/articles/2011/12/implementing-store-forward-messaging-patterns-wso2esb-part-2"&gt;Implementing store and forward messaging patterns with WSO2 ESB - part 2&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-6281782051787282187?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/6281782051787282187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=6281782051787282187' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/6281782051787282187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/6281782051787282187'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2012/01/wso2-esb-tips-tricks-08-message-stores.html' title='WSO2 ESB Tips &amp; Tricks 08: Message Stores and Processors'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-gOekANElhuc/Twld1AvFIII/AAAAAAAAAMc/MB_no2gmK_I/s72-c/store-n-fwd.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-7109362129980387771</id><published>2012-01-04T06:02:00.000-08:00</published><updated>2012-01-04T06:46:32.039-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><category scheme='http://www.blogger.com/atom/ns#' term='integration'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><title type='text'>WSO2 ESB 4.0.3 is Out with REST API Support</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a href="http://wso2.org/library/esb"&gt;WSO2 ESB 4.0.3&lt;/a&gt; is now available for &lt;a href="http://wso2.org/downloads/esb"&gt;download&lt;/a&gt;. This contains several bug fixes over WSO2 ESB 4.0.0 and 4.0.2 releases. In addition to that this release comes with the highly anticipated REST API management support. This is a very powerful feature which I believe will be a game changer. I'm planning to do a series of blog posts and articles in the near future describing various use cases and capabilities of this brand new feature. At WSO2 we have already done some public webinars, workshops and development work for actual customers using the REST API support in the new ESB release and the feedback we have received so far has been phenomenal.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;REST support is nothing new for WSO2 ESB. Even though we are primarily based on &lt;a href="http://axis.apache.org/axis2/java/core/"&gt;Apache Axis2&lt;/a&gt;, which is a SOAP engine, we have always had support for exposing RESTful interfaces and mediating RESTful invocations. However REST support in WSO2 stack was always a bit of a black sheep in the family. More often than not REST was perceived as a second class citizen in the WSO2 stack. But the new REST API support we have implemented changes all that. Now REST fans can easily define REST APIs and associated resources on the ESB and combine them with the powerful mediation features provided by the underlying messaging framework. Instead of worrying about mapping REST concepts to SOAP (which was the old way of handling REST calls with proxy services), developers can now configure REST endpoints in the ESB by directly specifying HTTP verbs, URL patterns (servlet styled), &lt;a href="http://tools.ietf.org/html/draft-gregorio-uritemplate-07"&gt;URI templates&lt;/a&gt;, HTTP media types and other related headers. Most REST fans will find themselves at home when working with the new API support in WSO2 ESB.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;That's only a beginning. We are also looking into combining some of our best products together (including ESB of course) to come up with a comprehensive API management solution. This will be a complete platform where developers will be able to develop and expose REST APIs and users can subscribe and consume them.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://3.bp.blogspot.com/-YrC7Wp4aoJo/TwRknRw3MdI/AAAAAAAAAMQ/pbLlOMH-RJg/s1600/1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 151px;" src="http://3.bp.blogspot.com/-YrC7Wp4aoJo/TwRknRw3MdI/AAAAAAAAAMQ/pbLlOMH-RJg/s400/1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5693786454849171922" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;As shown in the above diagram, core API management features such as API key management, user management, security and SLA monitoring are all provided by the solution itself. We are also looking at how to leverage our multi-tenant support to make this solution work seamlessly in the cloud.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you are interested in learning more about the new REST API support in WSO2 stack and our future plans in this area, we are conducting a series of &lt;a href="http://wso2.com/events/workshops/2012-january-usa-creating-restful-apis-workshop/"&gt;workshops&lt;/a&gt; on this very topic in US later this month. I'm sure you will find these sessions both interesting and eye opening. Also stay tuned for my own blog posts and articles on the subject which will give a more in-depth technical insight on the matter.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-7109362129980387771?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/7109362129980387771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=7109362129980387771' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/7109362129980387771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/7109362129980387771'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2012/01/wso2-esb-403-is-out-with-rest-api.html' title='WSO2 ESB 4.0.3 is Out with REST API Support'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-YrC7Wp4aoJo/TwRknRw3MdI/AAAAAAAAAMQ/pbLlOMH-RJg/s72-c/1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-9190184554224739813</id><published>2011-11-13T15:51:00.000-08:00</published><updated>2011-11-13T16:01:51.558-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wso2con'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>ESB: The Swiss Army Knife of SOA</title><content type='html'>&lt;div style="text-align: justify;"&gt;My talk at &lt;a href="http://wso2con.com"&gt;WSO2Con 2011&lt;/a&gt; is now available on &lt;a href="http://www.youtube.com/watch?v=gywzCsQJL6g"&gt;YouTube&lt;/a&gt;. There I discussed why an ESB is essential for SOA, what kind of problems it can solve and what it is not. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;iframe width="459" height="344" src="http://www.youtube.com/embed/gywzCsQJL6g?fs=1" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-9190184554224739813?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/9190184554224739813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=9190184554224739813' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/9190184554224739813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/9190184554224739813'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2011/11/esb-swiss-army-knife-of-soa.html' title='ESB: The Swiss Army Knife of SOA'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/gywzCsQJL6g/default.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-3955473909744991516</id><published>2011-10-22T22:38:00.001-07:00</published><updated>2011-10-22T23:02:33.356-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='failover'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='jms'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><title type='text'>JMS Proxy Services with Fail-Over Support</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a href="http://rajikak.blogspot.com/"&gt;Rajika&lt;/a&gt; has written a very comprehensive article about &lt;a href="http://wso2.org/library/articles/2011/10/wso2-esb-example-jms-failover"&gt;setting up WSO2 ESB with JMS in a fail-over scenario&lt;/a&gt;. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;The concept of &lt;a href="http://docs.wso2.org/display/ESB/Failover+Endpoint"&gt;fail-over endpoints&lt;/a&gt; is integral to &lt;a href="http://wso2.org/library/esb"&gt;WSO2 ESB&lt;/a&gt;. The user can define a fail-over endpoint in the ESB which in turns consists of two or more child endpoints. ESB will select one of the child endpoints to be the primary endpoint and will keep forwarding all messages to this primary endpoint. If the ESB detects some error while communicating with the primary endpoint, it will automatically fail-over to one of the available backup endpoints. User can also configure the endpoint error codes upon which to trigger a fail-over, endpoint suspend durations and timeout durations. However this is not what Rajika is talking about in his article. His article is about setting up a JMS proxy service with fail-over support in the ESB .&lt;/div&gt;&lt;div style="text-align: justify;"&gt;For an example imagine a situation where you have setup a proxy service to receive messages from a JMS queue. The ESB proxy service polls messages out of the queue and forwards them to a backend application for further processing. Now what if the ESB instance which hosts the above mentioned proxy service happens to fail (say due to a hardware failure). Actually in this case there's both good news and bad news. Good news is that no messages will get lost due to the persistent behavior of JMS messaging. If some messages were in flight within the ESB when the failure occurred those messages might get lost. But even that can be avoided by using something like JTA. The bad news however is that the backend application will not receive further requests to be processed. So as far as your overall system is concerned, your applications and services will stay idle while messages keep piling up on the JMS queue. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;Rajika discusses a possible architecture to avoid such system downtime by having a backup proxy service (ideally deployed in a separate ESB instance) which listens on the same JMS queue. The backup proxy will be disabled by default to prevent contention between the two proxy services. His architecture also utilizes a scheduled task deployed on the backup ESB which sends periodic heartbeats to the other ESB node. If the backup ESB detects that the primary ESB instance is not responding, it will activate the backup proxy service which will start polling for JMS messages and resume operations in the system. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;This is actually fairly simple to implement in WSO2 ESB and can be even further customized to suit the exact enterprise requirements. All the source code and relevant configurations are provided in the article itself. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-3955473909744991516?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/3955473909744991516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=3955473909744991516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/3955473909744991516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/3955473909744991516'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2011/10/jms-proxy-services-with-fail-over.html' title='JMS Proxy Services with Fail-Over Support'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-2019464236947794137</id><published>2011-10-18T09:47:00.000-07:00</published><updated>2011-10-18T09:57:15.317-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='ws-discovery'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>Rediscover SOA with WSO2 Carbon and WS-Discovery</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a href="http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01"&gt;WS-Discovery&lt;/a&gt; is a standard protocol for discovering services and endpoints in an SOA based environment. Using WS-Discovery, servers can publish service metadata to a centralized repository known as the discovery proxy. Clients and other interested parties can query the discovery proxy to find a required service or an endpoint. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://wso2.org/library/carbon"&gt;WSO2 Carbon&lt;/a&gt; platform has exceptional support for WS-Discovery. Service hosting products like &lt;a href="http://wso2.org/library/application-server"&gt;WSO2 Application Server&lt;/a&gt; can publish their services to a user defined discovery proxy. &lt;a href="http://wso2.org/library/governance-registry"&gt;WSO2 Governance Registry&lt;/a&gt; can be used as this discovery proxy and products like &lt;a href="http://wso2.org/library/esb"&gt;WSO2 ESB&lt;/a&gt; can query a discovery proxy to locate backend service endpoints.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I recently wrote an &lt;a href="http://wso2.org/library/articles/2011/08/rediscover-soa-wso2-carbon-wsdiscovery"&gt;article&lt;/a&gt; explaining how WS-Discovery is supported in the Carbon platform. The article starts by explaining the basics of WS-Discovery and then describes how to build a complete practical solution based on the discovery protocol. The sample solution described in the article, an inventory management system for Trader Paul's department store, uses 4 WSO2 products. Almost all the core business logic of the solution resides in WSO2 Application Server and &lt;a href="http://wso2.org/library/dss"&gt;WSO2 Data Services Server&lt;/a&gt;. The web application which provides the UI layer of the solution uses WS-Discovery to dynamically discover the business services and data services. WSO2 Governance Registry acts as the discovery proxy where all the service metadata are stored. The solution also uses WSO2 ESB to expose some of the core services to the public through a secured channel. The article describes how to use the discovery support in ESB to create these proxy services. Further it describes an advanced functionality of the ESB (discovery mediation extensions), using which 100% dynamic proxy services can be created. These dynamic proxy services use the WS-Discovery protocol to discover the backend service endpoints at runtime.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This &lt;a href="http://wso2.org/library/articles/2011/08/rediscover-soa-wso2-carbon-wsdiscovery"&gt;article&lt;/a&gt; shows the real power of the Carbon framework and what we can achieve with it when the appropriate components/products are combined into a single distributed solution. I certainly enjoyed a lot putting up all the samples and writing content for this article. I hope you will get a similar feeling reading it. All the code and configurations used for the samples are also provided so you can run the Trader Paul's Inventory Management System on your own and try it out. I'm currently working on porting this sample to the &lt;a href="http://stratoslive.wso2.com"&gt;StratosLive&lt;/a&gt; environment. So it will be soon available on the cloud as well. If you are just looking to learn about WS-Discovery, or just trying to understand how to build solutions with WSO2 products, this article would be a great starting point.  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-2019464236947794137?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/2019464236947794137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=2019464236947794137' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/2019464236947794137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/2019464236947794137'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2011/10/rediscover-soa-with-wso2-carbon-and-ws.html' title='Rediscover SOA with WSO2 Carbon and WS-Discovery'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-2226042035179714535</id><published>2011-10-16T02:22:00.000-07:00</published><updated>2011-10-16T02:34:22.645-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='documentation'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>WSO2 ESB Documentation Revamped</title><content type='html'>&lt;div style="text-align: justify;"&gt;No software application is complete without documentation. According to &lt;a href="http://www.software-engin.com/"&gt;Ian Sommerville&lt;/a&gt; (author of the well known textbook on &lt;a href="http://www.amazon.com/Software-Engineering-9th-Ian-Sommerville/dp/0137035152/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1318757120&amp;amp;sr=1-1"&gt;Software Engineering&lt;/a&gt;), software is not just the computer programs, but also all associated documentation and configuration data that is needed to make the programs operate correctly. According to this definition documentation is not only a key component of software, but it is one of the factors which differentiates software from computer programs. But unfortunately many open source projects are getting hammered for their poorly structured and less comprehensive documentation. &lt;a href="http://wso2.org/library/esb"&gt;WSO2 ESB&lt;/a&gt; documentation also used to suffer from a number of such strictures which made it look slightly obfuscated and disorganized to the reader. While the samples and other configuration related documentation was fairly well organized, the overall documentation offering had several gaps in terms of content, user friendliness and ability to search.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;However I'm pleased to announce that those days are now behind us. WSO2 ESB now has a &lt;a href="http://docs.wso2.org/display/ESB"&gt;brand new documentation package&lt;/a&gt; with a whole lot of new content, an exquisite look and feel and a ton of new features. You will find that almost all the old content has been rewritten, reformatted and reshaped to make it more comprehensive and easier to follow. In contrast to the &lt;a href="http://wso2.org/project/esb/java/4.0.0/docs/index.html"&gt;old documentation&lt;/a&gt;, the new offering contains many diagrams, sample configurations and much easier navigation capabilities between different sections. Samples are no longer a separate section in the documentation but they are baked into the relative explanatory sections in the documentation. This way the reader can seamlessly move between content and relevant samples. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;Perhaps the most significant feature in the new documentation package is its ability to search for content. All the content items have been properly labeled and indexed so the reader can find out what he's looking for by doing a search on the documentation site. Try out following search links to see for yourself.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://docs.wso2.org/dosearchsite.action?queryString=ancestorIds:1179863+AND+new+in+version+4.0&amp;amp;where=ESB&amp;amp;type=&amp;amp;lastModified=&amp;amp;contributor=&amp;amp;contributorUsername="&gt;http://docs.wso2.org/dosearchsite.action?queryString=ancestorIds:1179863+AND+new+in+version+4.0&amp;amp;where=ESB&amp;amp;type=&amp;amp;lastModified=&amp;amp;contributor=&amp;amp;contributorUsername=&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://docs.wso2.org/dosearchsite.action?searchQuery.queryString=ancestorIds:1179863+AND+eventing&amp;amp;searchQuery.spaceKey=ESB"&gt;http://docs.wso2.org/dosearchsite.action?searchQuery.queryString=ancestorIds:1179863+AND+eventing&amp;amp;searchQuery.spaceKey=ESB&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;As of now you will find documentation related to WSO2 ESB 3.0.1 and WSO2 ESB 4.0.0 in the new documentation site. Please note that this is still very much an ongoing effort. We are continuously working on making our documentation even more comprehensive and easier to follow. Feel free to help us out by pointing out mistakes, limitations and better yet providing new content that we can include in our documentation offering.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-2226042035179714535?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/2226042035179714535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=2226042035179714535' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/2226042035179714535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/2226042035179714535'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2011/10/wso2-esb-documentation-revamped.html' title='WSO2 ESB Documentation Revamped'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-139286985924031737</id><published>2011-10-15T08:26:00.000-07:00</published><updated>2011-10-15T08:55:50.656-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wso2con'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>WSO2: The Mission, Vision and the Future</title><content type='html'>&lt;div style="text-align: justify;"&gt;That was without a doubt a perfect week. I'm of course  talking about the &lt;a href="http://wso2con.com/"&gt;WSO2Con 2011&lt;/a&gt; which was held last month at Colombo, Sri Lanka. We are still trying to cope up with the continuous flow of complements, well wishes, congratulations and thank you notes. There's no doubt in my mind that it was the most elegant and most successful technical event Sri Lanka (and perhaps even Asia) has ever witnessed. We had over 20 technical presentations conducted by people from various countries and organizations. We had participants from all corners of the world; USA, UK, Russia, India, China, New Zealand, Mexico...you name it. If you are doing anything related to web services or SOA that was the place to be. (If you missed it this year, start planning for next year right now)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The &lt;a href="http://wso2.org/library/wso2con2011/keynote-wso2-disrupting-the-middleware-industry/"&gt;opening keynote of WSO2Con&lt;/a&gt; delivered by &lt;a href="http://sanjiva.weerawarana.org/"&gt;Dr. Sanjiva Weerawarana&lt;/a&gt; is now available on-line. This speech is about &lt;a href="http://wso2.com"&gt;WSO2&lt;/a&gt;, WSO2 history and WSO2 vision. It's about what we have achieved, how we operate and what we intend to conquer in the years to come.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Within just a matter of 6 years, WSO2 has managed to develop a comprehensive &lt;a href="http://wso2.com/products/carbon/"&gt;SOA middleware platform&lt;/a&gt; which consists of around 15 products and a very powerful &lt;a href="http://wso2.com/cloud/stratos/"&gt;cloud platform&lt;/a&gt;. WSO2 products are used by some of the &lt;a href="http://wso2.com/casestudies/"&gt;largest organizations&lt;/a&gt; in the world to handle billions of business transactions. WSO2 offers the only complete &lt;a href="http://stratoslive.wso2.com"&gt;SOA PaaS in the cloud&lt;/a&gt; which is capable of hosting web services, web applications, data services, mashups, business processes, gadgets, integration flows and more. And WSO2 has managed to do all this while adhering to true open source principles and open standards. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;This speech is about these great achievements, what motivated us to do what we do and how we are going to scale the game up in the future.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-139286985924031737?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/139286985924031737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=139286985924031737' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/139286985924031737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/139286985924031737'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2011/10/wso2-mission-vision-and-future.html' title='WSO2: The Mission, Vision and the Future'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-3742709955268661665</id><published>2011-09-12T08:44:00.000-07:00</published><updated>2011-09-12T08:49:16.337-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>SOA &amp; Business: Thoughts from a Pro</title><content type='html'>&lt;div style="text-align: justify;"&gt;Most developers and architects today understand the fundamentals of SOA. SOA concepts and related technologies such as WS-* have been around for several years now and they are not exactly the new kids in town. But it's surprising to see that many business organizations are still not harnessing the true power and potential of SOA. SOA can help make a business more agile and flexible to change while reducing lot of development and maintenance overheads. It can also address many IT management problems by implanting proper SOA governance practices and processes within an organization. So then why many organizations have yet failed to realize these goals with SOA? &lt;/div&gt;&lt;div style="text-align: justify;"&gt;While many companies have been struggling to implement proper SOA, &lt;a href="http://ebay.com"&gt;eBay&lt;/a&gt;, the world's largest on-line market place, has done wonders with it. Most of eBay's IT infrastructure is based on SOA principles. They have also developed a fantastic SOA platform called &lt;a href="https://www.ebayopensource.org/index.php/Turmeric/HomePage"&gt;eBay Turmeric&lt;/a&gt;, which they open sourced a few months ago (this framework uses &lt;a href="http://wso2.com/products/governance-registry/"&gt;WSO2 Governance Registry&lt;/a&gt; inside). Sastri Malladi, who is a distinguished architect at eBay has been a driving force behind these SOA adoption efforts. In a couple of days time he's going to deliver a keynote speech titled "Service Orientation - Why is it good for business?" at &lt;a href="http://wso2con.com"&gt;WSO2Con&lt;/a&gt;. If you are wondering why business organizations should consider SOA or why they are failing to implement proper SOA, this is the session to attend. I'm sure it's going to be a very exciting session.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-3742709955268661665?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/3742709955268661665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=3742709955268661665' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/3742709955268661665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/3742709955268661665'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2011/09/soa-business-thoughts-from-pro.html' title='SOA &amp; Business: Thoughts from a Pro'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-5812728217346835682</id><published>2011-09-10T03:03:00.000-07:00</published><updated>2011-09-10T03:07:20.607-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>SOA &amp; Security: Keeping the Evil Away</title><content type='html'>&lt;div style="text-align: justify;"&gt;SOA is about opening up. Instead of writing tightly coupled code, you implement your business logic and data access logic as reusable services which can be accessed over a network. Applications, clients and other stakeholders consume these services in varying manners to interact with your business. But more data and business logic you open up, more insecure and vulnerable you organization becomes to various types of attacks. Therefore you need to think about the security aspects of your SOA deployment right from the beginning. Security should be an integrated part of your solution and not a patched up layer that lives elsewhere. We all know what happens to systems with poorly designed security aspects. Need I remind you the well known case of &lt;a href="http://en.wikipedia.org/wiki/United_States_diplomatic_cables_leak"&gt;Cablegate&lt;/a&gt;?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Fortunately for developers and architects, there are tons of security mechanisms and technologies out there. However selecting the right set of security technologies is usually a quite cumbersome task. You need to carefully weigh in many factors including level of security required, performance, hardware availability and user experience. You should also take into account the strengths and weaknesses of each security mechanism before deploying any of them in your organization.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://blog.facilelogin.com/"&gt;Prabath Siriwardena&lt;/a&gt;, one of our security Gurus, is preparing to deliver a speech titled “Security in Practice” next week at &lt;a href="http://wso2con.com"&gt;WSO2Con&lt;/a&gt;. He will be explaining some of the above mentioned challenges associated with SOA security and how to overcome them using widely accepted security technologies such as WS-Security, WS-Trust, SAML, XACML, OpenID and OAuth. Prabath will discuss each of these technologies in detail, while exploring the pros and cons of each approach. If you are looking to develop a system based on SOA or just looking around to learn the security best practices in the industry, this is the session to attend. So don’t miss this opportunity of a lifetime.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-5812728217346835682?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/5812728217346835682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=5812728217346835682' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/5812728217346835682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/5812728217346835682'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2011/09/soa-security-keeping-evil-away.html' title='SOA &amp; Security: Keeping the Evil Away'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-1933031500975476445</id><published>2011-09-08T22:44:00.001-07:00</published><updated>2011-09-08T23:12:09.507-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>SOA &amp; ESB: Food for Thought</title><content type='html'>&lt;div style="text-align: justify;"&gt;With the immense popularity of Web Services and SOA, the term "Enterprise Service Bus" has become a well known technical buzz word. Many people consider Enterprise Service Bus (ESB) to be a magic wand by which any problem in enterprise integration and SOA can be solved at a whim. &lt;span style="font-weight:bold;"&gt;But what is the real technical definition of ESB? What are the problems it's supposed to solve? What are the fundamental services and facilities provided by an ESB? What are its limitations and what are the problems it's not supposed to solve?&lt;/span&gt; Many people don't really know the answers to these important questions and end up using the wrong tool to solve the wrong problem. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;Some people consider ESB as a shortcut to implementing SOA. And why not? Most ESB solutions out their (including our own WSO2 ESB) provide excellent support for SOAP, WSDL and a plethora of other WS-* standards. &lt;b&gt;But does adding an ESB into a solution architecture really bring any SOA aspects into it? On the other hand is it possible to implement a SOA without using an ESB?&lt;/b&gt; Food for thought...&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now don't get me wrong. ESB is a fantastic piece of technology. The number of problems it can solve and the number of use cases it can support is mind boggling. Having worked with a number of customers in the past, I've learnt that regardless of the application of SOA principles, it's almost impossible to implement a useful integration solution without an ESB. However as developers and architects we must have a good understanding of what an ESB is and what it is capable of so we can put the ESB technology to use in a more effective manner. Knowing the answers to above questions will help us make better choices when planning out an integration project and selecting middleware for a solution implementation. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;I'm going to make an attempt at answering some of the above mentioned questions in my &lt;a href="http://wso2con.com"&gt;WSO2Con&lt;/a&gt; talk scheduled for next Tuesday. It would be interesting to listen to the feedback other developers and architects in the audience have to offer regarding these all important issues. So if you're keen on learning the fundamentals of enterprise integration and ESB feel free to drop in to my talk titled "ESB: The Swiss Army Knife of SOA". If you're not interested in this particular topic, please do join us at WSO2Con anyway. We have &lt;a href="http://wso2.com/events/wso2con-2011-colombo/speakers/"&gt;20+ other professionals&lt;/a&gt; lined up to deliver some amazing tech talks. I'm sure you will find it interesting and useful.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-1933031500975476445?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/1933031500975476445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=1933031500975476445' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/1933031500975476445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/1933031500975476445'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2011/09/soa-esb-food-for-thought.html' title='SOA &amp; ESB: Food for Thought'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-2442005295089320519</id><published>2011-09-07T01:55:00.000-07:00</published><updated>2011-09-08T22:43:49.476-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>WSO2Con 2011... An Event Not to Miss</title><content type='html'>&lt;div style="text-align: justify;"&gt;WSO2Con 2011 is happening next week at Colombo. It's going to be a parade of tech talks conducted by 20+ brilliant speakers from all around the world. WSO2 also has plenty of tutorials, hands-on technical sessions and entertainment items planned for the attendees. This is definitely not an event to miss.&lt;/div&gt;&lt;br /&gt;&lt;iframe width="560" height="345" src="http://www.youtube.com/embed/PeQOh7Bgdr8" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-2442005295089320519?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/2442005295089320519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=2442005295089320519' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/2442005295089320519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/2442005295089320519'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2011/09/wso2con-2011-event-not-to-miss.html' title='WSO2Con 2011... An Event Not to Miss'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/PeQOh7Bgdr8/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-5952262974479689918</id><published>2011-07-24T09:00:00.000-07:00</published><updated>2011-07-24T09:09:48.743-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='movie'/><title type='text'>No Business Like Show Business</title><content type='html'>&lt;div&gt;Some highlights from my visit to the &lt;a href="http://www.hollywoodwaxmuseum.com/"&gt;Wax Museum&lt;/a&gt; at Hollywood, LA....&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/-T84oU9wwF2Y/TixCu10HiSI/AAAAAAAAALc/WFKWOxNFfTk/s1600/1.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://1.bp.blogspot.com/-T84oU9wwF2Y/TixCu10HiSI/AAAAAAAAALc/WFKWOxNFfTk/s400/1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5632950606420740386" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-fN2rwaHeJjE/TixCugpvFaI/AAAAAAAAALU/3xJ6F089e5g/s1600/4.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://4.bp.blogspot.com/-fN2rwaHeJjE/TixCugpvFaI/AAAAAAAAALU/3xJ6F089e5g/s400/4.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5632950600740050338" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/--L559fVcEpE/TixCt2kBniI/AAAAAAAAALM/Opjo2_tZkxw/s1600/5.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://3.bp.blogspot.com/--L559fVcEpE/TixCt2kBniI/AAAAAAAAALM/Opjo2_tZkxw/s400/5.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5632950589441809954" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-jNtlCSwINvM/TixCt_OfCvI/AAAAAAAAALE/AdtVDp_JzJY/s1600/3.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/-jNtlCSwINvM/TixCt_OfCvI/AAAAAAAAALE/AdtVDp_JzJY/s400/3.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5632950591767382770" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-zZkRdfCuZ9Y/TixCtlABDUI/AAAAAAAAAK8/5h-5cm4IEuI/s1600/2.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/-zZkRdfCuZ9Y/TixCtlABDUI/AAAAAAAAAK8/5h-5cm4IEuI/s400/2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5632950584727375170" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-5952262974479689918?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/5952262974479689918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=5952262974479689918' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/5952262974479689918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/5952262974479689918'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2011/07/no-business-like-show-business.html' title='No Business Like Show Business'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-T84oU9wwF2Y/TixCu10HiSI/AAAAAAAAALc/WFKWOxNFfTk/s72-c/1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-1036855791729179113</id><published>2011-06-20T10:18:00.001-07:00</published><updated>2011-06-20T10:45:12.328-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>The Fantastic 4</title><content type='html'>&lt;div style="text-align: justify;"&gt;As usual I'm late with this, but better later than never :)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;After almost an year worth of planning, developing, bug fixing and testing, &lt;a href="http://wso2.com/products/enterprise-service-bus/"&gt;WSO2 ESB&lt;/a&gt; 4.0 is finally out. This is the first WSO2 ESB release for year 2011 and follows the 3.0.1 release which went out in September 2010. WSO2 ESB 4.0 comes with an array of new features targeting enterprise users:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;Message stores and processors (for implementing advanced QoS levels such as in-order delivery and exactly once delivery)&lt;/li&gt;&lt;li&gt;Concept of functions for the ESB configuration language (define sequences and endpoints as parameterized reusable entities)&lt;/li&gt;&lt;li&gt;Deployment synchronizer (easily synchronize clusters of ESB nodes via the registry)&lt;/li&gt;&lt;li&gt;Built-in &lt;a href="http://qpid.apache.org/"&gt;Qpid&lt;/a&gt; broker (can be used as a JMS provider or an event broker for pub-sub messaging)&lt;/li&gt;&lt;li&gt;LDAP based user store powered by &lt;a href="http://directory.apache.org/"&gt;Apache DS&lt;/a&gt;&lt;/li&gt;&lt;li&gt;HTTP relay transport (a new non-blocking HTTP transport that supports pure streaming)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In addition you will find the following new mediators in this release:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;URL rewrite mediator (rewrite and modify URL strings)&lt;/li&gt;&lt;li&gt;Event mediator (fire events to predefined topics)&lt;/li&gt;&lt;li&gt;Conditional router mediator (implement complex routing scenarios and rules easily)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Apart from these improvements, our UI gurus have given a complete make over to the ESB management console with collapsible menus, improved input validation, and new styling. You will also find that many of the recurring bugs in the 3.x series have been fixed in this latest release.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you are looking for a high performance, user friendly solution for enterprise integration, then WSO2 ESB is for you. It's completely free and open source under the &lt;a href="http://www.apache.org/licenses/LICENSE-2.0.html"&gt;ASL 2.0&lt;/a&gt;. Download today and let us know how it goes. You can get in touch with us over &lt;a href="http://wso2.org/mail"&gt;mail&lt;/a&gt;, &lt;a href="http://wso2.org/forum/187"&gt;forums&lt;/a&gt; and &lt;a href="http://wso2.org/jira"&gt;issue tracker&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-1036855791729179113?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/1036855791729179113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=1036855791729179113' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/1036855791729179113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/1036855791729179113'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2011/06/fantastic-4.html' title='The Fantastic 4'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-986875765398090098</id><published>2011-06-10T22:46:00.000-07:00</published><updated>2011-06-10T23:03:15.667-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='quartz'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='tasks'/><title type='text'>WSO2 ESB Tips &amp; Tricks 07: Cron Legacy</title><content type='html'>&lt;div style="text-align: justify;"&gt;SOA architects and system integrators often come across situations where they want to schedule a particular task to be executed periodically. It could be a task which polls a message queue or a database at regular intervals to see whether any new data has been received. It could be a task which invokes a web service to retrieve a live feed or to check the status of an external system. Or it could be a task which performs regular house keeping activities such as cleaning up log files, updating configuration files and obtaining data backups. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://wso2.com/products/enterprise-service-bus/"&gt;WSO2 ESB&lt;/a&gt; provides a simple but powerful framework based on &lt;a href="http://www.quartz-scheduler.org/"&gt;Quartz&lt;/a&gt; for scheduling and managing periodic tasks. The user can program tasks using Java and deploy them to the ESB as jar files. Such custom developed tasks must implement the &lt;a href="http://synapse.apache.org/apidocs/org/apache/synapse/task/Task.html"&gt;Task&lt;/a&gt; interface of &lt;a href="http://synapse.apache.org"&gt;Apache Synapse&lt;/a&gt; which consists of a single method named execute(). Within this method user can implement his/her business logic which will then get executed periodically by the ESB. The compiled jar files containing the task implementation classes should be placed in the repository/components/lib directory of the ESB. These jar files will get converted into OSGi bundles at server startup and get deployed into the ESB runtime.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;When it comes to &lt;a href="http://wso2.org/project/esb/java/3.0.1/docs/configuration_language.html#task"&gt;scheduling tasks&lt;/a&gt;, the user has two options. The user can configure a simple trigger by simply specifying the number of times the task should be executed along with the period between successive runs. The following example shows how the task named foo has been scheduled to be executed every 5 seconds for 1000 times. Here the task implementation class is named org.wso2.testing.tasks.FooTask (to keep the task running until the server is shutdown, just get rid of the count attribute).&lt;/div&gt;&lt;pre&gt;&amp;lt;task class="org.wso2.testing.tasks.FooTask" name="foo"&amp;gt;&lt;br /&gt; &amp;lt;trigger interval="5" count="1000"/&amp;gt;&lt;br /&gt;&amp;lt;/task&amp;gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;Alternatively user can configure tasks using the well known ‘&lt;a href="http://en.wikipedia.org/wiki/Cron"&gt;Cron&lt;/a&gt;’ syntax. This way it is possible to specify more complex timing requirements. The following example shows how the task foo has been scheduled to be executed every Friday at 5pm. (To learn more about Cron syntax refer &lt;a href="http://www.quartz-scheduler.org/docs/tutorials/crontrigger.html"&gt;this tutorial&lt;/a&gt;)&lt;/div&gt;&lt;pre&gt;&amp;lt;task class="org.wso2.testing.tasks.FooTask" name="foo"&amp;gt;&lt;br /&gt; &amp;lt;trigger cron="0 0 17 ? ? FRI"/&amp;gt;&lt;br /&gt;&amp;lt;/task&amp;gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;WSO2 ESB ships with a sample task implementation class named MessageInjector. This can be used to inject a message into the service bus periodically. Injected messages will be handled by the ‘main’ sequence so they can be routed and mediated as if they were received from a remote client. The same technique can be extended to implement a scheduled task which periodically invokes a web service. &lt;a href="http://wso2.org/project/esb/java/3.0.1/docs/samples/task_samples.html#Sample300"&gt;Sample 300&lt;/a&gt; of WSO2 ESB documentation shows how to put the MessageInjector task to use. &lt;/div&gt;&lt;pre&gt;&amp;lt;task class="org.apache.synapse.startup.tasks.MessageInjector" name="CheckPrice"&amp;gt;&lt;br /&gt; &amp;lt;property name="to" value="http://localhost:9000/services/SimpleStockQuoteService"/&amp;gt;&lt;br /&gt; &amp;lt;property name="soapAction" value="urn:getQuote"/&amp;gt;&lt;br /&gt; &amp;lt;property name="message"&amp;gt;&lt;br /&gt;               &amp;lt;m0:getQuote xmlns:m0="http://services.samples"&amp;gt;&lt;br /&gt;                   &amp;lt;m0:request&amp;gt;&lt;br /&gt;                       &amp;lt;m0:symbol&amp;gt;IBM&amp;lt;/m0:symbol&amp;gt;&lt;br /&gt;                   &amp;lt;/m0:request&amp;gt;&lt;br /&gt;               &amp;lt;/m0:getQuote&amp;gt;&lt;br /&gt;       &amp;lt;/property&amp;gt;&lt;br /&gt;       &amp;lt;trigger interval="5"/&amp;gt;&lt;br /&gt;&amp;lt;/task&amp;gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;Note how a set of properties are passed into the task implementation class from the XML configuration. This can be done with user developed custom tasks as well. Let’s assume the task implementation class has a private attribute named ‘studentName’. If you want to pass a value for this attribute from the task configuration you should implement a getter method and a setter method for the above attribute following the standard Java bean conventions (ie getStudentName and setStudentName). Then you can have the following property definition under the task configuration to initialize the studentName attribute. &lt;/div&gt;&lt;pre&gt;&amp;lt;property name="studentName" value="Hiranya"/&amp;gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;This technique can be used to initialize any primitive type attribute of the task implementation class.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;WSO2 ESB scheduled tasks also support a concept called ‘pinned servers’. This comes in handy when deploying scheduled tasks in a cluster of ESB servers. In such an environment it might be required that the task get deployed only on some of the nodes and not all the nodes. But since nodes in a cluster usually share all the configuration files this becomes little tricky. The solution is to specify the pinned servers attribute in the task configuration. With that the task will get deployed only on the specified set of servers. Basically this feature allows you to pin a scheduled task to a subset of the nodes in a cluster.&lt;/div&gt;&lt;pre&gt;&amp;lt;task class="org.wso2.testing.tasks.FooTask" name="foo" pinnedServers="host1.wso2.org, host2.wso2.org"&amp;gt;&lt;br /&gt; &amp;lt;trigger cron="0 0 17 ? ? FRI"/&amp;gt;&lt;br /&gt;&amp;lt;/task&amp;gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;In the above example the task will get deployed only if the server hostnames match the ones specified in the pinnedServers attribute.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;WSO2 ESB management console can be used to create and manage scheduled tasks. The ESB artifact uploader UI (added in ESB 3.x) can be used to upload jar files containing tasks to the ESB without restarting the server. Unfortunately current releases of WSO2 ESB do not enable the user to temporarily suspend the execution of a task. To do that user must remove the task from the ESB configuration. This limitation will be addressed in a future release.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-986875765398090098?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/986875765398090098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=986875765398090098' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/986875765398090098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/986875765398090098'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2011/06/wso2-esb-tips-tricks-07-cron-legacy.html' title='WSO2 ESB Tips &amp; Tricks 07: Cron Legacy'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-4772196919631772494</id><published>2011-03-20T09:07:00.000-07:00</published><updated>2011-03-20T09:15:55.231-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='alps'/><title type='text'>Best Train Ride Ever</title><content type='html'>&lt;div style="text-align: justify;"&gt;I was in Europe with a colleague, working with some customers and we got the rare opportunity to travel from Switzerland to Austria by train. The initial plan was to take a flight, but my CEO, Dr. Sanjiva Weerawarana suggested that we take the train and enjoy the scenery along the way. Boy oh boy, wasn’t he right about that?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Starting from Zurich, the train runs several hundred kilometers parallel with the Alps, until it turns South at Salzburg to finally cross the magnificent mountain range to reach the city of Graz, our destination. We had to make two connections along the way and the trip took almost 10 hours, but it totally was worth it and we enjoyed every minute of the journey. A couple of days later, we again crossed the Alps by train, this time to get to the city of Vienna.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I just downloaded all the pictures from my camera to the computer and apparently I have taken several hundred photographs along the way. I have a hard time picking the best of them, and therefore I’m just going to upload a few random photographs here…&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-zJFMNj3BdPc/TYYnM5Ujz0I/AAAAAAAAAJc/2WEgHPoW_y8/s1600/4.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/-zJFMNj3BdPc/TYYnM5Ujz0I/AAAAAAAAAJc/2WEgHPoW_y8/s400/4.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5586195490298646338" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-L6LWv0DOLM4/TYYnNLxmu9I/AAAAAAAAAJk/BNvU2SpDE2A/s1600/5.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/-L6LWv0DOLM4/TYYnNLxmu9I/AAAAAAAAAJk/BNvU2SpDE2A/s400/5.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5586195495252310994" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-123s19Qx96Q/TYYnN9yHAEI/AAAAAAAAAJ0/MbabECQ8S1k/s1600/1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/-123s19Qx96Q/TYYnN9yHAEI/AAAAAAAAAJ0/MbabECQ8S1k/s400/1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5586195508676198466" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-OGgBppQ5X1g/TYYnNUtOVnI/AAAAAAAAAJs/S4dT0LGV05A/s1600/2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/-OGgBppQ5X1g/TYYnNUtOVnI/AAAAAAAAAJs/S4dT0LGV05A/s400/2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5586195497649854066" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-_B0JOjgn3ac/TYYnOMM-suI/AAAAAAAAAJ8/OGEVHi3PfGc/s1600/3.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/-_B0JOjgn3ac/TYYnOMM-suI/AAAAAAAAAJ8/OGEVHi3PfGc/s400/3.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5586195512546996962" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-4772196919631772494?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/4772196919631772494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=4772196919631772494' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/4772196919631772494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/4772196919631772494'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2011/03/best-train-ride-ever.html' title='Best Train Ride Ever'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-zJFMNj3BdPc/TYYnM5Ujz0I/AAAAAAAAAJc/2WEgHPoW_y8/s72-c/4.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-6860151185811222143</id><published>2011-02-16T01:49:00.000-08:00</published><updated>2011-02-16T01:53:49.724-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='error handling'/><category scheme='http://www.blogger.com/atom/ns#' term='sequence'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2 esb'/><title type='text'>WSO2 ESB Tips &amp; Tricks 06: Error Handling Semantics</title><content type='html'>&lt;div style="text-align: justify;"&gt;Sequence error handling is one of the most useful yet undervalued features of &lt;a href="http://wso2.com/products/enterprise-service-bus/"&gt;WSO2 ESB&lt;/a&gt;. Sequence error handling brings Java try-catch like semantics into the ESB mediation flow. However, error handling semantics of WSO2 ESB slightly varies, depending on how the sequences are setup in the ESB. This seems to generate lot of confusion around the concept of ESB error handling. For those who find it difficult to understand the error handling capabilities of WSO2 ESB, following guidelines might help:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li style="text-align: justify;"&gt;If a sequence explicitly defines a fault handler using the ‘onError’ attribute, the specified fault handler will be invoked, whenever an error occurs in the sequence.  This is true even if the sequence is invoked by a proxy service.&lt;/li&gt;&lt;li style="text-align: justify;"&gt;If a request arrives through the main sequence and if it happens to fail within a sequence which does not explicitly define a fault handler, the default ‘fault’ sequence will be invoked.&lt;/li&gt;&lt;li style="text-align: justify;"&gt;If a request arrives through a proxy service and if it happens to fail within a sequence which does not explicitly define a fault handler, the fault sequence of the proxy service will be invoked. If the proxy service does not define a fault sequence, then no fault handler will be invoked.&lt;/li&gt;&lt;li style="text-align: justify;"&gt;When there is a fault handler engaged at proxy service level, and another error handler engaged at the sequence level, the sequence level error handler gets invoked in case of an error (as per rule 1). In this case the proxy service fault sequence is ignored.&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;To learn more about WSO2 ESB error handling, please refer the &lt;a href="http://techfeast-hiranya.blogspot.com/2010/04/wso2-esb-tips-tricks-05-error-handling.html"&gt;previous installment&lt;/a&gt; of the tips and tricks series.&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/4206392247746930256-6860151185811222143?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/6860151185811222143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=6860151185811222143' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/6860151185811222143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/6860151185811222143'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2011/02/wso2-esb-tips-tricks-06-error-handling.html' title='WSO2 ESB Tips &amp; Tricks 06: Error Handling Semantics'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-4128947737346127824</id><published>2011-01-23T07:28:00.000-08:00</published><updated>2011-01-23T07:42:20.741-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='NASA'/><title type='text'>Among Stars and Planets</title><content type='html'>&lt;div&gt;From my visit to &lt;a href="http://www.nasa.gov/centers/ames/home/index.html"&gt;NASA Ames Research Center&lt;/a&gt;:&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Agr7CcJVYp8/TTxKDCpCwrI/AAAAAAAAAJI/V9IKvQmg2w0/s1600/DSC00709-1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://1.bp.blogspot.com/_Agr7CcJVYp8/TTxKDCpCwrI/AAAAAAAAAJI/V9IKvQmg2w0/s400/DSC00709-1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5565404655632171698" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Agr7CcJVYp8/TTxKCIJDU7I/AAAAAAAAAJA/YY2vmOAKxyk/s1600/DSC00704-1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://2.bp.blogspot.com/_Agr7CcJVYp8/TTxKCIJDU7I/AAAAAAAAAJA/YY2vmOAKxyk/s400/DSC00704-1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5565404639928734642" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Agr7CcJVYp8/TTxKBbUeCDI/AAAAAAAAAI4/5P2sADtuUH4/s1600/DSC00712-1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_Agr7CcJVYp8/TTxKBbUeCDI/AAAAAAAAAI4/5P2sADtuUH4/s400/DSC00712-1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5565404627897026610" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Agr7CcJVYp8/TTxKATLgCkI/AAAAAAAAAIw/rDfgDsfiU00/s1600/DSC00705-1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_Agr7CcJVYp8/TTxKATLgCkI/AAAAAAAAAIw/rDfgDsfiU00/s400/DSC00705-1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5565404608532056642" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Agr7CcJVYp8/TTxKAI9zbcI/AAAAAAAAAIo/_TKjfdWCFx8/s1600/DSC00702-1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://2.bp.blogspot.com/_Agr7CcJVYp8/TTxKAI9zbcI/AAAAAAAAAIo/_TKjfdWCFx8/s400/DSC00702-1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5565404605790252482" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;It's a great place to revise your old lessons on sun, moon, earth and the other planets. If you ever visit this place, check out the cool 3D visual model of the solar system they have on the giant screen. It is controlled by a Wi-Fi operated joystick. They sometimes let the visitors operate the model for a while. I was among the lucky few :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-4128947737346127824?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/4128947737346127824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=4128947737346127824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/4128947737346127824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/4128947737346127824'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2011/01/among-stars-and-planets.html' title='Among Stars and Planets'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Agr7CcJVYp8/TTxKDCpCwrI/AAAAAAAAAJI/V9IKvQmg2w0/s72-c/DSC00709-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-4892227149883954559</id><published>2011-01-15T07:12:00.000-08:00</published><updated>2011-01-15T09:18:51.158-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Apache Synapse 2.0 Released</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://synapse.apache.org/images/apache-synapse-logo.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 223px; height: 103px;" src="http://synapse.apache.org/images/apache-synapse-logo.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;The &lt;a href="http://synapse.apache.org/"&gt;Apache Synapse&lt;/a&gt; team reached a very important milestone last week. After a long but very busy 2 and half years, we announced the general availability of Apache Synapse version 2.0. The previous release of Synapse was version 1.2 which was released way back in year 2008. The Apache Synapse project has grown a lot in terms of code, features and community over the past 2 years and therefore you will find a horde of new features, improvements, bug fixes and samples in the latest release. Some of the noteworthy new features in this release are:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;New, fine-grained configuration model&lt;/li&gt;&lt;li&gt;Hot deployment and hot update support for configuration artifacts&lt;/li&gt;&lt;li&gt;Priority based mediation support&lt;/li&gt;&lt;li&gt;Comprehensive eventing capabilities with WS-Eventing support&lt;/li&gt;&lt;li&gt;Secure vault for encrypting passwords in configuration files&lt;/li&gt;&lt;li&gt;File locking support in the VFS transport for concurrent polling&lt;/li&gt;&lt;li&gt;URLRewrite mediator for fast and simple URL rewriting&lt;/li&gt;&lt;li&gt;Synapse configuration observer API&lt;/li&gt;&lt;li&gt;Multiple identity support in the HTTPS transport&lt;/li&gt;&lt;li&gt;Enhanced JMX monitoring support for the NHTTP transport&lt;/li&gt;&lt;li&gt;Dead letter channel implementation (experimental)&lt;/li&gt;&lt;li&gt;Synapse XAR Maven plug-in for generating configuration artifacts&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Apache Synapse is a lightweight Enterprise Service Bus (ESB) released under the &lt;a href="http://www.apache.org/licenses/"&gt;Apache Software License&lt;/a&gt;. It is based on the tried and tested &lt;a href="http://axis.apache.org/axis2/java/core/"&gt;Apache Axis2&lt;/a&gt; SOAP engine. It has excellent support for SOAP, REST, POX, JSON and a variety of wire level transports (HTTP/S, JMS, File transport, FIX...). The non-blocking HTTP transport of Synapse enables it to handle very high volumes of HTTP traffic over thousands of concurrent connections.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Apache Synapse also supports many WS-* standards including WS-Security, WS-ReliableMessaging, and WS-Policy. It can be easily linked up with any SOA registry for metadata management and governance purposes. Synapse has a very flexible configuration model built into it, which makes it one of the easiest ESB applications to learn and adopt.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you are involved in any SOA projects or system integration activities, Synapse may have something to offer. So please feel free to grab the binary distro and take it for a spin. Feed back welcome on &lt;a href="http://synapse.apache.org/mail-lists.html"&gt;Synapse user list&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-4892227149883954559?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/4892227149883954559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=4892227149883954559' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/4892227149883954559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/4892227149883954559'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2011/01/apache-synapse-20-released.html' title='Apache Synapse 2.0 Released'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-7088342399917204663</id><published>2011-01-02T04:58:00.000-08:00</published><updated>2011-01-02T05:08:28.819-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fleet week'/><category scheme='http://www.blogger.com/atom/ns#' term='air show'/><title type='text'>From Fleet Week Air Show</title><content type='html'>&lt;div style="text-align: justify;"&gt;Here are some pictures from the &lt;a href="http://www.fleetweek.us/"&gt;Fleet Week&lt;/a&gt; air show held on last October at San Francisco port. The main attraction of the event were the renowned &lt;a href="http://en.wikipedia.org/wiki/Blue_Angels"&gt;Blue Angels&lt;/a&gt;. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;(Sorry about the sloppy pictures. I’m not a pro photographer and taking still pictures of some fighter jets travelling close to the speed of sound is probably not the easiest thing in the world.)&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Agr7CcJVYp8/TSB4DQyCC2I/AAAAAAAAAIg/ODgZgjMvXL4/s1600/DSC00641-1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_Agr7CcJVYp8/TSB4DQyCC2I/AAAAAAAAAIg/ODgZgjMvXL4/s400/DSC00641-1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5557573937614949218" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Agr7CcJVYp8/TSB4C28b-yI/AAAAAAAAAIY/P35qgLm6suM/s1600/DSC00642-1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_Agr7CcJVYp8/TSB4C28b-yI/AAAAAAAAAIY/P35qgLm6suM/s400/DSC00642-1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5557573930679270178" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Agr7CcJVYp8/TSB4C8Xe9xI/AAAAAAAAAIQ/9rD-TXvkrLQ/s1600/DSC00645-1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_Agr7CcJVYp8/TSB4C8Xe9xI/AAAAAAAAAIQ/9rD-TXvkrLQ/s400/DSC00645-1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5557573932134889234" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Agr7CcJVYp8/TSB4CknVKgI/AAAAAAAAAII/vXQ6HCE6Ulo/s1600/DSC00609-1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_Agr7CcJVYp8/TSB4CknVKgI/AAAAAAAAAII/vXQ6HCE6Ulo/s400/DSC00609-1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5557573925758904834" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Agr7CcJVYp8/TSB4CNAQsiI/AAAAAAAAAIA/kR0saSyhSCc/s1600/DSC00599-1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_Agr7CcJVYp8/TSB4CNAQsiI/AAAAAAAAAIA/kR0saSyhSCc/s400/DSC00599-1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5557573919421018658" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-7088342399917204663?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/7088342399917204663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=7088342399917204663' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/7088342399917204663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/7088342399917204663'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2011/01/from-fleet-week-air-show.html' title='From Fleet Week Air Show'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Agr7CcJVYp8/TSB4DQyCC2I/AAAAAAAAAIg/ODgZgjMvXL4/s72-c/DSC00641-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-5223881912228432471</id><published>2010-12-28T01:45:00.000-08:00</published><updated>2010-12-28T02:22:06.485-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='intel'/><category scheme='http://www.blogger.com/atom/ns#' term='museum'/><title type='text'>Exploring the History of the Silicon Chip</title><content type='html'>&lt;div style="text-align: justify;"&gt;A few weeks back I visited the &lt;a href="http://www.intel.com/about/companyinfo/museum/index.htm"&gt;Intel Musuem&lt;/a&gt; along with my colleagues &lt;a href="http://sumedha.blogspot.com/"&gt;Sumedha&lt;/a&gt; and &lt;a href="http://www.nuwanbando.com/"&gt;Nuwan&lt;/a&gt;. The museum is located at Intel’s headquarters in Santa Clara, California- the heart of Silicon Valley. It showcases Intel’s products and processes while giving a deep insight to the history of microprocessors. They exhibit almost all their land mark processor designs from the past, equipment and materials used to manufacture silicon chips and some of Intel’s innovative creations such as ‘Arti’ the talking robot.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Here are some of my favorite pictures from the trip....&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Agr7CcJVYp8/TRm4PXeGYLI/AAAAAAAAAHQ/ui1iEtRtGTg/s1600/DSC00654-1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_Agr7CcJVYp8/TRm4PXeGYLI/AAAAAAAAAHQ/ui1iEtRtGTg/s400/DSC00654-1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5555674189476028594" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Agr7CcJVYp8/TRm4PmJfiRI/AAAAAAAAAHY/cOXRyp6GWXM/s1600/DSC00689-1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://1.bp.blogspot.com/_Agr7CcJVYp8/TRm4PmJfiRI/AAAAAAAAAHY/cOXRyp6GWXM/s400/DSC00689-1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5555674193416128786" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Agr7CcJVYp8/TRm4P1Xuf6I/AAAAAAAAAHg/WdTC-UnN96w/s1600/DSC00659-1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_Agr7CcJVYp8/TRm4P1Xuf6I/AAAAAAAAAHg/WdTC-UnN96w/s400/DSC00659-1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5555674197502361506" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Agr7CcJVYp8/TRm4QL7iZsI/AAAAAAAAAHo/Sa_iv6ePfYI/s1600/DSC00678-1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://2.bp.blogspot.com/_Agr7CcJVYp8/TRm4QL7iZsI/AAAAAAAAAHo/Sa_iv6ePfYI/s400/DSC00678-1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5555674203558143682" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Agr7CcJVYp8/TRm4QRSIHZI/AAAAAAAAAHw/p41mFoKSc-4/s1600/DSC00656-1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://1.bp.blogspot.com/_Agr7CcJVYp8/TRm4QRSIHZI/AAAAAAAAAHw/p41mFoKSc-4/s400/DSC00656-1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5555674204995067282" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Agr7CcJVYp8/TRm5fkD8FaI/AAAAAAAAAH4/ptnWyGdNvMc/s1600/DSC00695-1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_Agr7CcJVYp8/TRm5fkD8FaI/AAAAAAAAAH4/ptnWyGdNvMc/s400/DSC00695-1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5555675567245497762" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-5223881912228432471?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/5223881912228432471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=5223881912228432471' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/5223881912228432471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/5223881912228432471'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2010/12/exploring-history-of-silicon-chip.html' title='Exploring the History of the Silicon Chip'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Agr7CcJVYp8/TRm4PXeGYLI/AAAAAAAAAHQ/ui1iEtRtGTg/s72-c/DSC00654-1.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-2907696309833364310</id><published>2010-12-07T21:41:00.000-08:00</published><updated>2010-12-07T21:46:45.862-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xerces'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Apache Xerces2/J 2.11.0 Released</title><content type='html'>&lt;div style="text-align: justify;"&gt;The Apache Xerces project team is pleased to announce that version 2.11.0 of Apache Xerces-J is now available.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Xerces-J 2.11.0 can be downloaded at: &lt;a href="http://xerces.apache.org/mirrors.cgi"&gt;http://xerces.apache.org/mirrors.cgi&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This release expands on Xerces' experimental support for XML Schema 1.1 (see Xerces-J-bin.2.11.0-xml-schema-1.1-beta.zip) by providing implementations for the simplified complex type restriction rules (also known as subsumption), xs:override and a few other XML Schema 1.1 features. Xerces-J 2.11.0 also introduces experimental support for XML Schema Component Designators (SCD). It fixes several bugs which were present in Xerces-J 2.10.0 and also includes a few other minor enhancements.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Specifically, the changes introduced in this release are:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;Implemented XML Schema 1.1's simplified complex type restriction rules (also known as subsumption)&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Added support for XML Schema 1.1's overriding component definitions (&amp;lt;xs:override&amp;gt;)&lt;/xs:override&gt;&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Added experimental support for a parser and evaluator for XML Schema Component Designators (SCD)&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Implemented support for the vc:typeAvailable, vc:typeUnavailable, vc:facetAvailable and vc:facetUnavailable attributes for conditional inclusion processing in XML Schema 1.1 documents&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Implemented support for allowing xs:group as a child of xs:all in XML Schema 1.1 documents&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Made several enhancements to the support for assertions in the XML Schema 1.1 implementation&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Improved the ways in which the XML Schema API exposes values and identity constraint information&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Fixed a bug where XMLSchemaValidator.findSchemaGrammar() was not getting called for substitution groups&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Fixed a bug in the regular expression support which was introduced in the previous release. See JIRA Issue XERCESJ-1456 for details&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Fixed multiple issues with decimal precision in the processing of xs:precisionDecimal value&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Fixed various bugs and made various improvements&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;A complete list of JIRA issues resolved in this release is available here: &lt;a href="http://s.apache.org/pI"&gt;http://s.apache.org/pI&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;For more information please visit: &lt;a href="http://xerces.apache.org/xerces2-j/"&gt;http://xerces.apache.org/xerces2-j/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-2907696309833364310?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/2907696309833364310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=2907696309833364310' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/2907696309833364310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/2907696309833364310'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2010/12/apache-xerces2j-2110-released.html' title='Apache Xerces2/J 2.11.0 Released'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-8629930692128667732</id><published>2010-11-15T11:04:00.000-08:00</published><updated>2010-11-15T11:18:38.561-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='PaaS'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>SOA Meets the Cloud</title><content type='html'>&lt;div style="text-align: justify;"&gt;We just released &lt;a href="http://wso2.com/cloud/stratos/"&gt;WSO2 Stratos v1.0.0&lt;/a&gt;, the SOA PaaS solution based on &lt;a href="http://wso2.com/products/carbon/"&gt;WSO2 Carbon&lt;/a&gt;. Stratos enables you to run WSO2 middleware on a cloud infrastructure in a completely multi tenanted environment. This release brings you following SOA middleware services:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;WSO2 Enterprise Service Bus as a Service&lt;/li&gt;&lt;li style="text-align: justify;"&gt;WSO2 Application Server as a Service&lt;/li&gt;&lt;li style="text-align: justify;"&gt;WSO2 Data as a Service&lt;/li&gt;&lt;li style="text-align: justify;"&gt;WSO2 Governance as a Service&lt;/li&gt;&lt;li style="text-align: justify;"&gt;WSO2 Identity as a Service&lt;/li&gt;&lt;li style="text-align: justify;"&gt;WSO2 Business Activity Monitoring as a Service&lt;/li&gt;&lt;li style="text-align: justify;"&gt;WSO2 Business Processes as a Service&lt;/li&gt;&lt;li style="text-align: justify;"&gt;WSO2 Business Rules as a Service&lt;/li&gt;&lt;li style="text-align: justify;"&gt;WSO2 Mashups as a Service&lt;/li&gt;&lt;li style="text-align: justify;"&gt;WSO2 Gadgets as a Service&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;With Stratos you can deploy webapps, web services, mediation flows, gadgets and business processes on the cloud. Just like all WSO2 products, Stratos is also free and open source. Try out Stratos for free at &lt;a href="http://cloud.wso2.com"&gt;cloud.wso2.com&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-8629930692128667732?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/8629930692128667732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=8629930692128667732' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8629930692128667732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8629930692128667732'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2010/11/soa-meets-cloud.html' title='SOA Meets the Cloud'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-8711101391189732659</id><published>2010-11-11T15:00:00.000-08:00</published><updated>2010-11-11T15:10:08.970-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>ASF Says "It's On"</title><content type='html'>&lt;div style="text-align: justify;"&gt;As most of you know there's an ensuing battle between the Apache Software Foundation (ASF) and Oracle over Java and Apache Harmony. The roots of this conflict go all the way back to the time when Java was mainly driven by Sun Microsystems. However with ASF getting re-elected as a ratified JCP executive committee member, things are starting to take an interesting turn. A couple of days back &lt;a href="https://blogs.apache.org/foundation/entry/statement_by_the_asf_board1"&gt;ASF made a bold statement&lt;/a&gt; indicating that they are going to vote down the upcoming Java SE 7, which Oracle is pushing forward so hard. ASF is also urging other JCP members to back ASF on this. ASF has indicated that they are not afraid to terminate their ties with JCP if needed. This is pretty huge for a group that maintains an overwhelming number of world class Java projects including Tomcat, Maven, Geronimo, Ant and Derby. (I also happen to be a committer for a couple of Java projects at ASF)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;There are currently so many news articles on the web covering this conflict end-to-end. I found the news report from &lt;a href="http://www.theregister.co.uk/2010/11/10/apache_to_quit_jcp/"&gt;The Register&lt;/a&gt; to be quite interesting and amusing at the same time. Here's a little excerpt:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;Oracle was forced to eat crow and congratulate ASF for its near unanimous election back onto the JCP's SE and EE executive committee. It was an election that saw its own nominee - the little-known-outside-Oracle-circles Hologic - soundly rejected by JCP members.&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;Congratulating ASF, Oracle's spokesperson on Java SE, Henrik Ståhl, claimed Oracle still respected ASF and wanted to work with the group. "Our disagreement around TCK licensing does in no way lower our respect for and desire to continue to work with Apache," Ståhl said here.&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;On Tuesday, the ASF told Ståhl and Oracle just exactly where they could shove their "respect" with a statement saying it is walking out of the JCP unless Harmony gets a license.&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;Another interesting news report is available on &lt;a href="http://www.itworld.com/legal/127051/apache-declares-war-oracle-over-java"&gt;IT World&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-8711101391189732659?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/8711101391189732659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=8711101391189732659' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8711101391189732659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8711101391189732659'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2010/11/asf-says-its-on.html' title='ASF Says &quot;It&apos;s On&quot;'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-97724540279815083</id><published>2010-11-04T16:19:00.000-07:00</published><updated>2010-11-04T19:28:32.313-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='performance tuning'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='garbage collection'/><title type='text'>Taming the Java Garbage Collector</title><content type='html'>&lt;div&gt;&lt;div style="text-align: justify;"&gt;Tuning the garbage collection in JVM is one of those things that developers often tend to ignore and overlook. But if done properly, it can save you hundreds of megabytes worth precious memory, without making a significant impact on the application performance. Also GC tuning becomes an absolute necessity in certain applications due to various QoS requirements such as real-time processing, low response time and high throughput. So today I'm going to discuss a little bit about GC in JVM and how to properly tune up GC for best application performance. My discussion is entirely focused on Java 5 and 6, so if you are using an older JVM you are at the wrong place.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Before we jump into the discussion on GC tuning we need to have a basic understanding on the various concepts associated with GC. So here goes...&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;What is garbage collection?&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Garbage collection is the process of finding objects which are no longer reachable from references in the executing code, and reclaiming the memory occupied by such objects. An object which is reachable by at least one reference in the executing code is considered to be 'live'. Objects which cannot be reached by any references are called 'dead' objects. So the process of garbage collection can be also defined as the process of finding dead objects in the memory and reclaiming the memory used by them. In general, a garbage collector is responsible for 3 tasks:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li style="text-align: justify;"&gt;Allocating memory for new objects&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Ensuring that any referenced objects (live objects) remain in memory&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Recovering memory used by objects that are no longer reachable (dead objects)&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The following characteristics govern the notion of a 'good' garbage collector:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;Safe (never reclaims a live object)&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Comprehensive (a dead object does not remain unclaimed for more than a small number of collection cycles)&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Efficient (does not introduce too long pauses)&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Defragmentation (does not leave the memory fragments all over the place)&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Scalable (allocation and deallocation scales well in multithreaded systems)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;It is not possible and necessary for a garbage collector to display all these desirable characteristics at once. Usually each garbage collector has its own strengths and weaknesses.&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;GC Classification&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Garbage collectors can be classified based on a number of factors.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Serial vs Parallel:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In serial collection only one collection occurs at a time (even with multiple CPU cores). In parallel collection, the task of collection is divided into subtasks and executed in parallel, possibly on multiple CPUs. This speeds up collection but is more complex and leads to potential fragmentation.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Stop-the-world vs Concurrent:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Stop-the-world collectors suspend the entire application during collections. Concurrent collectors run concurrently with the application (there could be occasional stop-the-world collections). With concurrent collection, freeze times are shorter but it has to operate on the objects which are being used by the running application. This adds more overhead on the collector and requires more CPU power and heap.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Compacting vs Non-compacting vs Copying:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Compacting collectors arrange all the live objects together in contiguous memory blocks. Then the remaining space can be considered free. This way the collection is slow but the allocations are faster. Non-compacting collectors free dead objects in-place. This leads to faster collections but also a recipe for fragmentation. Copying collectors copy (in contrast to moving) all the live objects to a different area in the memory. Then the source area can be considered free. This leads to slower and expensive collections but provides better allocation performance.&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Generational Collection&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Modern garbage collectors follow a scheme known as 'generational collection'. With this approach, the heap memory is allocated to two or more regions known as generations. A generation is a block of memory which contains objects of a certain age. In many implementations there are two generations, one for young (new and reasonably new) objects and one for old objects. Young generation is usually much smaller compared to the old generation. Generational collection allows employing different GC algorithms in different generations. This enables selecting a suitable algorithm based on the maturity of the objects.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Generational collection makes use of an interesting characteristic of applications, often referred to as the "generational hypothesis". This hypothesis states:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;Most allocated objects are not referenced for long (they die young - sometimes also stated as infant mortality)&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Few references from older objects to younger objects exist&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Based on this hypothesis, modern garbage collectors run collections on the young generation frequently. This is fast and efficient because the young generation is small and likely to contain many dead objects. Objects that survive some number of young generation collections are moved (tenured) to the old generation. Because old generation is much larger, its occupancy grows very slowly. Therefore old generation collections are infrequent. But when they do occur, they tend to take a much longer time to complete.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In new HotSpot JVMs, the garbage collector divides the heap into 3 generations:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;Young generation - contains newly allocated objects&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Old generation - objects that has survived some number of young gen collections and some very large objects that were directly allocated in old gen&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Permanent generation (perm gen) - contains classes, methods and associated descriptors which are managed by the JVM&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The young generation is further divided into 3 regions. The larger division is known as the Eden. This is where almost all the new object allocations take place (under special circumstances, large objects may get allocated in the old generation). The other smaller spaces are known as survivor spaces. One of the survivor spaces are always kept empty until the next young generation collection. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;When an old generation fills up a full collection (major collection) is performed. All generations are collected during a full collection. First the young generation is collected using the young generation collection algorithm. Then the old generation collection algorithm is run on the old generation and permanent generation. If compaction occurs, each generation is compacted separately. During a full collection if the old generation is too full to accept tenured objects from the young generation, the old generation collection algorithm is run on the entire heap (except with CMS collector).&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Available Garbage Collectors&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;HotSpot JVM contains 3 garbage collectors:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li style="text-align: justify;"&gt;Serial collector&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Parallel collector&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Concurrent mark-sweep collector&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In addition to that there is a special enhanced version of the parallel collector known as the parallel compacting collector. Let's see how each of these collectors work.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Serial Collector (Mark-Sweep-Compact collector)&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This is the collector used by default on Java HotSpot client JVM. It is a serial, stop-the-world, copying collector. Because it is serial and operates in the stop-the-world mode it is not a very efficient collector.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Young generation collection:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;Live objects in Eden are copied to the empty survivor space (objects that won't fit are directly copied to the old generation)&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Live objects in the occupied survivor space are copied to the empty survivor space (relatively old objects are copied to old generation)&lt;/li&gt;&lt;li style="text-align: justify;"&gt;If the free survivor space becomes full during the process, remaining live objects in Eden and occupied survivor space are tenured&lt;/li&gt;&lt;li style="text-align: justify;"&gt;At this point Eden and the occupied survivor space contains only dead objects and so can be considered empty - The previously free survivor space contains some live objects&lt;/li&gt;&lt;li style="text-align: justify;"&gt;The two survivor spaces switch roles&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Old/Permanent generation collection:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;A two phase Mark-and-sweep algorithm is used to clean up dead objects&lt;/li&gt;&lt;li style="text-align: justify;"&gt;After that a sliding compaction (live objects are slided towards the beginning of the generation) is performed to compact the generations&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Parallel Collector (Throughput Collector)&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This is very similar to the serial collector in many ways. In fact the only notable difference is that parallel collector uses multiple threads to perform the young generation collection. Other than that it uses the same algorithms as the serial collector. The number of threads used for collection is equal to the number of CPUs available. Because of the parallel collection feature, this collector usually results in much shorter pauses and higher application throughput. However note that the old generation collection is still carried out using a single thread in serial fashion. This is the default collector used in Java HotSpot server JVM.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Parallel Compacting Collector&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This is an enhanced version of the parallel collector. It uses multiple threads to perform the old generation collection as well. The old generation collection divides the generations into regions and operate on individual regions in parallel. The algorithm used for old generation collection is also slightly different from what's used in serial and parallel collectors.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Concurrent Mark-Sweep Collector (CMS Collector)&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;While the parallel collectors give prominence to application throughput, this collector gives prominence to low response time. It uses the same young generation collection algorithm as the parallel collectors. But the old generation collection is performed concurrently with the application instead of going to stop-the-world mode (at least most of the time). A collection cycle starts with a short pause known as the initial mark. This identifies the initial set of live objects directly reachable from the application code. Then during the concurrent marking phase, collector marks all live objects transitively reachable from the initially marked set. Because this happens concurrently with the application not all live objects get marked up. To handle this, the application stops again for a second pause for the remark phase. Remark phase is often run using multiple threads for efficiency.  After this marking process a concurrent sweep phase is initiated.   &lt;/div&gt;&lt;div style="text-align: justify;"&gt;CMS collector is not a compacting collector. Therefore it uses a set of free-lists when it comes to allocation. Therefore the allocation overhead is higher. Also CMS collector is best suited for large heaps. Because collection happens concurrently, the old generation will continue to grow even during collection. So the heap should be large enough to accommodate that growth. Another issue with CMS is floating garbage. That is objects considered as live may become garbage towards the end of the collection cycle. These will not get immediately cleaned up but will definitely get cleaned up during the next collection cycle. CMS collector requires lot of CPU power as well.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Unlike other collectors, CMS collector does not wait till the old generation becomes full to start a collection. Instead it starts collecting early so it can avoid old generation getting filled up to the capacity. If the old generation gets filled up before CMS kicks in, it resorts to the serial stop-the-world collection mode used by serial and parallel collectors. To avoid this CMS uses some statistics regarding previous collection times and the time taken to fill up the old generation. CMS also kicks in if the old generation occupancy exceeds a predefined threshold known as the initiating occupancy fraction. This is a configurable parameter and defaults to 68%. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;There is a special mode of operation for the CMS collector known as the incremental mode. In the incremental mode, concurrent collection cycles are broken down into smaller chunks. Therefore during a concurrent collection cycle, the collector will suspend itself to give full CPU to the running application. This in turns reduces the impact of long concurrent collection phases. This mode is particularly useful in cases where the number of CPUs is small.&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Selecting the Appropriate Collector&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Most of the time JVM is smart enough to select the right collector for the situation by analyzing the system configuration (see the next section). But since the JVM has no knowledge of the application requirements, sometimes the JVM chosen collector will not be good enough. When it comes to manually selecting a collector for an application, there are no hard and fast rules that say a particular collector is suitable for a given scenario. So there are only a set of general guidelines and recommendations. Most of the time they will work, but there could be exceptions. Hope you find them useful:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;Serial collector is the collector of choice for most applications that run on client-style machines and do not have low pause requirements. On modern hardware this collector can handle a wide range of applications with heaps as small as 64MB.&lt;/li&gt;&lt;li style="text-align: justify;"&gt;If the application has a small data set select the serial collector.&lt;/li&gt;&lt;li style="text-align: justify;"&gt;If the application has no low pause requirements and runs on a machine with a single CPU select the serial collector.&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Parallel collector is best for applications that run on machines with multiple CPUs and do not have low pause requirements. &lt;/li&gt;&lt;li style="text-align: justify;"&gt;If application throughput is the main consideration and slightly longer pauses are acceptable select the parallel collector.&lt;/li&gt;&lt;li style="text-align: justify;"&gt;The parallel compacting collector can be used in almost any scenario where the parallel collector seems suitable. In fact the parallel compacting collector is almost always preferred over the parallel collector. However with this collector a single application can hog the CPU for an extended period of time. Therefore it's not very suitable in cases where multiple JVMs reside on a single large machine.&lt;/li&gt;&lt;li style="text-align: justify;"&gt;CMS collector should be the collector of choice whenever there is a requirement for low pauses and low response time. However this collector makes use of lot of CPU resources. Therefore impact on CPU usage must be carefully evaluated. Usually applications that have large sets of long-lived data (a large old generation), which run on machines with multiple CPUs, tend to benefit from this collector. Web servers and most interactive applications often fall into the category of CMS benefactors.&lt;/li&gt;&lt;li style="text-align: justify;"&gt;If it is needed to run an application with low pause requirements on a machine which doesn't have too many CPU resources, consider using the CMS incremental mode.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Note: Command line options needed to enable different collectors are given at the end of the post&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Ergonomics&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Modern JVMs has the ability to select a suitable garbage collector, heap size and JVM type by looking at the host platform and the OS. In addition to that, a new way of dynamically tuning memory management has been introduced to the parallel collectors. This way, a user can specify the desired behavior and the collector dynamically tunes the sizes of the heap regions in an attempt to achieve the requested behavior. The combination of platform-dependent default selections and dynamic GC tuning is referred to as ergonomics. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;The ergonomics default selections are done based on the 'class' of the machine. A machine is considered to be server-class if it has:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;2 or more processors&lt;/li&gt;&lt;li style="text-align: justify;"&gt;2 GB or more physical memory&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This applies to all platforms except for 32-bit machines running Windows. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;If the machine is classified as non server-class, ergonomics will choose the following settings:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;HotSpot client JVM&lt;/li&gt;&lt;li style="text-align: justify;"&gt;serial collector&lt;/li&gt;&lt;li style="text-align: justify;"&gt;initial heap size of 4 MB&lt;/li&gt;&lt;li style="text-align: justify;"&gt;maximum heap size of 64 MB&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;For server-class machines it is slightly complicated. However in general it is something like:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;HotSpot server JVM&lt;/li&gt;&lt;li style="text-align: justify;"&gt;parallel collector&lt;/li&gt;&lt;li style="text-align: justify;"&gt;initial heap size of 1/64 th of physical memory&lt;/li&gt;&lt;li style="text-align: justify;"&gt;maximum heap size of 1/4 th of physical memory under an upper limit of 1 GB&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;One can run the HotSpot client JVM on a server-class machine by explicitly enabling the -client command line option. In that case ergonomics will select the serial collector. Also when the collector selected by ergonomics is not the parallel collector the initial heap size and maximum heap size will be 4MB and 64MB respectively.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Sizing the Heap&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;There are lots of options available when it comes to sizing the heap, its regions and generations. Most of the time we don't have to meddle with these settings, but there could be exceptional situations where we have to tune them up to obtain optimal performance and avoid out of memory errors. The most common settings related to heap size are the initial heap size and maximum heap size which are set by -Xms and -Xmx command line options respectively. If you set a lower value to the initial heap size than the maximum heap size, JVM will try to start with a heap of initial size and then grow the heap as and when required. If you set equal values to both parameters, JVM will start with the specified maximum heap size. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;Another important parameter is the NewRatio value which governs the ratio between the old generation size and young generation size. On most server class systems this defaults to 8. That means the old generation is 8 times larger than the young generation. If the application tends to do lot of new allocations then reducing this ratio to a reasonable value may not be a bad idea. Reducing this ratio will generally result in less minor collections. The size of the young generation can be further controlled by the NewSize and MaxNewSize options.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;We can get the JVM to dynamically grow or shrink the generations based on how they are utilized by setting the MinHeapFreeRatio and MaxHeapFreeRatio parameters. These parameters try to impose some restrictions on the amount of free heap space in each generation. If the free space percentage in a given generation is about to drop below the MinHeapFreeRatio, JVM will expand the generation to meet the lower limit. Similarly generations will be contracted if the free space percentage crosses the MaxHeapRatio.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Command Line Options&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Collector selection&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;Serial collector: &lt;i&gt;-XX:+UseSerialGC&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Parallel collector: &lt;i&gt;-XX:+UseParallelGC&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Parallel compacting collector: &lt;i&gt;-XX:+UseParallelOldGC&lt;/i&gt; (combine with &lt;i&gt;-XX:+UseParallelGC&lt;/i&gt;)&lt;/li&gt;&lt;li&gt;CMS collector: &lt;i&gt;-XX:+UseConcMarkSweepGC&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Parallel collector settings&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: auto;"&gt;&lt;ul&gt;&lt;li&gt;Parallel GC thread count: &lt;i&gt;-XX:ParallelGCThreads=n&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Desired maximum pause length: &lt;i&gt;-XX:MaxGCPauseMilis=n&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Throughput (percentage of CPU time spent on application - defaults to 99): &lt;i&gt;-XX:GCTimeRatio=n&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;CMS collector settings&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;Enable incremental mode: &lt;i&gt;-XX:+CMSIncrementalMode&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Parallel GC thread count: &lt;i&gt;-XX:+ParallelGCThreads=n&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Old gen occupancy threshold that triggers collections: &lt;i&gt;-XX:CMSInitiatingOccupancyFraction=n&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Heap sizing options&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;Initial size: &lt;i&gt;-Xms&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Maximum size: &lt;i&gt;-Xmx&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Initial size of the new generation: &lt;i&gt;-XX:NewSize=n&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Maximum size of the perm gen space: &lt;i&gt;-XX:MaxPermSize=n&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Ratio between old and new generation sizes: &lt;i&gt;-XX:NewRatio=n&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Debug options&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Print basic GC info: &lt;i&gt;-XX:+PrintGC&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Print verbose GC info: &lt;i&gt;-XX:+PrintGCDetails&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Print details with time: &lt;i&gt;-XX:+PrintGCTimeStamps&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;References&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;&lt;a href="http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html"&gt;http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html&lt;/a&gt;&lt;/li&gt;&lt;li style="text-align: justify;"&gt;&lt;a href="http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html"&gt;http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html&lt;/a&gt;&lt;/li&gt;&lt;li style="text-align: justify;"&gt;&lt;a href="http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf"&gt;http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&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/4206392247746930256-97724540279815083?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/97724540279815083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=97724540279815083' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/97724540279815083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/97724540279815083'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2010/11/taming-java-garbage-collector.html' title='Taming the Java Garbage Collector'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-8205087612114754040</id><published>2010-11-03T16:15:00.000-07:00</published><updated>2010-11-03T16:21:11.521-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='discovery'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><title type='text'>Rediscover SOA with WSO2 Carbon &amp; WS-Discovery</title><content type='html'>&lt;div style="text-align: justify;"&gt;One of the hottest features of new &lt;a href="http://wso2.com/products/carbon/"&gt;WSO2 Carbon 3.0&lt;/a&gt; based releases is the out-of-the-box &lt;a href="http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01"&gt;WS-Discovery&lt;/a&gt; support. WS-Discovery is a standard protocol for discovering services and service endpoints. This enables service clients to search for services based on a given criteria and bind with the discovered services. The WS-Discovery specification defines two modes of operation:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;1. Adhoc mode&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In the adhoc mode, servers advertise the services they have using a UDP multicast protocol. Similarly client applications can search for available services by sending out probe requests over UDP multicast. Servers listening for such probe requests can then send the service information to the client over a unicast channel.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;2. Managed mode&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In the managed mode, servers and clients use an intermediary known as the discovery proxy for all service discovery purposes. Servers will register the available services with the discovery proxy by sending notifications over HTTP. Then clients can directly probe the discovery proxy to discover the registered services. This mode of operation does not use UDP multicast for any sort of communication. All interactions take place over regular HTTP channels and if needed, HTTPS can be used to provide transport level security.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Starting from version 3.0, WSO2 Carbon framework has full support for WS-Discovery managed mode. The following products ship the necessary WS-Discovery libraries with them by default:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wso2.com/products/web-services-application-server"&gt;WSO2 Web Services Application Server&lt;/a&gt; (WSAS)&lt;/li&gt;&lt;li&gt;&lt;a href="http://wso2.com/products/enterprise-service-bus/"&gt;WSO2 Enterprise Service Bus&lt;/a&gt; (ESB)&lt;/li&gt;&lt;li&gt;&lt;a href="http://wso2.com/products/data-services-server/"&gt;WSO2 Data Services Server&lt;/a&gt; (DSS)&lt;/li&gt;&lt;li&gt;&lt;a href="http://wso2.com/products/governance-registry/"&gt;WSO2 Governance Registry&lt;/a&gt; (G-Reg)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;WSO2 G-Reg has the ability to act as a discovery proxy. This mode is enabled by default and user doesn't have to configure anything in the G-Reg side. In products like WSAS and DSS, WS-Discovery support should be manually enabled by pointing them to an already existing discovery proxy. Once configured, these server applications will automatically register the services they have with the discovery proxy. Service information will be synchronized with the discovery proxy at server start up, shutdown and service level updates. This ensures that the information in the discovery proxy are always up-to-date. WSO2 ESB can query one or more discovery proxy instances to find the necessary services and service endpoints. The ESB UI also enables creating proxy services and mediation endpoints using the discovered endpoints.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;There are lot of other cool things you can do in Carbon platform with WS-Discovery. There are several plug-ins and extensions available to download and try out as well. I'm planning to post a series of blogs addressing various aspects of WS-Discovery in the next few months. So stay tuned! In the meantime read &lt;a href="http://www.smartjava.org/?q=node/11"&gt;this article&lt;/a&gt; to learn how Jos Dirksen integrated Mule with WSO2 G-Reg using the WS-Discovery capabilities of Carbon framework.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-8205087612114754040?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/8205087612114754040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=8205087612114754040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8205087612114754040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8205087612114754040'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2010/11/rediscover-soa-with-wso2-carbon-ws.html' title='Rediscover SOA with WSO2 Carbon &amp; WS-Discovery'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-8826222129296364992</id><published>2010-10-03T19:18:00.000-07:00</published><updated>2010-10-03T19:40:32.664-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='nbqsa'/><title type='text'>WSO2 Excels at NBQSA</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a href="http://wso2.com/"&gt;WSO2&lt;/a&gt; bagged four awards at the 12th National Best Quality Software Awards (&lt;a href="http://www.nbqsasrilanka.org/"&gt;NBQSA&lt;/a&gt;) held last week. NBQSA is an annual competition organized by the &lt;a href="http://www.bcssrilanka.org/"&gt;Sri Lankan chapter of the BCS&lt;/a&gt;. Every year many corporate firms, government organizations, tertiary education institutes and individuals take part in this event. The competition is pretty intense and the winners are also given the opportunity to take part in international events such as APICTA.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This year WSO2 really made their presence felt at NBQSA by winning the following four awards:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;Bronze award for tools and infrastructure apps category - WSO2 Data Services Server&lt;/li&gt;&lt;li&gt;Silver award for research and development category - WSO2 Gadget Server&lt;/li&gt;&lt;li&gt;Gold award for tools and infrastructure apps category - WSO2 Enterprise Service Bus&lt;/li&gt;&lt;li&gt;Glod award for overall victory - WSO2 Enterprise Service Bus&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I feel truly proud to be a part of such a dynamic team as the WSO2. Three cheers to WSO2 and all the folks who worked with WSO2 (in past and present) and made these achievements possible.&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Agr7CcJVYp8/TKk9tu2j2aI/AAAAAAAAAHE/aMh1UMInUWk/s1600/IMG_8840.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_Agr7CcJVYp8/TKk9tu2j2aI/AAAAAAAAAHE/aMh1UMInUWk/s400/IMG_8840.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5524014273826904482" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Agr7CcJVYp8/TKk9tUxXUrI/AAAAAAAAAG8/V6qK3VEGz4A/s1600/IMG_8836.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://4.bp.blogspot.com/_Agr7CcJVYp8/TKk9tUxXUrI/AAAAAAAAAG8/V6qK3VEGz4A/s400/IMG_8836.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5524014266825790130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-8826222129296364992?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/8826222129296364992/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=8826222129296364992' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8826222129296364992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8826222129296364992'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2010/10/wso2-excels-at-nbqsa.html' title='WSO2 Excels at NBQSA'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Agr7CcJVYp8/TKk9tu2j2aI/AAAAAAAAAHE/aMh1UMInUWk/s72-c/IMG_8840.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-5433248263637432293</id><published>2010-09-12T02:04:00.000-07:00</published><updated>2010-09-12T02:13:55.199-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>WSO2 ESB 3.0.1 Up for Grabs</title><content type='html'>&lt;div style="text-align: justify;"&gt;Last week we released &lt;a href="http://wso2.com/products/enterprise-service-bus/"&gt;WSO2 ESB 3.0.1&lt;/a&gt;. This release contains a number of important bug fixes and we highly recommend everyone using WSO2 ESB 3.0.0 to upgrade to the latest release as soon as possible. Please note that this is only a bug fix release and as such it doesn't contain any new features over 3.0.0. Therefore any configuration can be easily migrated to the 3.0.1 from 3.0.0. &lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;Some of the significant fixes available in this release are:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;Fixes to the hot deployment/hot update implementation&lt;/li&gt;&lt;li&gt;Fixes to the built-in patch model&lt;/li&gt;&lt;li&gt;Transport fixes (particularly in the NHTTP and FIX transports)&lt;/li&gt;&lt;li&gt;An Axis2 security fix&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;To make a long story short, there are more than one reason to migrate to WSO2 ESB 3.0.1. So download your copy today.&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/4206392247746930256-5433248263637432293?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/5433248263637432293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=5433248263637432293' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/5433248263637432293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/5433248263637432293'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2010/09/wso2-esb-301-up-for-grabs.html' title='WSO2 ESB 3.0.1 Up for Grabs'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-8142048996401028547</id><published>2010-09-04T22:52:00.000-07:00</published><updated>2010-09-04T23:28:19.298-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='california'/><category scheme='http://www.blogger.com/atom/ns#' term='automobile'/><category scheme='http://www.blogger.com/atom/ns#' term='museum'/><title type='text'>From Quadricycle to the Prius</title><content type='html'>&lt;div&gt;&lt;div style="text-align: justify;"&gt;I went to see the &lt;a href="http://toweautomuseum.org/"&gt;California Automobile Museum&lt;/a&gt; a few days back. It's located in Sacramento and displays a wide range of classic cars and a few modern cars. If you are an automobile fanatic, this is the place to be. I don't consider myself to be a total car fanatic, but even I loved the place. It's a great place to learn and experience the history of automobile industry and admire the long journey the human race has come in search of faster and safer ways of transportation.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Here are some highlights from my visit:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Agr7CcJVYp8/TIMyUJCZhTI/AAAAAAAAAFk/mINJFk4qVsg/s1600/DSC00508.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_Agr7CcJVYp8/TIMyUJCZhTI/AAAAAAAAAFk/mINJFk4qVsg/s400/DSC00508.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5513305690436371762" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Agr7CcJVYp8/TIMyUxnd2NI/AAAAAAAAAFs/xWNNXOh_J6Q/s1600/DSC00440.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_Agr7CcJVYp8/TIMyUxnd2NI/AAAAAAAAAFs/xWNNXOh_J6Q/s400/DSC00440.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5513305701329262802" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Agr7CcJVYp8/TIMyVZVoq0I/AAAAAAAAAF0/CSjg7cJkCXs/s1600/DSC00505.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_Agr7CcJVYp8/TIMyVZVoq0I/AAAAAAAAAF0/CSjg7cJkCXs/s400/DSC00505.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5513305711991892802" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Agr7CcJVYp8/TIMyV7fnQuI/AAAAAAAAAF8/jyt_4ZvSx_I/s1600/DSC00447.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_Agr7CcJVYp8/TIMyV7fnQuI/AAAAAAAAAF8/jyt_4ZvSx_I/s400/DSC00447.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5513305721160549090" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Agr7CcJVYp8/TIMyWfmbo6I/AAAAAAAAAGE/82rd4wdcSHI/s1600/DSC00454.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_Agr7CcJVYp8/TIMyWfmbo6I/AAAAAAAAAGE/82rd4wdcSHI/s400/DSC00454.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5513305730852823970" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Agr7CcJVYp8/TIM2tir3FtI/AAAAAAAAAGs/ycp7PoBpi80/s1600/DSC00485.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_Agr7CcJVYp8/TIM2tir3FtI/AAAAAAAAAGs/ycp7PoBpi80/s400/DSC00485.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5513310524864403154" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Agr7CcJVYp8/TIM2tePY1BI/AAAAAAAAAGk/9fowwTCR82Q/s1600/DSC00474.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_Agr7CcJVYp8/TIM2tePY1BI/AAAAAAAAAGk/9fowwTCR82Q/s400/DSC00474.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5513310523671237650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Agr7CcJVYp8/TIM3pS0PW9I/AAAAAAAAAG0/4usnZXNZ4W8/s1600/DSC00527.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_Agr7CcJVYp8/TIM3pS0PW9I/AAAAAAAAAG0/4usnZXNZ4W8/s400/DSC00527.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5513311551396731858" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Agr7CcJVYp8/TIM2sNSaXYI/AAAAAAAAAGU/v-6-T0h2IWE/s1600/DSC00471.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_Agr7CcJVYp8/TIM2sNSaXYI/AAAAAAAAAGU/v-6-T0h2IWE/s400/DSC00471.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5513310501940649346" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Agr7CcJVYp8/TIM2ruxnxYI/AAAAAAAAAGM/Dx7EMOtwybo/s1600/DSC00476.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_Agr7CcJVYp8/TIM2ruxnxYI/AAAAAAAAAGM/Dx7EMOtwybo/s400/DSC00476.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5513310493750052226" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-8142048996401028547?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/8142048996401028547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=8142048996401028547' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8142048996401028547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8142048996401028547'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2010/09/from-quadricycle-to-prius.html' title='From Quadricycle to the Prius'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Agr7CcJVYp8/TIMyUJCZhTI/AAAAAAAAAFk/mINJFk4qVsg/s72-c/DSC00508.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-2030041717819278701</id><published>2010-09-02T09:01:00.001-07:00</published><updated>2010-09-02T09:21:26.200-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lake tahoe'/><title type='text'>Experiencing the Nature at Lake Tahoe</title><content type='html'>&lt;div&gt;&lt;div style="text-align: justify; "&gt;A couple of weeks back I was in Auburn, California. During my stay, I got the opportunity to visit the &lt;a href="http://en.wikipedia.org/wiki/Lake_Tahoe"&gt;lake Tahoe&lt;/a&gt;. It's only a 2-3 hours drive to the magnificent lake from Auburn. Here are some of the breath taking sceneries around the lake.....&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Agr7CcJVYp8/TH_NthNT0nI/AAAAAAAAAFc/qRyzhKY9vC8/s1600/IMG_0024.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_Agr7CcJVYp8/TH_NthNT0nI/AAAAAAAAAFc/qRyzhKY9vC8/s400/IMG_0024.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5512350650816778866" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Agr7CcJVYp8/TH_NtH5woBI/AAAAAAAAAFU/CgQ3_HD5ZHI/s1600/IMG_0019.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_Agr7CcJVYp8/TH_NtH5woBI/AAAAAAAAAFU/CgQ3_HD5ZHI/s400/IMG_0019.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5512350644023894034" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Agr7CcJVYp8/TH_NsUD6Y4I/AAAAAAAAAFM/_jnOJ0o9mlw/s1600/IMG_0017.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_Agr7CcJVYp8/TH_NsUD6Y4I/AAAAAAAAAFM/_jnOJ0o9mlw/s400/IMG_0017.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5512350630107833218" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Agr7CcJVYp8/TH_NsDopjRI/AAAAAAAAAFE/6ZKiBr0Skeg/s1600/IMG_0014.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_Agr7CcJVYp8/TH_NsDopjRI/AAAAAAAAAFE/6ZKiBr0Skeg/s400/IMG_0014.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5512350625698516242" /&gt;&lt;/a&gt;&lt;div&gt;Truly awesome experience!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-2030041717819278701?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/2030041717819278701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=2030041717819278701' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/2030041717819278701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/2030041717819278701'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2010/09/experiencing-nature-at-lake-tahoe.html' title='Experiencing the Nature at Lake Tahoe'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Agr7CcJVYp8/TH_NthNT0nI/AAAAAAAAAFc/qRyzhKY9vC8/s72-c/IMG_0024.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-3366647989838318693</id><published>2010-07-02T01:06:00.000-07:00</published><updated>2010-07-02T01:58:14.496-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='fix'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>FIX Your SOA with WSO2 ESB</title><content type='html'>&lt;div style="text-align: justify;"&gt;I believe &lt;a href="http://wso2.com/products/enterprise-service-bus/"&gt;WSO2 ESB&lt;/a&gt; is the ONLY complete enterprise service bus which supports the &lt;a href="http://www.fixprotocol.org/"&gt;FIX&lt;/a&gt; (Financial Information eXchange) protocol. The FIX transport of WSO2 ESB enables the service bus to communicate with FIX acceptors and initiators. FIX messages received by the service bus can be routed, filtered or transformed using the existing set of mediators. If needed, FIX messages can be transformed and sent to external systems over different protocols such as HTTP and JMS.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I published an article titled "&lt;a href="http://wso2.org/library/articles/2010/06/fix-your-soa-wso2-esb"&gt;FIX Your SOA with WSO2 ESB&lt;/a&gt;" which explains how to setup the FIX transport in WSO2 ESB 3.0 and how to use it to implement a variety of integration scenarios. It gives a good overview on how to develop high performance finance data routing systems using WSO2 ESB. Hope you'll like it!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-3366647989838318693?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/3366647989838318693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=3366647989838318693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/3366647989838318693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/3366647989838318693'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2010/07/fix-your-soa-with-wso2-esb.html' title='FIX Your SOA with WSO2 ESB'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-5339659389398266393</id><published>2010-06-27T06:24:00.000-07:00</published><updated>2010-06-27T06:32:54.231-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tcp'/><category scheme='http://www.blogger.com/atom/ns#' term='axis2'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='transport'/><title type='text'>Axis2 TCP Transport Revamped</title><content type='html'>&lt;div style="text-align: justify;"&gt;I recently did some major improvements to the &lt;a href="http://ws.apache.org/axis2/"&gt;Axis2&lt;/a&gt; TCP transport. The TCP transport enables Axis2 services and clients to send/receive SOAP messages over TCP, using Java TCP sockets.  The &lt;a href="http://ws.apache.org/axis2/1_1/tcp-transport.html"&gt;old TCP transport&lt;/a&gt; was very simple and it must be configured globally in the axis2.xml file. Due to this limitation, a service could not open up its own port to listen to incoming TCP messages. All the TCP requests were captured by a single, globally configured port and WS-Addressing headers were used to dispatch the requests to the appropriate services. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;The new transport implementation is fairly advanced with a wide range of configuration options. It can be configured globally in the axis2.xml file, or it can be configured at the service level in the corresponding services.xml files. Only the port number was configurable in the previous TCP transport implementation. The new implementation supports all the parameters described below:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;transport.tcp.port - Port number (mandatory parameter)&lt;/li&gt;&lt;li&gt;transport.tcp.hostname - The host name to which the server socket should be bound&lt;/li&gt;&lt;li&gt;transport.tcp.backlog - The length of the message back log for the server socket (defaults to 50)&lt;/li&gt;&lt;li&gt;transport.tcp.contentType - Content type of requests (defaults to text/xml)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In the new transport, if a request is received by a port configured at the service level, it is pre-dispatched to the corresponding service. If the global port receives a TCP message, WS-Addressing headers will be looked up while dispatching.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;These improvements are now available in the Axis2 trunk. So feel free to take it for a ride and give us your feedback. I also have some plans to make some improvements to the Axis2 UDP transport. I intend to add multicast support to the existing UDP transport and with that we will be able to support multicast request – unicast response message exchange pattern in Axis2.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-5339659389398266393?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/5339659389398266393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=5339659389398266393' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/5339659389398266393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/5339659389398266393'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2010/06/axis2-tcp-transport-revamped.html' title='Axis2 TCP Transport Revamped'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-4319008241018684130</id><published>2010-06-19T21:37:00.000-07:00</published><updated>2010-06-19T21:48:59.122-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wso2 esb'/><category scheme='http://www.blogger.com/atom/ns#' term='mediation'/><title type='text'>WSO2 ESB Mediation Statistics - Let Numbers Do the Talking</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a href="http://wso2.com/products/enterprise-service-bus/"&gt;WSO2 ESB&lt;/a&gt; comes with a mediation statistics component, which allows users to collect and monitor statistics on proxy services, sequences and endpoints. Data gathered by this component can be viewed through the ESB management console or one can even develop some custom code to pump the data into an external monitoring tool.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I just published an article titled "&lt;a href="http://wso2.org/library/articles/2010/06/wso2-esb-mediation-statistics-can-numbers-tell-about-your-soa"&gt;WSO2 ESB Mediation Statistics: What Can Numbers Tell About Your SOA?&lt;/a&gt;" which explains the ins and outs of the mediation statistics component along with how to process the collected statistical information by writing custom code. Enjoy!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-4319008241018684130?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/4319008241018684130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=4319008241018684130' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/4319008241018684130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/4319008241018684130'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2010/06/wso2-esb-mediation-statistics-let.html' title='WSO2 ESB Mediation Statistics - Let Numbers Do the Talking'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-5872402226795973850</id><published>2010-06-12T02:31:00.000-07:00</published><updated>2010-06-12T02:43:22.292-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>New Configuration Model of Synapse</title><content type='html'>&lt;div style="text-align: justify;"&gt;If you are trying out a latest &lt;a href="http://synapse.apache.org"&gt;Apache Synapse&lt;/a&gt; build off the &lt;a href="http://svn.apache.org/repos/asf/synapse/trunk/java/"&gt;SVN trunk&lt;/a&gt;, you will notice that the Synapse configuration model has gone through some significant changes lately.  In the past, Synapse was programmed to load the entire mediation configuration (sequences, endpoints, proxy services, tasks etc) from a single XML file, named synapse.xml. Synapse would parse this XML file at startup and construct an object model known as the SynapseConfiguration which contains the definitions of all active mediation components at runtime. While this approach was simple and clean, it had a number of limitations: &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;Configuration management becomes a nightmare as the size of the synapse.xml grows. A typical heavy duty configuration would consist of dozens of proxy services, sequences and endpoints. When all these are packed into a single XML file, it becomes difficult to locate a single configuration item quickly.&lt;/li&gt;&lt;li&gt;With all configuration artifacts stored in a single flat file, it is almost impossible to develop satisfactory tooling support for configuration development and maintenance. &lt;/li&gt;&lt;li&gt;A team of developers cannot work on configuring a single Synapse instance at the same time.&lt;/li&gt;&lt;li&gt;Hot deployment is a feature that Synapse has been lacking for years. Being able to hot deploy a proxy service or a sequence into Synapse without having to restart the service bus is a great convenience at development time. But a configuration model based on a single XML file is not at all capable of handling such requirements.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Considering these drawbacks, I implemented a new configuration model for Synapse, known as the multi XML configuration builder. The new model, which is now the default configuration model in Synapse, loads the configuration from a structured file hierarchy, instead of loading the mediation configuration from a single XML file. With this model in place, each endpoint, sequence and proxy service has to be defined in separate XML files. The directory structure for storing these individual configuration files is as follows:&lt;/div&gt;&lt;pre&gt;synapse-config&lt;br /&gt;   |&lt;br /&gt;   +-- registry.xml&lt;br /&gt;   +-- endpoints&lt;br /&gt;   +-- event-sources&lt;br /&gt;   +-- local-entries&lt;br /&gt;   +-- proxy-services&lt;br /&gt;   +-- sequences&lt;br /&gt;   `-- tasks&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;As you can see there are separate dedicated directories for each type of artifacts. Each of these directories can house zero or more XML configuration files. Each file must have the .xml extension to be recognized by the Synapse configuration builder. If you take a look at the source code you will notice that I have enforced this restriction using a Java FileFilter:&lt;/div&gt;&lt;pre&gt;    private static FileFilter filter = new FileFilter() {&lt;br /&gt;       public boolean accept(File pathname) {&lt;br /&gt;           return (pathname.isFile() &amp;amp;&amp;amp; pathname.getName().endsWith(".xml"));&lt;br /&gt;       }&lt;br /&gt;   };&lt;br /&gt;&lt;br /&gt;   private static void createProxyServices(SynapseConfiguration synapseConfig, String rootDirPath)&lt;br /&gt;           throws XMLStreamException {&lt;br /&gt;&lt;br /&gt;       File proxyServicesDir = new File(rootDirPath, PROXY_SERVICES_DIR);&lt;br /&gt;       if (proxyServicesDir.exists()) {&lt;br /&gt;           if (log.isDebugEnabled()) {&lt;br /&gt;               log.debug("Loading proxy services from : " + proxyServicesDir.getPath());&lt;br /&gt;           }&lt;br /&gt;           File[] proxyDefinitions = proxyServicesDir.listFiles(filter);&lt;br /&gt;           for (File file : proxyDefinitions) {&lt;br /&gt;               try {&lt;br /&gt;                   OMElement document = parseFile(file);&lt;br /&gt;                   ProxyService proxy = SynapseXMLConfigurationFactory.defineProxy(&lt;br /&gt;                           synapseConfig, document);&lt;br /&gt;                   proxy.setFileName(file.getName());&lt;br /&gt;                   SynapseArtifactDeploymentStore.getInstance().addArtifact(&lt;br /&gt;                           file.getAbsolutePath(), proxy.getName());&lt;br /&gt;               } catch (FileNotFoundException ignored) {}&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;The mediation registry is defined in the registry.xml file which should be placed at the top level of the file hierarchy. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;So does the multi XML configuration builder solve the problems in the old configuration model? Let’s consider the facts:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;With Synapse configuration broken down into smaller, manageable pieces the whole configuration becomes easier to manage and keep track of. As long as the XML files are named appropriately, it is extremely easy to quickly locate a particular configuration item. We recommend using the artifact names to name the corresponding XML files. For an example the file containing the definition of the FooProxy can be named FooProxy.xml.&lt;/li&gt;&lt;li&gt;With the multi XML configuration builder, developing powerful and elegant tools for creating pieces of the service bus configuration becomes a trivial task. Also one can use conventional configuration management tools and version controlling systems such as Subversion to store and manage the configuration artifacts.&lt;/li&gt;&lt;li&gt;A team of developers can now work on configuring Synapse. Each developer in the team can work on his own configuration file or set of files.&lt;/li&gt;&lt;li&gt;Supporting hot deployment is now feasible. As a matter of fact, &lt;a href="http://blog.ruwan.org/"&gt;Ruwan&lt;/a&gt; implemented hot deployment and hot update support for Synapse based on the multi XML configuration builder a few weeks back. This feature is now available in the Synapse trunk and will be available for the next Synapse release.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;So there you go. Target achieved. There is one little glitch in this approach though. That is how do we handle backward compatibility with older Synapse versions? For instance how can a Synapse 1.2 user, who has a single synapse.xml file, migrate to a new Synapse version? We have provided a solution for that as well. In the new Synapse configuration file hierarchy you can place a synapse.xml file at the top level (alongside with registry.xml). All the mediation components defined in this synapse.xml will be loaded to the service bus at startup along with any other components defined inside the individual directories. So a Synapse 1.2 user can simply copy the existing synapse.xml file to the synapse-config directory in a new Synapse distribution, and it will be picked up by the service bus. In addition to this convenience feature, we are planning on developing some migration tools that can help users to easily migrate an old Synapse configuration file onto a newer version of Synapse.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;As far as Synapse is concerned each configuration builder should be associated with a corresponding configuration serializer implementation. Serializers are used to convert the SynapseConfiguration object model back to the textual/XML form. So for the multi XML configuration builder I developed a matching multi XML configuration serializer which can save a SynapseConfiguration object model to a file hierarchy. Similar to the configuration builder this implementation was also heavily dependent on Java file IO APIs. However, after a while we realized that the serializer is not working as expected on certain platforms; most notably on Windows. After running some debug sessions and doing some on-line reading I realized that the Java file IO operations are not consistent on every platform. As a result sometimes the serializer would encounter trouble creating a new file or moving an existing file on Windows.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;At this point, my colleague, &lt;a href="http://rajikak.blogspot.com/"&gt;Rajika&lt;/a&gt; suggested using &lt;a href="http://commons.apache.org/io/"&gt;Apache Commons IO&lt;/a&gt; API for file manipulation. Commons IO API provides a nice layer of abstraction on top of the standard Java IO APIs. It handles all file IO operations in a consistent and platform independent manner. So I got rid of almost all the Java file IO code in the multi XML configuration serializer and replaced them with corresponding calls to the Commons IO API. Some sample code fragments are shown below:&lt;/div&gt;&lt;pre&gt;    private void cleanUpDirectory()  throws Exception {&lt;br /&gt;       // If the target directory already exists and contains any files simply rename it to&lt;br /&gt;       // create a backup - This method does not delete the target directory&lt;br /&gt;       if (rootDirectory.exists() &amp;amp;&amp;amp; rootDirectory.isDirectory() &amp;amp;&amp;amp;&lt;br /&gt;               rootDirectory.listFiles().length &gt; 0) {&lt;br /&gt;&lt;br /&gt;           if (log.isDebugEnabled()) {&lt;br /&gt;               log.debug("The directory :" + rootDirectory.getPath() + " already exists. " +&lt;br /&gt;                       "Creating a backup.");&lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;           backupDirectory = new File(rootDirectory.getParentFile(), "__tmp" +&lt;br /&gt;                   new GregorianCalendar().getTimeInMillis());&lt;br /&gt;           FileUtils.moveDirectory(rootDirectory, backupDirectory);&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       // Create a new target directory&lt;br /&gt;       FileUtils.forceMkdir(rootDirectory);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   private void writeToFile(OMElement content, File file) throws Exception {&lt;br /&gt;       File tempFile = File.createTempFile("syn_mx_", ".xml");&lt;br /&gt;       OutputStream out = new FileOutputStream(tempFile);&lt;br /&gt;       XMLPrettyPrinter.prettify(content, out);&lt;br /&gt;       out.flush();&lt;br /&gt;       out.close();&lt;br /&gt;&lt;br /&gt;       FileUtils.copyFile(tempFile, file);&lt;br /&gt;       FileUtils.deleteQuietly(tempFile);&lt;br /&gt;   }&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://commons.apache.org/io/api-1.4/org/apache/commons/io/FileUtils.html"&gt;FileUtils&lt;/a&gt; is the entry point for file IO operations in the Commons IO API. It provides you with a range of useful methods for managing and manipulating files. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;Note that when writing to a file we first write the whole thing to a temporary file and once completed we copy the temp file to the final location. This was required to handle certain edge cases in the hot update implementation. Without that the hot updater will attempt to pickup and process half baked files (Again mostly on Windows – It seems Windows writes to files in chunks). &lt;/div&gt;&lt;div style="text-align: justify;"&gt;All in all, Apache Synapse is now equipped with a powerful new configuration model, a matching configuration serializer and hot deployment capabilities that leverage the new configuration model. Speaking of hot deployment, it is also based on the Axis2 hot deployment framework. Therefore it is configured in the axis2.xml file. We are yet to do a Synapse release with all these new exciting features but if you are itching to try them out feel free to grab a nightly build. Also be aware that &lt;a href="http://wso2.com/products/enterprise-service-bus/"&gt;WSO2 ESB 3.0&lt;/a&gt;, which is based on Synapse, has been released and that release contains all these new improvements.  &lt;/div&gt;&lt;div style="text-align: justify;"&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/4206392247746930256-5872402226795973850?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/5872402226795973850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=5872402226795973850' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/5872402226795973850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/5872402226795973850'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2010/06/new-configuration-model-of-synapse.html' title='New Configuration Model of Synapse'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-6669734271446782551</id><published>2010-05-28T23:28:00.000-07:00</published><updated>2010-05-28T23:39:51.167-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><title type='text'>Attention Open Source Developers...</title><content type='html'>&lt;div style="text-align: justify;"&gt;When you keep contributing to an open source project, the project community will eventually reward you by granting you committer rights. However most open source committers don’t realize that committership is a big responsibility. The moment you become a committer of a project, you become responsible for each and every line of code in the project code base. Every single change you make to the project source code affects other committers in the project and all the people around the world who use that software. Therefore as a committer you should stick to some kind of a policy or a code of conduct which governs how you make changes to the project source code. The following is a list of items that I think should be in such a policy. I’m not implying that I have always followed this policy in the past. Rather, I always try my best to stick by it:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;1.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Before anything else, if your contribution involves API changes, you MUST take the matter to the project mailing list. You MUST NOT make any API changes without notifying your fellow committers and the user base. Sometimes you might feel that the API change you are about to do is rather small, unimportant and trivial. For an example you might spot a spelling mistake in a method signature and feel the urge to correct it immediately. But still, an API change is an API change. If somebody’s using the misspelled method, your change will break his/her code. Also some developers tend to think that certain interfaces in the code base are “not so important” and nobody is using them, and therefore it is ok to make changes to them. Developers like that don’t really understand open source. The truth is there are no unimportant APIs in open source projects. When you make project source code open, you are basically inviting the rest of the world to use that code, develop on top of the APIs to do whatever they want with it. So even though you don’t know it, there could be hundreds of people out there who use the “unimportant” interface you are about to change.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Always crate an entry in the project issue tracker to keep track of your contributions. Almost every open source community maintains an issue tracker. At &lt;a href="http://apache.org"&gt;Apache&lt;/a&gt; and at &lt;a href="http://wso2.org"&gt;WSO2&lt;/a&gt; we mainly use &lt;a href="http://www.atlassian.com/software/jira/"&gt;Atlassian JIRA&lt;/a&gt;. Whenever you are about to make a change to the source code, consider creating a new entry in the issue tracker before you check-in the patch. In my opinion there are only two excuses for not creating an entry in the issue tracker:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;Adding some descriptive comments to the code (note that comments and Javadocs are two different things)&lt;/li&gt;&lt;li&gt;Refactoring some private attributes or private methods of a class (eg: renaming a local variable)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Once you have created the entry in the issue tracker, make sure you get it assigned to yourself. Once the relevant changes are checked-in to the code base, mark the entry as resolved. It doesn’t look very professional when you have dozens of open tickets which are not assigned to anyone. It is also not nice to have tickets in the work-in-progress mode, even after it has been fixed on the source code.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;3.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;While making changes to the source code, always follow the coding conventions accepted by your project community. If you come across any badly written or poorly formatted code fix them then and there. Refactor as you go. However do not make any functional changes, which are not relevant to the problem you are attempting to solve. If you come across old functional issues while fixing some other issue, report them on the issue tracker and leave them to be fixed in a future iteration. Generally it’s not a very good idea to solve multiple problems by one commit. That can make things harder to keep track of.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;4.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;When you are actually committing a patch to the code base, make it a point to properly log the changes you are about to check-in. I often commit code into the &lt;a href="http://svn.apache.org/repos/asf/"&gt;Apache Subversion repository&lt;/a&gt; and &lt;a href="http://svn.wso2.org/repos/wso2"&gt;WSO2 Subversion repository&lt;/a&gt;. Whenever I make a contribution, I always add a couple of lines to the SVN commit log, describing my changes. If it is like a rather large patch, I would mention a summary of the changes in bulleted point form. Also in your commit log message, you MUST mention the ID of the corresponding issue tracker entry. This can really help you track down changes in the future. At Apache and at WSO2 we have integrated JIRA with the Subversion repository. Whenever someone checks a bit of code into the SVN, with a JIRA ID in the commit log message, the relevant JIRA entry gets updated with the information related to the commit (see &lt;a href="https://issues.apache.org/jira/browse/SYNAPSE-628?page=com.atlassian.jira.plugin.ext.subversion:subversion-commits-tabpanel"&gt;example&lt;/a&gt;). This makes it really easy to identify all the changes done in the source code to resolve a particular issue.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;So there you have it! In my opinion, every open source developer should adhere to these key guidelines, whenever making a change to the project source code. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;Having said that, an open source committer should never feel uneasy, to make changes to the project source (unless it is specifically restricted by the community - as in the case of a release). If you have done some changes to the code, and if you are confident that the changes you have made are accurate and necessary, you should feel free to check them into the code base. Same applies for patches contributed by the non-committers as well. If a patch solves the problem at hand to a satisfactory level without violating the boundaries of the current design, committers should take necessary steps to check it in. The solution doesn’t have to be “perfect”. At Apache we follow a commit-then-review (CTR) policy, most of the time. This model enables developers to get code changes into the project as early as possible, without worrying too much about the impact they may have on the project. Once the changes have been checked-in, they can be reviewed and fine-tuned as necessary. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;However, during my career I have come across developers who at times leave issues open for weeks just because the available patches are not ‘perfect’. While the patches provide a satisfactory solution to the problem at hand, these developers always manage to find some small, irrelevant limitation in the patch, which can be easily fixed in a future iteration. They make it an excuse to not commit the patch. These developers, unfortunately, haven’t grasped the true spirit of open source. They don’t realize that the whole point of open source is to attract as much contributions as possible and correct any problems they might have, as we go on.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Before I wrap up, I’d like to reemphasize that open source committership gives you great power and authority over your project. We all know what comes with great power. Yes, it’s “great responsibility”. So use your powers with care and caution!&lt;/div&gt;&lt;div style="text-align: justify;"&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/4206392247746930256-6669734271446782551?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/6669734271446782551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=6669734271446782551' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/6669734271446782551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/6669734271446782551'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2010/05/attention-open-source-developers.html' title='Attention Open Source Developers...'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-1368468632998642074</id><published>2010-05-20T08:14:00.000-07:00</published><updated>2010-05-20T08:29:16.215-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='jordan'/><title type='text'>A Different Experience...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Agr7CcJVYp8/S_VUxbV0asI/AAAAAAAAAE0/duvNy3OMK-s/s1600/DSC00299.JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_Agr7CcJVYp8/S_VUxbV0asI/AAAAAAAAAE0/duvNy3OMK-s/s400/DSC00299.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5473374130268302018" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;Last week, I got the opportunity to visit yet another interesting part of the world – the Middle East. I have been to the Dubai airport before, while on my way to United States. But transits don’t count, right? So last week I visited the city of Amman, the capital of the Hashemite kingdom of Jordan. I was there for a whole week. It was not the trip I expected, but in a really good way.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Let’s start with the weather. I was expecting the weather to be burning hot with tons of scorching sunlight. It turns out the weather over there is actually better and far more comfortable compared to the usual weather in Colombo. The temperature is almost as same as in Colombo (around 30 degrees Celsius) but the humidity is nearly 0. So it’s actually very comfy. And during the nights the temperature would drop to something around 18 degrees Celsius resulting in some very cold nights and mornings. I also learnt that they have the usual four seasons over there at Jordan. They even get some snow showers during the winter. Who knew?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The city of Amman is indeed one of the largest, most developed and beautiful cities I’ve ever been to. It’s very clean and tidy for a capital of a country. I was kind of surprised to not see much pedestrians walking around the town. But the roads are always full of vehicles all the time (even at midnight). So I guess pretty much everyone owns a vehicle. I also got to see quite a number of Ferraris and Porches storming the highways. I also realized that travel costs are actually very low in Amman. You can get a taxi anywhere and travel about 4 km for 0.75 Dinars (~ 1 USD).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Amman is also full of great hotels, restaurants, cafes and various shops.  Truly great place for tourism I should say. Somewhere close to down town they have a street called the ‘Rainbow Street’. The street full of night clubs, restaurants, coffee shops and book shops is a great place to go and get something to eat and chill down for a while. They also have these huge shopping malls at Amman– larger than any mall I’ve ever been to. If you ever get to the city of Amman please make some time to go and visit the Mecca mall or the City mall. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;Something has to be mentioned about the people of Jordan too. They are really nice and friendly. People at Amman are always full of smiles and have nothing but nice things to say. During my short stay I was even offered a couple of lunches and one great dinner.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Unfortunately for me I didn’t actually get anytime to go and visit the real tourist hotspots in Jordan, like the city of Petra or the Dead Sea. But then again, it’s always nice to have something to look forward to.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-1368468632998642074?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/1368468632998642074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=1368468632998642074' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/1368468632998642074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/1368468632998642074'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2010/05/different-experience.html' title='A Different Experience...'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Agr7CcJVYp8/S_VUxbV0asI/AAAAAAAAAE0/duvNy3OMK-s/s72-c/DSC00299.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-6214316350577486696</id><published>2010-04-24T04:52:00.000-07:00</published><updated>2010-04-24T05:03:50.678-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sequence'/><category scheme='http://www.blogger.com/atom/ns#' term='faults'/><category scheme='http://www.blogger.com/atom/ns#' term='error'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2 esb'/><category scheme='http://www.blogger.com/atom/ns#' term='proxy'/><title type='text'>WSO2 ESB Tips &amp; Tricks 05: Error Handling with Sequences and Proxy Services</title><content type='html'>&lt;div style="text-align: justify;"&gt;The job of an Enterprise Service Bus is to act as the backbone of an organization’s SOA. It is the spine through which all the systems and applications within the enterprise communicate with each other. At times an ESB might even help to integrate internal systems with external applications so that complex cross cutting business tasks such as supply chain management and customer relationship management can be carried out with precision and in perfect synchronism. As such an ESB often has to deal with many wire level protocols, messaging standards and remote APIs. But applications and networks are full of errors.  Applications often crash due to various bugs. Network routers and links often get into states where they cannot pass messages through with the expected efficiency. These error conditions are very likely to cause a fault or trigger a runtime exception in the ESB. A good ESB should provide simple yet powerful mechanisms for dealing with such errors. So today, I’m going to discuss a little bit about error handling options provided in &lt;a href="http://wso2.org/projects/esb"&gt;WSO2 ESB&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;WSO2 ESB gives you the concept of fault sequences. A fault sequence is just like any other sequence, a collection of mediators. A fault sequence can be associated with another sequence or a proxy service. When the sequence or the proxy service encounters an error during mediation or while forwarding a message out, the message which triggered the error will be delegated to the specified fault sequence. Using the available mediators we can log the erroneous message, forward it to a special error tracking service, send a SOAP fault back to the client indicating the error or even send a mail to the system admin. It is not mandatory to associate each sequence and proxy service with a fault sequence. In situations where a fault sequence is not specified explicitly, a default fault sequence will be used to handle errors. &lt;a href="http://wso2.org/project/esb/java/2.1.3/docs/samples/message_mediation_samples.html#Sample4"&gt;Sample 4&lt;/a&gt; in WSO2 ESB documentation shows how to specify a fault sequence with a regular mediation sequence.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Whenever an error occurs in WSO2 ESB, the mediation engine attempts to provide as much information as possible on the error to the user. This is done by initializing a set of property values on the erroneous message. These properties are:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;ERROR_CODE&lt;/li&gt;&lt;li&gt;ERROR_MESSAGE&lt;/li&gt;&lt;li&gt;ERROR_DETAIL&lt;/li&gt;&lt;li&gt;ERROR_EXCEPTION&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Within the fault sequence we can access these property values using the get-property XPath function. Sample 4 uses the log mediator as follows to log the actual error message:&lt;/div&gt;&lt;pre&gt;&amp;lt;log level="custom"&amp;gt;&lt;br /&gt;  &amp;lt;property name="text" value="An unexpected error occured"/&amp;gt;&lt;br /&gt;  &amp;lt;property name="message" expression="get-property('ERROR_MESSAGE')"/&amp;gt;       &lt;br /&gt;&amp;lt;/log&amp;gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;Note how the ERROR_MESSAGE property is being used to get the error message text. You can also write special custom mediators for error handling tasks. In such cases you can use the MessageContext API to retrieve above mentioned property values from the message.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;String errorMsg = (String) messageContext.getProperty(“ERROR_MESSAGE”);&lt;/div&gt;&lt;div&gt;Exception e = (Exception) messageContext.getProperty(“ERROR_EXCEPTION”);&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;WSO2 ESB also makes it possible to send a SOAP fault back to the client whenever an exception occurs in the ESB. This is done using the makeFault mediator. The makeFault mediator converts the current message into a SOAP fault. The user can specify the error code and the reason statement to be included in the fault message. Once the SOAP fault is constructed it can be sent to the client using the send mediator. &lt;a href="http://wso2.org/project/esb/java/2.1.3/docs/samples/message_mediation_samples.html#Sample5"&gt;Sample 5&lt;/a&gt; in WSO2 ESB documentation shows exactly how to do this.  Here’s the makeFault mediator configuration from sample 5:&lt;/div&gt;&lt;pre&gt;&amp;lt;makefault&amp;gt;&lt;br /&gt;  &amp;lt;code value="tns:Receiver" xmlns:tns="http://www.w3.org/2003/05/soap-envelope"/&amp;gt;           &lt;br /&gt;  &amp;lt;reason expression="get-property('ERROR_MESSAGE')"/&amp;gt;&lt;br /&gt;&amp;lt;/makefault&amp;gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;Note how the ERROR_MESSAGE property is used to set the original error message as the reason phrase of the SOAP fault. Keep in mind that the makeFault mediator only converts the message into a fault message. To send it to a client or an endpoint you need to use the send mediator. In sample 5 we mark the message as a response using the property mediator and invoke the send mediator so that it is sent back to the client which sent the original request.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Assume you want to send an E-Mail to the system admin whenever the ESB encounters an error. How do you do it? You simply need to enable the &lt;a href="http://wso2.org/project/esb/java/2.1.3/docs/samples_setup_guide.html#mailsender"&gt;mail transport sender&lt;/a&gt; in the ESB configuration (by editing the axis2.xml file or using the UI). Configure the transport sender with the appropriate mail server settings. Then in your fault sequence you can simply use the send mediator as follows to send an E-Mail out.&lt;/div&gt;&lt;pre&gt;&amp;lt;property name="Subject" value="An Error Occurred in the ESB" scope="transport"/&amp;gt;&lt;br /&gt;&amp;lt;property name="OUT_ONLY" value="true"/&amp;gt;&lt;br /&gt;&amp;lt;send&amp;gt;   &lt;br /&gt;  &amp;lt;endpoint&amp;gt;       &lt;br /&gt;     &amp;lt;address uri=”mailto:admin@yourdomain.com”/&amp;gt;&lt;br /&gt;  &amp;lt;/endpoint&amp;gt;&lt;br /&gt;&amp;lt;/send&amp;gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;So these are the error handling options available for sequences and proxy services in WSO2 ESB. It also provides some more error handling options for endpoints. That however is a different matter entirely and hence I’m leaving it for a future blog post.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-6214316350577486696?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/6214316350577486696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=6214316350577486696' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/6214316350577486696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/6214316350577486696'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2010/04/wso2-esb-tips-tricks-05-error-handling.html' title='WSO2 ESB Tips &amp; Tricks 05: Error Handling with Sequences and Proxy Services'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-6078365689099582535</id><published>2010-04-14T05:38:00.000-07:00</published><updated>2010-04-14T05:50:59.427-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jira'/><category scheme='http://www.blogger.com/atom/ns#' term='attack'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Apache Attacks: A Real Eye Opener</title><content type='html'>&lt;div style="text-align: justify;"&gt;It seems year 2010 is gradually turning into the year of cyber crimes. The year started off with news reports on a very sophisticated and targeted &lt;a href="http://googleblog.blogspot.com/2010/01/new-approach-to-china.html"&gt;attack on Google&lt;/a&gt; corporate infrastructure. According to Google, the attackers were successful in stealing valuable intellectual property. Now after about four months from the Google incident, a massive &lt;a href="https://blogs.apache.org/infra/entry/apache_org_04_09_2010"&gt;attack has been carried out on the Apache Software Foundation&lt;/a&gt;. Attackers have exploited a previously unknown vulnerability in the &lt;a href="http://www.atlassian.com/software/jira/"&gt;Atlassian JIRA&lt;/a&gt; instance used by the ASF, to gain root access to the server hosting the JIRA instance. Attackers also messed up the JIRA instance to install some sniffers that can capture and log user passwords. According to the Apache infra team a whole bunch of user passwords have been compromised as a result of the attack. This attack was later followed by &lt;a href="http://blogs.atlassian.com/news/2010/04/oh_man_what_a_day_an_update_on_our_security_breach.html"&gt;another attack&lt;/a&gt;, this time directly on the Atlassian IT infrastructure, which has also exploited the same security hole in JIRA. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Apache infra team did a pretty amazing job to mitigate the threat and take control of the situation. They have also taken some additional security measures to prevent such disasters in the future while Atlassian has rolled out patches for the aforementioned security hole.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;It is hard to imagine what makes somebody attack the ASF IT infrastructure. The whole world knows that we are just doing non-profit, voluntary work at ASF. Nobody gains a monetary benefit by attacking the ASF. May be it is just to compromise the passwords and get to the users/committers. Most people use the same password to login to multiple systems (Gmail, Facebook, Yahoo, Hotmail etc). So if the attacker can get the password for one system, he can gain access to all the other systems.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;All in all, this incident is a real eye opener to all of us surfing the Internet. No system is 100% safe and no system is invulnerable. An attacker with sufficient patience and skill will always find a way in. It is up to the users to be careful and minimize the chance of something horrible happening.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;Moral of the Story:&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;We should use multiple passwords to login to different systems as much as possible. We should use strong passwords at all times. And we should definitely change the passwords in a regular basis to mitigate the effects of a possible brute force attack. (We hear these stuff everyday but how many of us actually do it? That's the problem. We should actually put these guidelines into action.)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;PS: If you are an Apache committer and did not change the JIRA password yet, please do it NOW!!!&lt;/div&gt;&lt;div style="text-align: justify;"&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/4206392247746930256-6078365689099582535?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/6078365689099582535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=6078365689099582535' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/6078365689099582535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/6078365689099582535'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2010/04/apache-attacks-real-eye-opener.html' title='Apache Attacks: A Real Eye Opener'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-1177407631476483769</id><published>2010-04-12T04:31:00.000-07:00</published><updated>2010-04-12T04:48:55.143-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='jms'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><title type='text'>WSO2 ESB Tips &amp; Tricks 04: Troubleshooting JMS</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a href="http://wso2.org/projects/esb"&gt;WSO2 ESB&lt;/a&gt; works really well with JMS. The JMS transport adapter used by WSO2 ESB comes from the &lt;a href="http://ws.apache.org/axis2/"&gt;Apache Axis2&lt;/a&gt; project and it makes use of JNDI to connect to various JMS brokers. Therefore WSO2 ESB can work with pretty much any JMS broker that offers JNDI support. The product ships with sample configurations for &lt;a href="http://activemq.apache.org/"&gt;Apache ActiveMQ&lt;/a&gt; integration, but it can be easily modified for integration with a JMS broker like &lt;a href="http://www.ibm.com/software/integration/wmq/"&gt;IBM MQ&lt;/a&gt; or &lt;a href="http://www.swiftmq.com/"&gt;SwiftMQ&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Enabling JMS in WSO2 ESB is a simple 2-step process.&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Deploy the JMS client libraries to the repository/components/lib directory (these libraries will be used by the ESB to connect to the JMS broker)&lt;/li&gt;&lt;li&gt;Enable JMS transport receiver and the sender by modifying the axis2.xml file or using the management console&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Having followed the above mentioned process you can start creating JMS endpoints to forward messages and JMS proxy services to receive messages. However while implementing certain JMS related scenarios you might run into some error conditions. The rest of this blog post focuses on a couple of such commonly encountered problems and how to get rid of them, once and for all.&lt;/div&gt;&lt;div&gt;&lt;b&gt;CNF? NCDF?&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you ever run into any ClassNotFoundExceptions or NoClassDefFoundExceptions while using JMS support in WSO2 ESB, chances are you haven’t deployed all the required client libraries. Please inspect what you have copied into repository/components/lib directory and make sure the required class is available in one of the deployed jars.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Also note that WSO2 ESB ships with &lt;a href="http://geronimo.apache.org/"&gt;geronimo-jms&lt;/a&gt; library which contains the javax.jms packages. Therefore you do not have to deploy them again.&lt;/div&gt;&lt;div&gt;&lt;b&gt;HTTP Header Conversion Problem&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;When forwarding HTTP traffic to a JMS queue using WSO2 ESB, you might at times run into an error similar to the one given below.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;ERROR JMSSender Error creating a JMS message from the axis message context&lt;/div&gt;&lt;div&gt;javax.jms.MessageFormatException: MQJMS1058: Invalid message property name: Content-Type&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This exception is thrown by the JMS client libraries used to connect with your JMS broker and the problem is specific to the JMS broker being used. I have encountered this issue mostly with IBM Websphere MQ, but I guess there might be other broker implementations that may display the same issue.  So here’s what happens….&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The incoming HTTP message contains a bunch of HTTP headers that contain the ‘-‘ character. Some notable examples are ‘Content-length’ header and the ‘Transfer-encoding’ header. When ESB attempts to forward the message over JMS it sets the headers of the incoming message to the outgoing JMS message as JMS properties. According to the JMS spec the ‘-‘ character is prohibited in JMS property names. Some JMS brokers like ActiveMQ do not strictly check for this and hence they won’t complain. But certain other brokers will throw exceptions similar to the one shown above.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Even though the problem sounds very complex and tricky the solution is almost trivial. We just need to get rid of the troublemaking HTTP headers from the message before it is delivered over JMS. You can make use of the property mediator as follows to achieve this:&lt;/div&gt;&lt;pre&gt;&amp;lt;property action="remove" name="Content-Length" scope="transport"&amp;gt;&lt;br /&gt;&amp;lt;property action="remove" name="Accept-Encoding" scope="transport"&amp;gt;&lt;br /&gt;&amp;lt;property action="remove" name="User-Agent" scope="transport"&amp;gt;&lt;br /&gt;&amp;lt;property action="remove" name="Content-Type" scope="transport"&amp;gt;&lt;/pre&gt;&lt;div&gt;&lt;b&gt;JMS Property Data Type Mismatch&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Sometimes when the ESB attempts to forwards a message over JMS, the client libraries may complain, saying that the data type of a particular message property is invalid. You may often run into this problem if you are using the property mediator to manipulate property values set on the message.  This is because certain implementations of JMS, have restrictions on data types of properties.  The property mediator always sets property values as strings.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;To overcome this problem you will have to revise your mediation sequences and avoid manipulating property values which should contain non-string values. If you must set a non-string property value you will have to write a simple custom mediator to get the job done. Starting from WSO2 ESB 3.0 (scheduled to go out this month), the property mediator is type aware. Therefore to get rid of this problem you can set properties with specific data types. For an example if you want to set a property named foo with the integer value 12345 use the property mediator as follows:&lt;/div&gt;&lt;pre&gt;&amp;lt;property name="foo" value="12345" type="INTEGER" scope="transport/"&amp;gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;If you leave the type attribute out the property value will be set as a string.  &lt;/div&gt;&lt;div&gt;&lt;b&gt;Too Many Threads? Out of Memory?&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;With certain JMS brokers WSO2 ESB tends to spawn new worker threads indefinitely until it runs out of memory and crashes. I have observed this behavior with SwiftMQ. This problem is caused by a bug in the underlying Axis2 engine and there is a simple workaround to the problem. In your mediation sequence engage the property mediator as follows:&lt;/div&gt;&lt;pre&gt;&amp;lt;property action="remove" name="transportNonBlocking" scope="axis2"&amp;gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;This will prevent the ESB from creating new worker threads unlimitedly and everything will be back to normal. Note that you can always use a JMX client like &lt;a href="http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html"&gt;jconsole&lt;/a&gt; to monitor the active threads and memory consumption of the ESB.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-1177407631476483769?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/1177407631476483769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=1177407631476483769' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/1177407631476483769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/1177407631476483769'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2010/04/wso2-esb-tips-tricks-04-troubleshooting.html' title='WSO2 ESB Tips &amp; Tricks 04: Troubleshooting JMS'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-7201602443148366300</id><published>2010-01-08T21:22:00.000-08:00</published><updated>2010-01-08T21:28:58.689-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='avatar'/><category scheme='http://www.blogger.com/atom/ns#' term='movie'/><title type='text'>"I See You"</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://upload.wikimedia.org/wikipedia/en/thumb/b/b0/Avatar-Teaser-Poster.jpg/200px-Avatar-Teaser-Poster.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 297px;" src="http://upload.wikimedia.org/wikipedia/en/thumb/b/b0/Avatar-Teaser-Poster.jpg/200px-Avatar-Teaser-Poster.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;I saw it and it’s a beauty!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Went to see &lt;a href="http://www.avatarmovie.com/"&gt;Avatar&lt;/a&gt; last week with some friends, and I got only two words about the movie – “Frikkin Awesome”. It’s undoubtedly one of the best movies I’ve ever watched and definitely the best movie I’ve watched in last couple of years. Everything about Avatar is so fascinating. The plot, sceneries, special effects, music and just about everything else is near perfection. I also liked the message that movie attempts to give. Avatar is about people who are at the two ends of the spectrum. On one end we have people who are willing to engage in dirty act, commit any crime, kill anyone and destroy anything to earn a quick buck. On the other end of the spectrum there are people who are willing to sacrifice their lives to defend what is considered correct and uphold the moral values. The movie takes you through the conflict between these two types of people.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you still didn’t watch it you are not even a person. So make haste. It’s science fiction and fantasy at their very best. Also please do yourselves a favor by watching it on the big screen in a real theatre, rather than watching it on your home theatre system. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;Mr. James Cameron sir, you are a genius. Thank you loads to the actors and the behind screen team of Avatar for the great entertainment. And congratulations on breaking the record previously held by Return of the King for the &lt;a href="http://en.wikipedia.org/wiki/List_of_highest-grossing_films"&gt;second highest-grossing movie ever&lt;/a&gt;. With the way things have been going, may be even the first place (which is currently held by Titanic) is a possibility right now.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-7201602443148366300?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/7201602443148366300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=7201602443148366300' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/7201602443148366300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/7201602443148366300'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2010/01/i-see-you.html' title='&quot;I See You&quot;'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-2527088572425172416</id><published>2009-12-13T03:04:00.000-08:00</published><updated>2009-12-13T03:34:20.774-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='jms'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><title type='text'>WSO2 ESB Tips &amp; Tricks 03: Transport Switching</title><content type='html'>&lt;div style="text-align: left;"&gt;Back to WSO2 ESB Tips and Tricks!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Today we are going to see how to implement a transport switching scenario with &lt;a href="http://wso2.org/projects/esb"&gt;WSO2 ESB&lt;/a&gt;. WSO2 ESB supports receiving and sending messages over following transport and application layer protocols.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;HTTP/HTTPS&lt;/li&gt;&lt;li&gt;Mail protocols (POP3, IMAP, SMTP)&lt;/li&gt;&lt;li&gt;JMS / AMQP&lt;/li&gt;&lt;li&gt;VFS (Virtual File System)&lt;/li&gt;&lt;li&gt;FIX (Financial Information eXchange)&lt;/li&gt;&lt;li&gt;TCP&lt;/li&gt;&lt;li&gt;UDP&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;With WSO2 ESB having support for such a wide range of transports, it is easy to implement a scenario which involves receiving messages over one protocol and forwarding them over another. As an example I’m going to explain how to receive messages over HTTP and forward them over JMS, using &lt;a href="http://activemq.apache.org/"&gt;Apache Active MQ&lt;/a&gt; as the JMS provider. Looking at how most system integrators use WSO2 ESB it seems this is one of the most common use cases for ESB products.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The first thing we have to do is enable the JMS transport sender in the ESB. By default only the HTTP and HTTPS transports are enabled in the ESB configuration. But configuring and enabling other transports is a trivial task. Transports can be enabled by uncommenting the corresponding entries in the axis2.xml file or by using the ESB management console.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;First, shutdown the ESB if it is already running. Then we need to deploy the Active MQ JMS client libraries into the ESB runtime. Download and extract an Apache Active MQ binary distribution (I prefer v5.2). Copy the following jar files from the Active MQ lib directory to the ESB_HOME/repository/components/lib directory. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;geronimo-j2ee_management.jar&lt;/li&gt;&lt;li&gt;activemq-core.jar&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Also this would be a good time to start the Active MQ broker.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now start the ESB. The underlying Carbon platform will detect the newly deployed jar files and automagically convert them into OSGi bundles on the fly. Once the server has started go to the ESB_HOME/repository/components/dropins directory and do a file listing. You will see a set of OSGi bundles created out of the jar files you deployed.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now that the server is up and running login to the management console as an admin. Click on ‘Transports’ under ‘Manage’ on the left navigation bar. A list of available transport receivers and senders will be displayed.&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Agr7CcJVYp8/SyTNyNB-lII/AAAAAAAAAEU/5ZpPc3DB__E/s1600-h/trp-mgt.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 287px;" src="http://1.bp.blogspot.com/_Agr7CcJVYp8/SyTNyNB-lII/AAAAAAAAAEU/5ZpPc3DB__E/s400/trp-mgt.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5414678914381288578" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;Select the ‘Enable’ option for the JMS sender. Click on ‘Enable’ to start the JMS transport sender. Once started, you can further configure the transport by specifying various parameters. But for this demonstration we can go ahead with the default settings (ie no parameters).&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Agr7CcJVYp8/SyTNzPJmquI/AAAAAAAAAEk/P13beZMX10c/s1600-h/jms-sender-conf.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 135px;" src="http://1.bp.blogspot.com/_Agr7CcJVYp8/SyTNzPJmquI/AAAAAAAAAEk/P13beZMX10c/s400/jms-sender-conf.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5414678932130015970" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;If you prefer to enable the JMS sender the old school way open up the axis2.xml file in the conf directory and uncomment the following entry before starting the ESB.&lt;/div&gt;&lt;pre&gt;&amp;lt;transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender"/&amp;gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;Having enabled the JMS sender, we should now create a proxy service which will accept messages over HTTP and send them to a JMS endpoint. Click on ‘Add’ under ‘Proxy Services’ to start the proxy service creation wizard. On the first step simply specify a suitable name for the service (eg: JMSBridge) and click on ‘Next’.&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Agr7CcJVYp8/SyTNynECGgI/AAAAAAAAAEc/BdaC-tx7CWQ/s1600-h/step1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 241px;" src="http://3.bp.blogspot.com/_Agr7CcJVYp8/SyTNynECGgI/AAAAAAAAAEc/BdaC-tx7CWQ/s400/step1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5414678921369229826" /&gt;&lt;/a&gt;&lt;div style="text-align: justify;"&gt;On the second step of the wizard, create an anonymous in-sequence consisting of a property mediator. Configure the property mediator to set the ‘OUT_ONLY’ property to the value ‘true’. Save the in-sequence and create an anonymous endpoint for the proxy service. Specify the following JMS EPR as the target address. This EPR points to a dynamic queue named ‘SimpleStockQuoteService’ in Apache Active MQ broker.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;blockquote&gt;jms:/SimpleStockQuoteService?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&amp;amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;amp;java.naming.provider.url=tcp://localhost:61616&amp;amp;transport.jms.DestinationType=queue&lt;/blockquote&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In this scenario we will be doing a one-way invocation using the sample client application. In other words, the client sends a message to the ESB but does not expect a response in return. So the ESB should not expect a response from the backend JMS service either. We indicate this to the ESB by setting the OUT_ONLY property in the in-sequence of the proxy service. ESB will not register any call backs for messages containing the OUT_ONLY property thus no response would be expected.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Having specified the in-sequence and the target endpoint click on ‘Next’ to proceed to the third step of the wizard. Leave the out-sequence and the fault-sequence settings unchanged and simply click on ‘Finish’ to save and exit the wizard. A new proxy service will be deployed on the ESB at this point.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you prefer to create the above proxy using the ESB configuration language you can use the XML snippet given below.&lt;/div&gt;&lt;pre&gt;&amp;lt;syn:proxy name="JMSBridge" transports="https http" startOnLoad="true" trace="disable"&amp;gt;&lt;br /&gt;&amp;lt;syn:target&amp;gt;&lt;br /&gt;   &amp;lt;syn:endpoint&amp;gt;&lt;br /&gt;      &amp;lt;syn:address uri="jms:/SimpleStockQuoteService?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&amp;amp;java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&amp;amp;java.naming.provider.url=tcp://localhost:61616&amp;amp;transport.jms.DestinationType=queue"/&amp;gt;&lt;br /&gt;   &amp;lt;/syn:endpoint&amp;gt;&lt;br /&gt;   &amp;lt;syn:inSequence&amp;gt;&lt;br /&gt;      &amp;lt;syn:property name="OUT_ONLY" value="true" scope="default"/&amp;gt;&lt;br /&gt;   &amp;lt;/syn:inSequence&amp;gt;&lt;br /&gt;&amp;lt;/syn:target&amp;gt;&lt;br /&gt;&amp;lt;/syn:proxy&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;On the management console, click on the ‘Synapse’ link under ‘Configure’ and add the above XML as a child of the top level ‘definitions’ element. Click ‘Update’ to apply the changes.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now we are all set to run the scenario. Deploy the SimpleStockQuoteService into the sample Axis2 server. Open up the axis2.xml file for the sample Axis2 server and enable the JMS transport receiver in it. This file can be found at samples/axis2Server/repository/conf directory. To enable the JMS listener uncomment the following XML fragment.&lt;/div&gt;&lt;pre&gt;&amp;lt;transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener"&amp;gt;&lt;br /&gt;......&lt;br /&gt;&amp;lt;/transportReceiver&amp;gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;Finally start the sample Axis2 server. Since we have enabled the JMS receiver for the sample server, the SimpleStockQuote service will be exposed over JMS and the server will start listening on a JMS queue named ‘SimpleStockQuoteService’.  When you haven’t specified a queue name in the service configuration, the Axis2 JMS transport will by default listen on a queue with the same name as the service. To explicitly specify the queue name for a service one must set the transport.jms.Destination parameter as a service parameter (ie in the services.xml file).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Finally go to samples/axisClient and run the following command to send a one-way message to the ESB proxy service over HTTP. (Here we invoke the in-only placeOrder operation on the backend service)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;blockquote style="text-align: left;"&gt;&lt;pre&gt;ant stockquote –Daddurl=http://localhost:8280/services/JMSBridge –Dmode=placeorder&lt;/pre&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The ESB will take the message and forward it over JMS to the queue named ‘SimpleStockQuoteService’. The sample Axis2 server which is currently listening on this queue will pick up the message and process it. Note the following log entry in the Axis2 server log when it takes the message from the JMS queue.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;blockquote&gt;&lt;pre&gt;Sun Dec 13 16:15:39 IST 2009 samples.services.SimpleStockQuoteService  :: Accepted order for : 5789 stocks of IBM at $ 89.61765128551305&lt;/pre&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;So there you have it. The proxy service abstraction in WSO2 ESB makes it extremely simple to perform protocol conversions and route messages back and forth. I suggest you also have a look at the set of transport switching samples that come with WSO2 ESB distribution. We got samples covering all the major protocols and even some of the domain specific transports like FIX and AMQP. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;In my next post, I will focus on common problems that most developers encounter while implementing transport switching scenarios involving JMS and possible solutions to such pitfalls.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-2527088572425172416?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/2527088572425172416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=2527088572425172416' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/2527088572425172416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/2527088572425172416'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/12/wso2-esb-tips-tricks-03-transport.html' title='WSO2 ESB Tips &amp; Tricks 03: Transport Switching'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Agr7CcJVYp8/SyTNyNB-lII/AAAAAAAAAEU/5ZpPc3DB__E/s72-c/trp-mgt.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-1957773017321173731</id><published>2009-12-04T08:08:00.000-08:00</published><updated>2009-12-04T08:16:53.647-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='apachecon'/><title type='text'>Introduction to Apache Synapse @ Apache Asia 2009</title><content type='html'>&lt;div style="text-align: justify;"&gt;Yesterday (3rd December 2009) I conducted a technical presentation titled “Introduction to &lt;a href="http://synapse.apache.org"&gt;Apache Synapse&lt;/a&gt;” at the &lt;a href="http://foss.lk/events/apacheasia09/"&gt;Apache Asia Roadshow 2009&lt;/a&gt; held at Colombo, Sri Lanka. For everyone’s benefit I have published the presentation slides on &lt;a href="http://www.slideshare.net/hiranya911/introduction-to-apache-synapse"&gt;SlideShare&lt;/a&gt;. The presentation went well, and so far I have received pretty good feedback from the participants. There were a few very interesting questions from the audience at the end of the session too.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In this presentation I have addressed the areas like problems of enterprise integration, ESB pattern, key features of Synapse, Synapse architecture and the configuration model. I hope you will find it interesting and useful.&lt;/div&gt;&lt;div style="width:425px;text-align:left" id="__ss_2646983" align="center"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/hiranya911/introduction-to-apache-synapse" title="Introduction to Apache Synapse"&gt;Introduction to Apache Synapse&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=introductiontosynapsefinal-091204001939-phpapp02&amp;amp;stripped_title=introduction-to-apache-synapse"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=introductiontosynapsefinal-091204001939-phpapp02&amp;amp;stripped_title=introduction-to-apache-synapse" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;documents&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/hiranya911"&gt;Hiranya Jayathilaka&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-1957773017321173731?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/1957773017321173731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=1957773017321173731' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/1957773017321173731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/1957773017321173731'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/12/introduction-to-apache-synapse-apache.html' title='Introduction to Apache Synapse @ Apache Asia 2009'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-8170539492369065064</id><published>2009-11-25T05:03:00.000-08:00</published><updated>2009-11-25T20:59:51.761-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='xpath'/><category scheme='http://www.blogger.com/atom/ns#' term='cbr'/><title type='text'>WSO2 ESB Tips &amp; Tricks 02: Content Based Routing</title><content type='html'>&lt;div style="text-align: justify;"&gt;Content based routing (CBR) is one of the most fundamental and widely used features of an ESB. Most integration scenarios involve situations where we need to analyze the content of a message and route it to a predefined endpoint based on the results. Depending on the actual requirements the ESB will have to inspect the message headers, message body or both.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;For an example take a situation where you have two servers, server-A and server-B, that host an order processing service. Assume that server-A takes an hour to process an order whereas server-B takes over two hours. You could use something like &lt;a href="http://wso2.org/projects/esb"&gt;WSO2 ESB&lt;/a&gt; to do CBR and provide a better service to the clients who are placing order requests on the servers. You can configure the ESB to analyze the request content and somehow identify the high priority requests based on a certain criteria. Such requests can be forwarded to server-A and the other requests can be forwarded to server-B. This way you can assure a better service to the clients who are placing high priority orders.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;So how exactly do we implement a CBR scenario with WSO2 ESB? WSO2 ESB provides mediators like the filter mediator and the switch mediator for this task. I will now explain how to employ the filter mediator and get a simple CBR scenario up and running with WSO2 ESB.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Start the server and login to the management console. Click on “Sequences” and select the “Edit” option for the “main” sequence. Start by deleting all the child mediators already present in the sequence. To delete a mediator simply click on it and select the delete option from the little popup thingy that appears.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now add an “In” mediator and an “Out” mediator to the sequence. Then add a “Filter” mediator as the first child of the “In” mediator. “Filter” mediator will appear on the editor with two more child mediators – “Then” mediator and the “Else” mediator. Let’s leave them as they are for the moment and configure the “Filter” mediator as follows.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;On the “Filter” mediator configuration form (just below the editor window) select the “Source and Regular Expression” option. If you cannot see this form on your browser just click on the “Filter” mediator icon on the editor and it will appear on the screen. Specify the following parameters for the source and regular expression fields.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;Source: //m0:getQuote/m0:request/m0:symbol&lt;/li&gt;&lt;li&gt;Regex: IBM&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Agr7CcJVYp8/Sw00iiiI1VI/AAAAAAAAAEI/It0XzAjpq9o/s1600/filter.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 101px;" src="http://2.bp.blogspot.com/_Agr7CcJVYp8/Sw00iiiI1VI/AAAAAAAAAEI/It0XzAjpq9o/s400/filter.png" alt="" id="BLOGGER_PHOTO_ID_5408036495532021074" border="0" /&gt;&lt;/a&gt;Now click on the “Namespaces” link and define the following namespace.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Prefix: m0&lt;/li&gt;&lt;li&gt;URL: http://services.samples&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Agr7CcJVYp8/Sw00ifeiUHI/AAAAAAAAAEA/WffH-Y05r9o/s1600/ns.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 220px;" src="http://3.bp.blogspot.com/_Agr7CcJVYp8/Sw00ifeiUHI/AAAAAAAAAEA/WffH-Y05r9o/s400/ns.png" alt="" id="BLOGGER_PHOTO_ID_5408036494711607410" border="0" /&gt;&lt;/a&gt;Exit the namespace editor popup and click on the “Update” button to save the changes made to the “Filter” mediator configuration. Now click on “Then” mediator and select the “Add Child” option from the little popup menu. Add a “Send” mediator as the child of the “Then” mediator. Specify an anonymous endpoint for the send mediator. Provide the address http://localhost:9000/services/SimpleStockQuoteService for the anonymous endpoint.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Once you are done with that click on “Else” mediator. Again add a “Send” mediator as a child. Specify the address http://localhost:9001/services/SimpleStockQuoteService as an anonymous endpoint for the send mediator.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Finally add another “Send” mediator as a child of the “Out” mediator which we added earlier. Do not specify any endpoints for that.&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Agr7CcJVYp8/Sw00hzqWLII/AAAAAAAAAD4/RpkBNdbbGiM/s1600/main.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 250px;" src="http://1.bp.blogspot.com/_Agr7CcJVYp8/Sw00hzqWLII/AAAAAAAAAD4/RpkBNdbbGiM/s400/main.png" alt="" id="BLOGGER_PHOTO_ID_5408036482949983362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Save and close the sequence editor. We are now ready to run the scenario.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you prefer to work with the Synapse configuration language and want to implement this scenario by manually editing the configuration you can use the following XML sequence configuration. Simply click on the “Synapse” link under “Configure” in the management console and locate the configuration for the “main” sequence. Replace it with the following XML snippet.&lt;/div&gt;&lt;pre&gt;&amp;lt;syn:sequence name="main"&amp;gt;&lt;br /&gt;&amp;lt;syn:in&amp;gt;&lt;br /&gt;   &amp;lt;syn:filter xmlns:m0="http://services.samples" source="//m0:getQuote/m0:request/m0:symbol" regex="IBM"&amp;gt;&lt;br /&gt;       &amp;lt;syn:then&amp;gt;&lt;br /&gt;           &amp;lt;syn:send&amp;gt;&lt;br /&gt;               &amp;lt;syn:endpoint&amp;gt;&lt;br /&gt;                   &amp;lt;syn:address uri="http://localhost:9000/services/SimpleStockQuoteService"/&amp;gt;&lt;br /&gt;               &amp;lt;/syn:endpoint&amp;gt;&lt;br /&gt;           &amp;lt;/syn:send&amp;gt;&lt;br /&gt;       &amp;lt;/syn:then&amp;gt;&lt;br /&gt;       &amp;lt;syn:else&amp;gt;&lt;br /&gt;           &amp;lt;syn:send&amp;gt;&lt;br /&gt;               &amp;lt;syn:endpoint&amp;gt;&lt;br /&gt;                   &amp;lt;syn:address uri="http://localhost:9001/services/SimpleStockQuoteService"/&amp;gt;&lt;br /&gt;               &amp;lt;/syn:endpoint&amp;gt;&lt;br /&gt;           &amp;lt;/syn:send&amp;gt;&lt;br /&gt;       &amp;lt;/syn:else&amp;gt;&lt;br /&gt;   &amp;lt;/syn:filter&amp;gt;&lt;br /&gt;&amp;lt;/syn:in&amp;gt;&lt;br /&gt;&amp;lt;syn:out&amp;gt;&lt;br /&gt;   &amp;lt;syn:send/&amp;gt;&lt;br /&gt;&amp;lt;/syn:out&amp;gt;&lt;br /&gt;&amp;lt;/syn:sequence&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;Before we run this scenario let’s try to figure out what it is supposed to do. T&lt;span style="font-weight: bold;"&gt;he “In” mediator will take all the incoming requests&lt;/span&gt; and hand them over to the “Filter” mediator which evaluates an XPath expression on the content (Yes – this is the XPath we specified as the 'Source' parameter earlier. It simply extracts a text value from the SOAP payload). We extract a value from the message payload and perform a regular expression match on it (Out regex is “IBM”). If the regular expression matches, the message will be handed to the “Then” mediator or else it will be given to the “Else” mediator. Both these mediators invoke the “Send” mediator but on two different endpoints, so that the incoming requests are sent to one of two endpoints depending on the result of the XPath evaluation and the regular expression match. &lt;span style="font-weight: bold;"&gt;The “Out” mediator grabs all the responses&lt;/span&gt; coming back from the endpoints and invokes the “Send” mediator. Since we haven’t specified a target endpoint for this “Send” mediator, responses will be sent back to the clients based on the addressing information available on the message.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;That sounds simple enough. Let’s run this scenario. First go to the directory ESB_HOME/samples/axis2Server/src/SimpleStockQuoteService and deploy the sample service by running the command “ant” (you need to have Apache ANT installed). Then go to ESB_HOME/samples/axis2Server and run the following two commands on two different shells/command prompts. (Run the commands applicable to your platform)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Unix/Linux:&lt;br /&gt;./axis2server.sh –http 9000 –https 9005&lt;br /&gt;./axis2server.sh –http 9001 –https 9006&lt;br /&gt;&lt;br /&gt;Windows:&lt;br /&gt;axis2server.bat –http 9000 –https 9005&lt;br /&gt;axis2server.bat –http 9001 –https 9006&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;These two commands will start two Axis2 instances, one running on port 9000 and the other running on port 9001. To invoke the sample client go to ESB_HOME/samples/axis2Client and execute the following command.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;blockquote&gt;ant stockquote –Daddurl=http://localhost:8280 –Dsymbol=IBM&lt;/blockquote&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This will send a message to the ESB with the string “IBM” in the payload. This will match the regular expression and hence will be forwarded to the server running on port 9000. Check out the console where you started that server instance for confirmation. You should see something like this.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;blockquote&gt;Wed Nov 25 18:48:57 IST 2009 samples.services.SimpleStockQuoteService :: Generating quote for : IBM&lt;/blockquote&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now again invoke the client as follows.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;blockquote&gt;ant stockquote –Daddurl=http://localhost:8280 –Dsymbol=MSFT&lt;/blockquote&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This will send a message to the ESB with the string “MSFT” in the payload and voila! The regular expression match will fail causing the message to be forwarded to port 9001. Check the Axis2 log for confirmation.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style="text-align: left;"&gt;Wed Nov 25 18:48:49 IST 2009 samples.services.SimpleStockQuoteService :: Generating quote for : MSFT&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;So there you go – CBR made easy by WSO2 ESB. The filter mediator brings if-else like semantics into the mediation logic. The ESB also has a switch mediator. Just guess what semantics that can bring into the mediation. And then of course we have the router mediator to implement complex CBR scenarios. If you are interested in learning more about CBR support available in WSO2 ESB then you can have a look at the following samples. These 2 samples are shipped with WSO2 ESB so you can try them out all by yourself.&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wso2.org/project/esb/java/2.1.1/docs/samples/message_mediation_samples.html#Sample1"&gt;Simple CBR with WSO2 ESB&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wso2.org/project/esb/java/2.1.1/docs/samples/message_mediation_samples.html#Sample2"&gt;Switch mediator&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-8170539492369065064?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/8170539492369065064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=8170539492369065064' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8170539492369065064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8170539492369065064'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/11/wso2-esb-tips-tricks-02-content-based.html' title='WSO2 ESB Tips &amp; Tricks 02: Content Based Routing'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Agr7CcJVYp8/Sw00iiiI1VI/AAAAAAAAAEI/It0XzAjpq9o/s72-c/filter.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-8370269403433681481</id><published>2009-11-20T20:42:00.000-08:00</published><updated>2009-11-20T21:01:00.219-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='sequence'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='mediation'/><category scheme='http://www.blogger.com/atom/ns#' term='proxy'/><title type='text'>WSO2 ESB Tips &amp; Tricks 01: Sequences and Proxy Services</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;As promised, here is the first article of the “WSO2 ESB Tips &amp;amp; Tricks” series. The main objective of this post is to introduce two very important functional components of the ESB, namely sequences and proxy services. These are perhaps the most commonly used functional components of &lt;a href="http://wso2.org/projects/esb"&gt;WSO2 ESB&lt;/a&gt;. They can be used to implement even the most complex of messaging systems and enterprise integration patterns using the service bus. During the course of this article I will briefly explain some of the use cases of sequences and proxy services along with some useful information on how to use them in WSO2 ESB.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;WSO2 ESB supports four modes of operation.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ol&gt;&lt;li&gt;Service mediation&lt;/li&gt;&lt;li&gt;Message mediation&lt;/li&gt;&lt;li&gt;Task scheduling&lt;/li&gt;&lt;li&gt;Eventing&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In the service mediation mode, WSO2 ESB acts as a proxy to a real Web Service hosted in a Web Services container like Apache Axis2 or WSO2 WSAS.  The ESB exposes a virtual Web Service which can accept requests from clients. The requests are processed, mediated and forwarded to the actual service implementation by the ESB. Any responses coming from the service implementation are mediated and forwarded to the clients. Proxy services are used to get the ESB operating in this mode.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In the message mediation mode, WSO2 ESB functions as a message router. It can filter, transform, drop messages or forward them to remote endpoints for further processing when operating in this mode. Sequences are used to define the message mediation behavior of the ESB. A sequence is a series of mediators, where each mediator is an entity that can accept messages and carry out a predefined task on them. WSO2 ESB provides you with a wide range of mediators designed to carry out various processing tasks on the messages. You can mix and match these available mediators to develop sequences. For instance a sequence comprising of the log mediator and the send mediator will act as a simple log-and-forward message flow. You can have any number of mediators in a sequence and a sequence can also dispatch messages to other sequences if needed.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;A proxy service is a combination of three sequences and a target endpoint. The target endpoint is for the actual service implementation to which the messages will be forwarded after mediation. The three sequences are as follows.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;In-sequence: All the incoming requests to the proxy service are dispatched to the in-sequence. This sequence defines how the requests should be processed before forwarding them to the target endpoint.&lt;/li&gt;&lt;li&gt;Out-sequence: All the responses coming back from the backend service implementation are dispatched to this sequence. It defines how the responses should be handled before sending them back to the clients. The out sequence can also forward the responses to a given service endpoint, thus effectively linking up multiple services. This way a single request to the proxy service will trigger multiple service invocations. The response from the 1st service is fed to the 2nd service as the request.&lt;/li&gt;&lt;li&gt;Fault sequence: If an error occurs during service mediation the faulty message is handed to the fault sequence for error handling work. Depending on our requirements the fault sequence can be used log the error, ignore it or send a SOAP fault back to the client indicating that something went wrong.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now that you have a basic understanding of sequences and proxy services let’s take a look at some of the use cases where these components come in handy. Proxy services can be used to expose an existing service over a different schema (message format). In scenarios like this one, proxy services can transform the messages flowing back and forth. Also since proxy services can be exposed over multiple transports they can be used to expose an existing service over a different transport. For an example we can take a simple HTTP service and expose it over JMS by creating a proxy service for the HTTP service and exposing it over JMS. The ESB will take care of switching the communication protocols. In addition, proxy services are useful in adding QoS features (security, RM etc) to ordinary message flows. As an example, we can take an unsecured service, create a proxy service for it and engage security on the proxy service to add security to the backend service implementation.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Sequences can be used to audit, filter, control and transform messages flowing through a network. Certain advanced features like access control, load balancing and fail over are also possible with sequences. In WSO2 ESB all the incoming messages which are not destined to a proxy service are dispatched to the “main” sequence. The main sequence can further distribute them to other sequences and they in turns can call even more sequences. This is somewhat analogous to how a C program works. The application runtime invokes the main procedure and it in turns can call other procedures.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Enough with the theory! Let’s get practical and see how to create sequences and proxy services in WSO2 ESB. Here actually you have several options. You can either use the XML based Synapse configuration language to define sequences and proxy services, or use the set of graphical tools that come with WSO2 ESB. To create a sequence graphically, first start the ESB server and logon to the management console. (By default the web based console is accessible at https://localhost:9443/carbon) Sign in as an administrator (By default the username and the password are both “admin”). Click on the “Sequences” option in the left panel. This will show you a list of existing sequences. By default the “main” sequence and the global “fault” sequence is listed on this page.&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://2.bp.blogspot.com/_Agr7CcJVYp8/SwdxbnoydwI/AAAAAAAAADQ/4Pxp8Evh5dw/s400/seq_list.png" /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;To create a new sequence, click on “Add Sequence”. This will bring up the on-line sequence editor. Start by giving a name to the sequence. Then go ahead and start adding mediators.&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://1.bp.blogspot.com/_Agr7CcJVYp8/SwdxcL8X_JI/AAAAAAAAADY/SvDVPMrawTQ/s400/seq_editor.png" /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;To further customize the behavior of a mediator instance click on the mediator and a dialog box will appear just below the sequence editor panel. Once you are done creating the sequence click on “Save” to save and close the editor. The newly created sequence will now show up on the list of available sequences. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;Ceating a proxy service is just as easy. Click on the Proxy Service link in the left panel to start the proxy service creation wizard.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Simply go through the 3-step wizard and specify an in-sequence, target endpoint, out-sequence and a fault sequence for the proxy service. When specifying these items you can either import an already existing sequence/endpoint or create one on the spot by selecting the “Anonymous” option.&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://3.bp.blogspot.com/_Agr7CcJVYp8/SwdxcxjSqlI/AAAAAAAAADo/j7UiWEAvADk/s400/seq_epr.png" /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Once you finish the wizard the new service will get created and deployed on the server. If you gave the name “FooProxy” to the service it will be exposed on the HTTP endpoint http://localhost:8280/services/FooProxy.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now if you click on the “Synapse” link on the left navigation bar you can see that the overall ESB configuration has been updated with your changes.&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://4.bp.blogspot.com/_Agr7CcJVYp8/SwdxdCT2VeI/AAAAAAAAADw/Z5gTINBfu2A/s400/synapse.png" /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The UI also allows you to enable statistics collection on sequences and proxy services, enable tracing on them and modifying their configuration. Play around with the various options available to you and get familiar with sequences, proxy services and the ESB management console. We will be using these a lot in the days to come.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-8370269403433681481?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/8370269403433681481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=8370269403433681481' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8370269403433681481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8370269403433681481'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/11/wso2-esb-tips-tricks-01-sequences-and.html' title='WSO2 ESB Tips &amp; Tricks 01: Sequences and Proxy Services'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Agr7CcJVYp8/SwdxbnoydwI/AAAAAAAAADQ/4Pxp8Evh5dw/s72-c/seq_list.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-6957600811156133877</id><published>2009-11-19T21:24:00.000-08:00</published><updated>2009-11-19T21:42:01.526-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='registry'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='identity'/><category scheme='http://www.blogger.com/atom/ns#' term='mashup'/><category scheme='http://www.blogger.com/atom/ns#' term='bps'/><title type='text'>New Kids in Town</title><content type='html'>&lt;div style="text-align: justify;"&gt;The team at WSO2 just released the latest version of WSO2 Carbon (v2.0.2) along with a whole bunch of Carbon based products. Log on to the &lt;a href="http://wso2.org"&gt;WSO2 Oxygen Tank&lt;/a&gt; to lay your hands on the following smoking hot releases, right from the WSO2 oven ;)&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;WSO2 Enterprise Service Bus v2.1.2&lt;/li&gt;&lt;li&gt;WSO2 Web Services Application Server v3.1.2&lt;/li&gt;&lt;li&gt;WSO2 Business Process Server v1.1.0&lt;/li&gt;&lt;li&gt;WSO2 Mashup Server v2.0.1&lt;/li&gt;&lt;li&gt;WSO2 Identity Server v2.0.2&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;You will be particularly interested in our Business Process Server and Mashup Server releases since we haven't done any releases of them for a fairly long time. Needless to say that all new releases have many new features, bug fixes and enhancements over the previous versions. So download today and experience the power of SOA.&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/4206392247746930256-6957600811156133877?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/6957600811156133877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=6957600811156133877' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/6957600811156133877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/6957600811156133877'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/11/new-kids-in-town.html' title='New Kids in Town'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-7754502998331617274</id><published>2009-11-15T06:04:00.000-08:00</published><updated>2009-11-15T06:30:43.331-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>Introducing "WSO2 ESB Tips and Tricks"</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a href="http://wso2.org/projects/esb"&gt;WSO2 ESB&lt;/a&gt; has kept me quite busy for the last couple of months. The ESB 2.1 release in July was soon followed by a 2.1.1 release and work is now underway for the 2.1.2 release. That’s way too much activity in such a short period, for an open source project. Anyway, since I’m spending a lot of time working on WSO2 ESB, I thought I might as well blog about my work in a regular basis. So in the next few months, I will be publishing a series of blog posts regarding WSO2 ESB and how to use it to implement real life integration scenarios. This series of blogs, which I have named “WSO2 ESB Tips and Tricks”, will surely benefit many folks who are either just learning SOA concepts or looking to integrate a bunch of apps using an ESB.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;You can consider this post to be the 0th article of the “WSO2 ESB Tips and Tricks” series. So before I move on to the 1st post of the series I think I should briefly describe what WSO2 ESB is and why you should consider it as an option for enterprise integration. So here goes:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;WSO2 ESB is a fast and lightweight, enterprise service bus. It is based on &lt;a href="http://synapse.apache.org"&gt;Apache Synapse&lt;/a&gt;, the lightweight ESB from the &lt;a href="http://apache.org"&gt;ASF&lt;/a&gt; (speaking of which, “Happy Birthday ASF”). &lt;b&gt;It supports many messaging standards including SOAP, WS-* standards and REST as well as a variety of application and transport layer protocols like HTTP/S, Mail, JMS, VFS, AMQP, TCP and FIX&lt;/b&gt;. WSO2 ESB comes with a rich collection of mediators and other functional components which can be used out of the box to implement even the most complex integration patterns. Message routing, transformation, protocol switching, load balancing, clustering and service chaining are some of the common features supported by WSO2 ESB. Controlling and managing WSO2 ESB is also a trivial task thanks to the Web based management. &lt;b&gt;Many of the common system administration tasks such as user management, certificate management and statistics collection are all available as inbuilt features of the server and the management console.&lt;/b&gt;  WSO2 ESB is shipped with an embedded WSO2 Governance Registry, which makes it easy to store and manage SOA metadata. In addition to that the ESB can be configured to work with an externally hosted WSO2 Governance Registry if needed.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;WSO2 ESB is also based on &lt;a href="http://wso2.org/projects/carbon"&gt;WSO2 Carbon&lt;/a&gt;, the OSGi based components framework for SOA. WSO2 Carbon makes it possible to easily install and configure additional features into the ESB runtime. Custom code and third part libraries can also be deployed into the server without any hassle.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Perhaps the best thing about WSO2 ESB (apart from it being super fast) is that it is totally free and open source. Binary and source distributions are available for download through the &lt;a href="http://wso2.org"&gt;WSO2 Oxygen Tank&lt;/a&gt;. All artifacts are released under the business friendly Apache Software License 2.0.  WSO2 also offers &lt;a href="http://wso2.com/support/"&gt;training and commercial support&lt;/a&gt; for users that require them.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;As I have already mentioned a couple of times, WSO2 ESB is well known as a fast ESB. It can easily handle over 2500 transactions per second while maintaining constant memory usage. This level of performance is neither a coincidence nor an accident, but by clever and careful design. Two of the most significant features of WSO2 ESB architecture can be listed as follows:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;Non-blocking HTTP transport : The HTTP server worker threads of the ESB do not get blocked over network I/O. The &lt;a href="http://hc.apache.org/httpcomponents-core/httpcore-nio/index.html"&gt;Apache HTTP Core-NIO&lt;/a&gt; based transport makes it possible to accept many concurrent connections and process more messages than any other Java HTTP transport implementation.&lt;/li&gt;&lt;li&gt;Pull Parsing and Streaming Model: WSO2 ESB uses &lt;a href="http://ws.apache.org/commons/axiom/"&gt;Apache AXIOM&lt;/a&gt;, the StAX based XML infoset model. Therefore it does not build the object model for incoming messages, unless it has to. Incoming bytes are streamed through the ESB without touching the payload. This reduces memory usage significantly and also saves many valuable CPU cycles.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;These architectural elements combine with the Carbon framework to deliver the best performance imaginable along with seamless modularization. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;Some of the latest features that we have added to WSO2 ESB like rule based mediation and EDA (Eventing) support make WSO2 ESB suitable for implementing even the most complicated SOA platforms.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I think this explanation pretty much justifies why you should give WSO2 ESB a try. It is fast, feature rich and user friendly by all means. And don’t forget, it’s free and open source too. So grab a copy of the latest binary distribution today and get started. If you need any help we got tons of free documentation and articles on the WSO2 Oxygen Tank. This is in addition to our mailing lists and user forums.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I hope you will enjoy the “WSO2 ESB Tips and Tricks”.&lt;/div&gt;&lt;div style="text-align: justify;"&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/4206392247746930256-7754502998331617274?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/7754502998331617274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=7754502998331617274' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/7754502998331617274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/7754502998331617274'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/11/introducing-wso2-esb-tips-and-tricks.html' title='Introducing &quot;WSO2 ESB Tips and Tricks&quot;'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-3254458372830212209</id><published>2009-09-18T23:03:00.000-07:00</published><updated>2009-09-18T23:49:47.713-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='utah'/><category scheme='http://www.blogger.com/atom/ns#' term='history'/><category scheme='http://www.blogger.com/atom/ns#' term='museum'/><title type='text'>A Tour to the Past</title><content type='html'>&lt;div style="text-align: left;"&gt;Something non-technical for a change today.....&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I've always wanted to visit a museum and see some artifacts from the Jurassic age. I'm very enthusiastic about learning more about the giant lizards that roamed the earth millions of years ago and I've always wished that I could see those gigantic dinosuar fossils live, without a TV screen. Finally I got the opportunity when I was in Salt Lake City, Utah, a few weeks back. The &lt;a href="http://www.umnh.utah.edu/"&gt;Utah Museum of Natural History&lt;/a&gt; is a fascinating place with lots of things to see, learn and do. They exhibit some very rare artifacts illustrating the Jurassic ages, world history, American history, geography and plant and wildlife. What I liked most was that instead of just seeing stuff, the museum has lots of facilities where you can watch educational videos, read books and managazines and take part in interactive games and activities. The use of modern technology in the musuem is mind blowing.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;img src="http://1.bp.blogspot.com/_Agr7CcJVYp8/SrR6TRvdLQI/AAAAAAAAACo/Jm9VTaKNPHc/s400/IMG_6763.JPG" style="display:block; margin:0px auto 10px; text-align:left;cursor:pointer; cursor:hand;width: 400px; height: 300px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5383061926213135618" /&gt;&lt;img src="http://2.bp.blogspot.com/_Agr7CcJVYp8/SrR6S-YIPcI/AAAAAAAAACg/MfGorAfNGls/s400/IMG_6753.JPG" style="display:block; margin:0px auto 10px; text-align:right;cursor:pointer; cursor:hand;width: 400px; height: 300px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5383061921015020994" /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The musuem has special admittance rates for University students (you just need to show your student ID) and they have a special gallery named "Toadally Frogs", dedicated to kids, featuring some rare species of toads and frogs.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Agr7CcJVYp8/SrR6VNtZ4uI/AAAAAAAAADA/rB57InDghNw/s1600-h/IMG_6766.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_Agr7CcJVYp8/SrR6VNtZ4uI/AAAAAAAAADA/rB57InDghNw/s400/IMG_6766.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5383061959490527970" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Agr7CcJVYp8/SrR6Ur_3kKI/AAAAAAAAAC4/eQa28BmoRrk/s1600-h/IMG_6765.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_Agr7CcJVYp8/SrR6Ur_3kKI/AAAAAAAAAC4/eQa28BmoRrk/s400/IMG_6765.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5383061950441164962" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;It indeed was a wonderful and fulfilling experience vsiting the natural history musuem of Utah. If you are visiting Salt Lake City, make sure you allocate some time to go and visit this exceptional place. Oh and did I mention that they have a huge collection of natural minerals and rare stones along with a gallery full of live insects? You don't wanna miss those.&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Agr7CcJVYp8/SrR6T2mAIcI/AAAAAAAAACw/ozZ_M04EZN0/s1600-h/IMG_6764.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_Agr7CcJVYp8/SrR6T2mAIcI/AAAAAAAAACw/ozZ_M04EZN0/s400/IMG_6764.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5383061936105595330" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Agr7CcJVYp8/SrR8194aX0I/AAAAAAAAADI/6del4FrGoQ0/s1600-h/IMG_6768.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_Agr7CcJVYp8/SrR8194aX0I/AAAAAAAAADI/6del4FrGoQ0/s400/IMG_6768.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5383064721200668482" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-3254458372830212209?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/3254458372830212209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=3254458372830212209' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/3254458372830212209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/3254458372830212209'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/09/tour-to-past.html' title='A Tour to the Past'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Agr7CcJVYp8/SrR6TRvdLQI/AAAAAAAAACo/Jm9VTaKNPHc/s72-c/IMG_6763.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-631451760109877993</id><published>2009-09-12T23:26:00.002-07:00</published><updated>2009-09-13T00:52:05.036-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='websphere mq'/><category scheme='http://www.blogger.com/atom/ns#' term='jms'/><category scheme='http://www.blogger.com/atom/ns#' term='ibm'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2 esb'/><title type='text'>Enterprise Messaging with Synapse, WSO2 ESB and WebSphere MQ</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;I've been recently playing a lot with &lt;a href="http://synapse.apache.org/"&gt;Apache Synapse&lt;/a&gt;, &lt;a href="http://wso2.org/projects/esb"&gt;WSO2 ESB&lt;/a&gt; and IBM WebShpere MQ (WMQ). My intention was to use WMQ as a JMS provider for Synapse and WSO2 ESB. IBM WebSphere MQ being a very popular and matured messaging solution, I figured that getting Synapse and WSO2 ESB to work with WMQ and document the integration process would really help the IBM, Apache and WSO2 communities. Originally I anticipated this application integration to be a very comlpex and tedious task. But for much of my delight, it turned out to be a very easy and simple process in the end. What was little complicated was to get WMQ properly installed and get its JMS features configured. But the integration with Synapse and WSO2 ESB was indeed a piece of cake.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;So here I'm going to list the steps hat one should follow to get WMQ integrated with Synapse or WSO2 ESB. Start by downloading the required software. Binary distributions of Apache Synapse and WSO2 ESB can be downloaded from their respective websites. A trial version of the IBM WMQ V7.0 can be downloaded from &lt;a href="http://www14.software.ibm.com/webapp/download/search.jsp?pn=WebSphere+MQ"&gt;here&lt;/a&gt;. In addition to these application you will also require Java 5 or higher along with &lt;a href="http://ant.apache.org/"&gt;Apache ANT&lt;/a&gt; to run some of the samples described here.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Installing Apache Synapse or WSO2 ESB doesn't require any additional steps. You simply need to extract the downloaded archives and that's all. However WMQ installation is not so easy. It is a fairly long and time consuming process which requires carefulness and patience. Anyway the installation process is well documented and so it shouldn't be a problem. For your convenience I'm describing the WMQ installation procedure for Linux here. The necessary commands to be executed at each step are given in italic font.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;Installing WMQ&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;1. Create an empty directory and extract the downloaded WMQ archive into it&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2. Add a new user group called 'mqm' to the system&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;groupadd mqm&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;3. Add a new user called 'mqm' to the system. Add the user to the 'mqm' group. Set the user's home directory to /var/mqm&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;useradd -d /var/mqm -g mqm mqm&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;4. Create the directory /var/mqm and change its owner to mqm&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;mkdir /var/mqm&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;chown mqm:mqm mqm&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;5. Create the directory /opt/mqm&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;mkdir /opt/mqm&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;6. Create another directory anywhere on the disk and set a symlink to it from /opt/mqm&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;mkdir /home/hiranya/mqm&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;ln -s /home/hiranya/mqm /opt/mqm&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;7. Install libstdc++5 library on the system (using Synaptic or apt-get on Debian/Ubuntu systems) if not already installed&lt;/div&gt;&lt;div style="text-align: justify;"&gt;8. As root go to the directory where WMQ is extracted and run the license display script&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;./mqlicense.sh&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;9. Install the MQ runtime and the server using rpm&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;rpm -ivh MQSeriesRuntime-7.0.0-0.i386.rpm MQSeriesServer-7.0.0-0.i386.rpm --nodeps&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;10. Install the MQ samples&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;rpm -ivh MQSeriesSamples-7.0.0-0.i386.rpm --nodeps&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;11. Install the MQ client&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;rpm -ivh MQSeriesClient-7.0.0-0.i386.rpm --nodeps&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;That wasn't too bad, was it? Now it's time to verify the installation. Here's what you got to do.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;Verifying the Installation&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;1. Login as user mqm (ssh mqm@localhost)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2. Create a new queue manager &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;crtmqm -q venus.queue.manager&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;3. Start the queue manager&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;strmqm&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;4. Start MQSC program (a new shell will appear - without a prompt)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;runmqsc&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;5. Define a local queue in the MQSC shell&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;define qlocal (orange.queue)&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;6. Terminate MQSC&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;end&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;7. Go to /opt/mqm/samp/bin and run the amqsput sample program to place a message on to the queue&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;./amqsput ORANGE.QUEUE&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;8. The above command should be followed up by some sample message text of your choice and a blank line&lt;/div&gt;&lt;div style="text-align: justify;"&gt;9. Run the following command to pull the message back from the queue&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;./amqsget ORANGE.QUEUE&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;10. So far so good! We got the server properly installed. Now on to the client!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;11. Create a new queue manager&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;crtmqm -q saturn.queue.manager&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;12. Start the queue manager&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;strmqm&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;13. Start MQSC&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;runmqsc&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;14. Create a new queue&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;define qlocal (queue1)&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;15. Create a connection channel to the queue&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;define channel (channel1) chltype (svrconn) trptype (tcp) mcauser ('mqm')&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;16. Create a listener (specify a port)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;define listener (listener1) trptype (tcp) control (qmgr) port (8585)&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;17. Start the listener&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;start listener (listener1)&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;18. Terminate MQSC&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;end&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;19. Create a system environment variable to point to the channel created above&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;export MQSERVER='CHANNEL1/TCP/localhost(8585)'&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;20. Go to /opt/mqm/samp/bin and run the amqsputc to place a message in the queue (using the client API)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;./amqputc QUEUE1 saturn.queue.manager&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;21. Now run amqsgetc to receive the message&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;./amqgetc QUEUE1 saturn.queue.manager&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;22. Excellent! We got the client installed properly too :)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now that we got WMQ installed let's try to get its JMS features enabled.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;Setting Up JMS&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;1. Install WMQ classes for JMS&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;rpm -ivh MQSeriesJava-7.0.0-0.i386.rpm --nodeps&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2. Start MQSC (This will start mqsc for the last created queue manager - saturn.queue.manager)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;runmqsc&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;3. Define a JMS channel for the queue manager&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;define channel(java.channel) chltype(svrconn) trptypr(tcp)&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;4. Define a listener&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;define listener(listener.tcp) trptype(tcp) port(1414)&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;5. Start the listener&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;start listener(listener.tcp)&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;6. Setup the classpath variable and the MQ_JAVA_LIB_PATH to run the IVT programt&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;export CLASSPATH=/opt/mqm/java/lib/com.ibm.mqjms.jar:/opt/mqm/samp/jms/&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;export MQ_JAVA_LIB_PATH=/opt/mqm/java/lib&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;7. Go to /opt/mqm/java/bin and invoke the IVT sample program&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;./IVTRun -nojndi&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;./IVTRun -nojndi -client -m saturn.queue.manager -host localhost -channel JAVA.CHANNEL&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;8. If the IVT program can recieve and send JMS messages we are done! Now let's proceed to enabling JNDI support&lt;/div&gt;&lt;div style="text-align: justify;"&gt;9. Go to the /opt/mqm/java/bin directory and open the JMSAdmin.config file. Edit the PROVIDER_URL property to point to an empty directory of your choice on the file system. This directory will be used the JNDI provider source (eg: /var/mqm/jndi). If the specified directory does not exist in the file system create it.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;10. Run the IVTSetup tool to create the default set of JNDI bindings&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;./IVTSetup&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;11. Now run the IVTRun tool as follows&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;./IVTRun -url "file:/var/mqm/jndi" -icf com.sun.jndi.fscontext.RefFSContextFactory&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;12. By now we have enabled and verified JNDI support. Let's use the JMSAdmin tool to make some modifications in the JNDI bindings&lt;/div&gt;&lt;div style="text-align: justify;"&gt;13. Fireoff /opt/java/bin/JMSAdmin and run the following commands:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;ALTER QCF(ivtQCF) TRANSPORT(CLIENT)&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;ALTER QCF(ivtQCF) QMGR(saturn.queue.manager)&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;14. Run the IVTRun tool again as mentioned in step 11. This time messages will be sent to the saturn queue manager.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now we are all set. It's time to get WMQ integrated with Synapse and WSO2 ESB. Let's start with Apache Synapse.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;Synapse Integration&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Follow the steps given below as the user 'mqm'. Trying to run Synapse as a different user caused some JMS security exceptions.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;1. Copy the following jar files from /opt/mqm/java/lib to SYNAPSE_HOME/lib&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;com.ibm.mqjms.jar&lt;/li&gt;&lt;li&gt;fscontext.jar&lt;/li&gt;&lt;li&gt;providerutil.jar&lt;/li&gt;&lt;li&gt;com.ibm.mq.jmqi.jar&lt;/li&gt;&lt;li&gt;dhbcore.jar&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2. Enable the JMS listener in the axis2.xml. Configure the default connection factory as follows.&lt;/div&gt;&lt;pre&gt;&amp;lt;parameter name="default"&amp;gt;&lt;br /&gt;  &amp;lt;parameter name="java.naming.factory.initial"&amp;gt;com.sun.jndi.fscontext.RefFSContextFactory&amp;lt;/parameter&amp;gt;&lt;br /&gt;  &amp;lt;parameter name="java.naming.provider.url"&amp;gt;file:/var/mqm/jndi&amp;lt;/parameter&amp;gt;&lt;br /&gt;  &amp;lt;parameter name="transport.jms.ConnectionFactoryJNDIName"&amp;gt;ivtQCF&amp;lt;/parameter&amp;gt;&lt;br /&gt;  &amp;lt;parameter name="transport.jms.ConnectionFactoryType" locked="false"&amp;gt;queue&amp;lt;/parameter&amp;gt;&lt;br /&gt;  &amp;lt;parameter name="transport.jms.Destination"&amp;gt;ivtQ&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/parameter&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;Note that we are using the JNDI configuration used by the IVT sample program. We are using the same queue connection factory and the JMS queue to define the default connection factory.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;3. Create the following proxy service in the synapse.xml (this is a simplified version of sample 250)&lt;/div&gt;&lt;pre&gt;&amp;lt;proxy name="JMSProxy" transports="jms"&amp;gt;&lt;br /&gt;  &amp;lt;target&amp;gt;&lt;br /&gt;     &amp;lt;inSequence&amp;gt;                             &lt;br /&gt;        &amp;lt;log level="full"/&amp;gt;&lt;br /&gt;        &amp;lt;drop/&amp;gt;&lt;br /&gt;     &amp;lt;/inSequence&amp;gt;&lt;br /&gt;  &amp;lt;/target&amp;gt;&lt;br /&gt;  &amp;lt;parameter name="transport.jms.ContentType"&amp;gt;&lt;br /&gt;       &amp;lt;rules&amp;gt;&lt;br /&gt;           &amp;lt;jmsProperty&amp;gt;contentType&amp;lt;/jmsProperty&amp;gt;&lt;br /&gt;           &amp;lt;default&amp;gt;application/xml&amp;lt;/default&amp;gt;&lt;br /&gt;       &amp;lt;/rules&amp;gt;&lt;br /&gt;  &amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/proxy&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;4. Start Synapse - go to SYNAPSE_HOME/bin and run ./synapse.sh&lt;/div&gt;&lt;div style="text-align: justify;"&gt;5. Go to SYNAPSE_HOME/samples/axis2Client/src/samples/userguide and open the GenericJMSClient.java source file. Make the following changes in the code.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;Set the jms_dest property default value to "ivtQ" (line 45)&lt;/li&gt;&lt;li&gt;Set the java.naming.provider.url to "file:/var/mqm/jndi" (line 82)&lt;/li&gt;&lt;li&gt;Set the java.naming.factory.initial to "com.sun.jndi.fscontext.RefFSContextFactory" (line 85)&lt;/li&gt;&lt;li&gt;Set the lookup key to "ivtQCF" (line 89)&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;6. Now from the SYNAPSE_HOME/samples/axis2Client directory run the following command to run the JMS client application which will send messages to the ivtQ.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;ant jmsclient -Djms_type=pox -Djms_payload=IBM&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;7. At this point Synapse will pick the messages from the queue and log them on the console.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;WSO2 ESB 2.1 Integration&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Follow the steps given below as user 'mqm'&lt;/div&gt;&lt;div style="text-align: justify;"&gt;1. Copy the Websphere MQ client jars (mentioned above under Synapse Integration) to ESB_HOME/repository/components/lib&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2. Enable the JMS listener in axis2.xml and configure the default JMS connection factory as follows&lt;/div&gt;&lt;pre&gt;&amp;lt;parameter name="default"&amp;gt;              &lt;br /&gt;        &amp;lt;parameter name="java.naming.factory.initial" &amp;gt;com.sun.jndi.fscontext.RefFSContextFactory&amp;lt;/parameter&amp;gt;                      &lt;br /&gt;        &amp;lt;parameter name="java.naming.provider.url" &amp;gt;file:/var/mqm/jndi&amp;lt;/parameter&amp;gt;&lt;br /&gt;        &amp;lt;parameter name="transport.jms.ConnectionFactoryJNDIName" &amp;gt;ivtQCF&amp;lt;/parameter&amp;gt;&lt;br /&gt;        &amp;lt;parameter name="transport.jms.ConnectionFactoryType" &amp;gt;queue&amp;lt;/parameter&amp;gt;&lt;br /&gt;        &amp;lt;parameter name="transport.jms.Destination"&amp;gt;BOGUSQ&amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/parameter&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;Note that we have specified a queue named 'BOGUSQ' as the default destination. This is because we need to use ivtQ for our proxy service only. If we use 'ivtQ' here all the services deployed in ESB (XKMS, echo, wso2carbon-sts) will start listening on the same queue. You also need to login to JMSAdmin and create the queue named 'BOGUSQ'. In JMSAdmin shell run the following commands.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;DEFINE Q(BOGUSQ) QMGR(saturn.queue.manager)&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;ALTER Q(BOGUSQ) QUEUE(QUEUE1)&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If the QUEUE1 does not exist, first login to MQSC and create it.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;3. Add the proxy service we used with Synapse to ESB_HOME/conf/synapse.xml&lt;/div&gt;&lt;div style="text-align: justify;"&gt;4. Start WSO2 ESB&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;./wso2server.sh -DuseSynapseXML&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;5. Use the sample client we used in Synapse to send messages to the queue&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-631451760109877993?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/631451760109877993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=631451760109877993' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/631451760109877993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/631451760109877993'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/09/enterprise-messaging-with-synapse-wso2.html' title='Enterprise Messaging with Synapse, WSO2 ESB and WebSphere MQ'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-8261161969631677252</id><published>2009-09-09T05:48:00.000-07:00</published><updated>2009-09-10T03:05:20.802-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='award'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='infoworld'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>WSO2 Carbon Shines in Open Source Space</title><content type='html'>&lt;div style="text-align: justify;"&gt;Awesome news folks!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://wso2.org/projects/carbon"&gt;WSO2 Carbon&lt;/a&gt;, the open source SOA platform, the team of which I'm also a part of, has won an award in "InfoWorld Best of Open Source Software (Bossie) 2009". Bossie awards cover a wide range of software categories and WSO2 Carbon won the award in the "Platforms and Middleware" category. With this, &lt;b&gt;WSO2 Carbon has been recognized by &lt;a href="http://www.infoworld.com"&gt;InfoWorld&lt;/a&gt; as one of top 40 open source products available for business and IT&lt;/b&gt;. Here I quote the official announcement from InfoWorld which declares the award winners.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;"Two leading lights of open source SOA are MuleSource and WSO2. The Mule ESB takes our prize for the finest enterprise service bus in the open source pantheon, while &lt;b&gt;WSO2 receives a Bossie for its Carbon framework, the basis of a completely componentized SOA platform&lt;/b&gt;."&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Fantastic.... Given the fact that WSO2 Carbon is still a very new software platform, this is a great achivement indeed. It just shows how fast WSO2 Carbon has matured as a complete SOA platform and how fast its community has expanded in the last few months.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Read the complete publication from &lt;a href="http://www.infoworld.com/d/open-source/best-open-source-software-awards-2009-628"&gt;InfoWorld&lt;/a&gt; and the official news article from &lt;a href="http://wso2.com/about/news/wso2-wins-infoworld-best-of-open-source-award-for-wso2-carbon/"&gt;WSO2&lt;/a&gt; for more details on this great achievement by the WSO2 Carbon team.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-8261161969631677252?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/8261161969631677252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=8261161969631677252' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8261161969631677252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8261161969631677252'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/09/wso2-carbon-shines-in-open-source-space.html' title='WSO2 Carbon Shines in Open Source Space'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-4450940328150037916</id><published>2009-07-22T02:40:00.000-07:00</published><updated>2009-07-22T04:39:51.159-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='activemq'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='jms'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>Integrating Apache ActiveMQ with WSO2 ESB</title><content type='html'>&lt;div style="text-align: justify;"&gt;When going through some of the recent posts in the &lt;a href="http://wso2.org/forum/187"&gt;WSO2 ESB user forum&lt;/a&gt;, I got the impression that some folks are having trouble getting &lt;a href="http://activemq.apache.org/"&gt;Apache ActiveMQ&lt;/a&gt; to work with &lt;a href="http://wso2.org/projects/esb/java"&gt;WSO2 ESB&lt;/a&gt;. So today I'm going to explain how to integrate Apache ActiveMQ with WSO2 ESB and run one of the JMS sample scenarios.&lt;br /&gt;&lt;br /&gt;I will be using WSO2 ESB 2.1 and Apache ActiveMQ 5.2. First download WSO2 ESB 2.1 and Apache ActiveMQ 5.2 from the respective websites if you already haven't done so. Apache ActiveMQ has different distributions for Windows platform and Unix/Linux platform. So remember to download the distribution that matches your  target platform. To run the sample scenario described here you will also require &lt;a href="http://ant.apache.org"&gt;Apache ANT&lt;/a&gt;. Once you have extracted the downloaded archives to some location in your local disk. Let's refer to WSO2 ESB installation directory as ESB_HOME and ActiveMQ installation directory as AMQ_HOME.&lt;br /&gt;&lt;br /&gt;Now we are all set to go.....&lt;br /&gt;&lt;br /&gt;First go to AMQ_HOME/bin directory and start the ActiveMQ broker. On Linux you simply have to execute the script named '&lt;span style="font-style: italic;"&gt;activemq&lt;/span&gt;'.&lt;br /&gt;&lt;br /&gt;Then you need to copy the following 3 jar files into ESB_HOME/repository/components/lib directory. (With WSO2 ESB 2.1 this is the location where most of the 3rd party dependencies should be deployed)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;activemq-core-5.2.0.jar  &lt;/li&gt;&lt;li&gt;geronimo-j2ee-management_1.0_spec-1.0.jar  &lt;/li&gt;&lt;li&gt;geronimo-jms_1.1_spec-1.1.1.jar&lt;/li&gt;&lt;/ul&gt;You will find all these jars in AMQ_HOME/lib directory.&lt;br /&gt;&lt;br /&gt;Then open up ESB_HOME/conf/axis2.xml file in your favorite text editor and uncomment the JMS listener configuration. JMS listener configuration should look something like this.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener"&amp;gt;&lt;br /&gt;      &amp;lt;parameter name="myTopicConnectionFactory" locked="false"&amp;gt;&lt;br /&gt;              &amp;lt;parameter name="java.naming.factory.initial" locked="false"&amp;gt;&lt;br /&gt;                  org.apache.activemq.jndi.ActiveMQInitialContextFactory&lt;br /&gt;              &amp;lt;/parameter&amp;gt;&lt;br /&gt;              &amp;lt;parameter name="java.naming.provider.url" locked="false"&amp;gt;&lt;br /&gt;                  tcp://localhost:61616&lt;br /&gt;              &amp;lt;/parameter&amp;gt;&lt;br /&gt;              &amp;lt;parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false"&amp;gt;&lt;br /&gt;                  TopicConnectionFactory&lt;br /&gt;              &amp;lt;/parameter&amp;gt;&lt;br /&gt;              &amp;lt;parameter name="transport.jms.ConnectionFactoryType" locked="false"&amp;gt;topic&amp;lt;/parameter&amp;gt;&lt;br /&gt;      &amp;lt;/parameter&amp;gt;&lt;br /&gt;&lt;br /&gt;      &amp;lt;parameter name="myQueueConnectionFactory" locked="false"&amp;gt;&lt;br /&gt;              &amp;lt;parameter name="java.naming.factory.initial" locked="false"&amp;gt;&lt;br /&gt;                  org.apache.activemq.jndi.ActiveMQInitialContextFactory&lt;br /&gt;              &amp;lt;/parameter&amp;gt;&lt;br /&gt;              &amp;lt;parameter name="java.naming.provider.url" locked="false"&amp;gt;&lt;br /&gt;                  tcp://localhost:61616&lt;br /&gt;              &amp;lt;/parameter&amp;gt;&lt;br /&gt;              &amp;lt;parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false"&amp;gt;&lt;br /&gt;                  QueueConnectionFactory&lt;br /&gt;              &amp;lt;/parameter&amp;gt;&lt;br /&gt;              &amp;lt;parameter name="transport.jms.ConnectionFactoryType" locked="false"&amp;gt;queue&amp;lt;/parameter&amp;gt;&lt;br /&gt;      &amp;lt;/parameter&amp;gt;&lt;br /&gt;&lt;br /&gt;      &amp;lt;parameter name="default" locked="false"&amp;gt;&lt;br /&gt;              &amp;lt;parameter name="java.naming.factory.initial" locked="false"&amp;gt;&lt;br /&gt;                  org.apache.activemq.jndi.ActiveMQInitialContextFactory&lt;br /&gt;              &amp;lt;/parameter&amp;gt;&lt;br /&gt;              &amp;lt;parameter name="java.naming.provider.url" locked="false"&amp;gt;&lt;br /&gt;                  tcp://localhost:61616&lt;br /&gt;              &amp;lt;/parameter&amp;gt;&lt;br /&gt;              &amp;lt;parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false"&amp;gt;&lt;br /&gt;                  QueueConnectionFactory&lt;br /&gt;              &amp;lt;/parameter&amp;gt;&lt;br /&gt;              &amp;lt;parameter name="transport.jms.ConnectionFactoryType" locked="false"&amp;gt;queue&amp;lt;/parameter&amp;gt;&lt;br /&gt;      &amp;lt;/parameter&amp;gt;&lt;br /&gt;&amp;lt;/transportReceiver&amp;gt;&lt;br /&gt;&lt;/pre&gt;Now go to ESB_HOME/bin and start &lt;a href="http://wso2.org/project/esb/java/2.1.0/docs/samples/transport_samples.html#Sample250"&gt;sample 250&lt;/a&gt; which demonstrates how to receive messages over JMS and forward them over HTTP. To start the sample go to ESB_HOME/bin and run the command &lt;span style="font-style: italic;font-family:courier new;" &gt;./wso2esb-samples.sh -sn 250&lt;/span&gt; if you are on Unix/Linux or run the command &lt;span style="font-style: italic;"&gt;./wso2esb-samples.bat -sn 250&lt;/span&gt; if you are on Windows. This will bring up WSO2 ESB with sample 250 configuration.&lt;br /&gt;&lt;br /&gt;The ESB startup may take some time depending on your system. However note the following lines on the console when it starts up.&lt;br /&gt;&lt;pre&gt;INFO - JMSConnectionFactory JMS ConnectionFactory : myTopicConnectionFactory initialized&lt;br /&gt;INFO - JMSConnectionFactory JMS ConnectionFactory : myQueueConnectionFactory initialized&lt;br /&gt;INFO - JMSConnectionFactory JMS ConnectionFactory : default initialized&lt;br /&gt;INFO - JMSListener JMS Transport Receiver/Listener initialized...&lt;br /&gt;&lt;/pre&gt;This confirms that the JMS transport has successfully started by connecting to the ActiveMQ broker. When the ESB has fully started up you should get a message similar to the following line on the console.&lt;br /&gt;&lt;pre&gt;INFO - StartupFinalizerServiceComponent WSO2 Carbon started in 33 sec&lt;br /&gt;&lt;/pre&gt;Now we are ready to run the sample. Go to ESB_HOME/samples/axis2Server/src/SimpleStockQuoteService and run the command &lt;span style="font-style: italic;"&gt;ant&lt;/span&gt; to build the sample service and deploy in the sample Axis2 server that comes with WSO2 ESB (This is where you need Apache ANT. So make sure you have properly installed ANT before trying to build the service and proceed any further.).   Then switch back to ESB_HOME/samples/axis2Server and start the sample server by running &lt;span style="font-style: italic;"&gt;axis2server.sh&lt;/span&gt; or &lt;span style="font-style: italic;"&gt;axis2server.bat&lt;/span&gt; startup script.&lt;br /&gt;&lt;br /&gt;Finally to run the sample client head over to ESB_HOME/samples/axis2Client directory and run the following command.&lt;br /&gt;&lt;pre&gt;ant jmsclient -Djms_type=pox -Djms_dest=dynamicQueues/StockQuoteProxy -Djms_payload=MSFT&lt;/pre&gt;This will send a message to a JMS queue named StockQuoteProxy. The ESB will receive the message from the queue and forward it to the sample Axis2 server over HTTP. When the Axis2 server is done with processing the message it will print the following line on the console.&lt;br /&gt;&lt;pre&gt;samples.services.SimpleStockQuoteService  :: Accepted order for : 9351 stocks of MSFT at $ 158.6569470528259&lt;/pre&gt;Congratulations! You just got Apache ActiveMQ integrated and working with WSO2 ESB. Now that wasn't too hard, was it? The key thing you have to remember is the way 3rd party dependencies are deployed into WSO2 ESB. In older versions of WSO2 ESB you had to copy the jar files into ESB_HOME/lib. But that does not work with the latest version of WSO2 ESB. The deployment model of WSO2 ESB has slightly changed with the introduction of WSO2 Carbon and Equinox P2 into the ESB.&lt;br /&gt;&lt;br /&gt;So that's all about getting ActiveMQ to  work with WSO2 ESB. With this knowledge now you may try other JMS related samples that come with WSO2 ESB.&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/4206392247746930256-4450940328150037916?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/4450940328150037916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=4450940328150037916' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/4450940328150037916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/4450940328150037916'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/07/integrating-apache-activemq-with-wso2.html' title='Integrating Apache ActiveMQ with WSO2 ESB'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-445942787697324445</id><published>2009-07-15T09:00:00.000-07:00</published><updated>2009-07-15T09:38:37.105-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>Head First Security in SOA</title><content type='html'>&lt;div style="text-align: justify;"&gt;No, O'Reilly Media hasn't published a book on '&lt;i&gt;Security in SOA&lt;/i&gt;' in their world famous &lt;a href="http://oreilly.com/store/series/headfirst.csp"&gt;Head First series&lt;/a&gt; (at least not that I know of). This post is about a wonderful presentation on the above mentioned subject, conducted by &lt;a href="http://blog.facilelogin.com/"&gt;Prabath SiriWardena&lt;/a&gt;, couple of weeks back at the &lt;a href="http://wso2.org/training"&gt;WSO2 Summer School&lt;/a&gt;. Prabath is one of my colleagues at &lt;a href="http://wso2.org"&gt;WSO2&lt;/a&gt; and he is one of the most experienced folks we got. Prabath's expertise is on computer security and at WSO2 he leads all security related projects including &lt;a href="http://wso2.org/projects/identity"&gt;WSO2 Identity Server&lt;/a&gt;. In this summer school presentation Prabath has started simple, by explaining the fundamental concepts of computer security like confidentiality, integrity and availability and goes on to more complex topics such as public key cryptography, transport level and message level secuity, WS-Security specs and Username-Token authentication. He gives a glimpse on various options available to SOA architects and Web Service authors to secure their applications at different levels while emphasizing on the importance of interoperability.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Throughout the presentation he has kept things simple yet extremely interesting. &lt;b&gt;You will find the entire presentation sort of follows the storyline based, fun-filled teaching method which is a very effective technique commonly used in the books of the Head First series&lt;/b&gt; (and hence the title). &lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you want to learn the fundamentals of Security in SOA and how it is used in the enterprise (or how it should be used in the enterprise), this presentation would be a great starting point. So start flipping through the slides now and see for yourself.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;a href="http://www.slideshare.net/wso2.org/summer-school-security-in-soa" title="Summer School - Security in SOA" style="font: normal normal normal 14px/normal Helvetica, Arial, sans-serif; display: inline !important; margin-top: 12px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px; text-decoration: underline; "&gt;Summer School - Security in SOA&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="width:425px;text-align:left" id="__ss_1677128"&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=summer-school-090702235033-phpapp01&amp;amp;stripped_title=summer-school-security-in-soa"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=summer-school-090702235033-phpapp01&amp;amp;stripped_title=summer-school-security-in-soa" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;documents&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/wso2.org"&gt;wso2.org&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-445942787697324445?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/445942787697324445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=445942787697324445' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/445942787697324445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/445942787697324445'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/07/head-first-security-in-soa.html' title='Head First Security in SOA'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-2566655918550022663</id><published>2009-07-12T23:52:00.000-07:00</published><updated>2009-07-13T03:48:50.441-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='middleware'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>Amplify Your SOA with WSO2 ESB 2.1</title><content type='html'>&lt;div style="text-align: justify;"&gt;If you have been following my blog, then you already know that &lt;a href="http://wso2.org/projects/carbon"&gt;WSO2 Carbon 2.0&lt;/a&gt; and a host of other Carbon based WSO2 SOA products were released last week. &lt;a href="http://wso2.org/projects/esb"&gt;WSO2 Enterprise Service Bus 2.1&lt;/a&gt;, which is one of the released products, must be highlighted as a high quality, feature rich and extremely user friendly piece of SOA middleware for a number of reasons. Like all its predecessors, this version of WSO2 ESB is also based on &lt;a href="http://synapse.apache.org/"&gt;Apache Synapse&lt;/a&gt;, the lightweight, ultra-fast ESB. WSO2 ESB is generally popular among SOA enthusiasts because of the following set of key features provided by the ESB.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;Proxy services - facilitating synchronous/asynchronous transport, interface (WSDL/Schema/Policy), message format (SOAP 1.1/1.2, POX/REST, Text, Binary), QoS (WS-Addressing/WS-Security/WS-RM) and optimization switching (MTOM/SwA).&lt;/li&gt;&lt;li&gt;&lt;b&gt;Non-blocking HTTP/S transports&lt;/b&gt; based on Apache HttpCore for ultrafast execution and support for thousands of connections at high concurreny with constant memory usage.&lt;/li&gt;&lt;li&gt;Built in Registry/Repository, facilitating dynamic updating and reloading of the configuration and associated resources (e.g. XSLTs, XSD, WSDL, Policies, JS, Configurations ..)&lt;/li&gt;&lt;li&gt;Easily extendable via custom Java class (mediator and command)/Spring mediators, or BSF Scripting languages (Javascript, Ruby, Groovy, etc.)&lt;/li&gt;&lt;li&gt;Built in support for scheduling tasks using the Quartz scheduler.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Load-balancing (with or without sticky sessions)/Fail-over, and clustered Throttling and Caching support&lt;/b&gt;&lt;/li&gt;&lt;li&gt;WS-Security, WS-Reliable Messaging, Caching &amp;amp; Throttling configurable via (message/operation/service level) WS-Policies&lt;/li&gt;&lt;li&gt;&lt;b&gt;Lightweight, XML and Web services centric messaging model&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Support for industrial standards (&lt;b&gt;Hessian binary web service protocol/ Financial Information eXchange protocol and optional Health Level-7 protocol&lt;/b&gt;)&lt;/li&gt;&lt;li&gt;Enhanced support for the &lt;b&gt;VFS(File/FTP/SFTP)/JMS/Mail&lt;/b&gt; transports with optional &lt;b&gt;TCP/UDP&lt;/b&gt; transports and transport switching for any of the above transports&lt;/li&gt;&lt;li&gt;Support for message splitting &amp;amp; aggregation using the EIP and service callouts&lt;/li&gt;&lt;li&gt;Database lookup &amp;amp; store support with DBMediators with reusable database connection pools&lt;/li&gt;&lt;li&gt;&lt;b&gt;WS-Eventing support&lt;/b&gt; with event sources and event brokering&lt;/li&gt;&lt;li&gt;Rule based mediation of the messages using the Drools rule engine&lt;/li&gt;&lt;li&gt;&lt;b&gt;Transactions support&lt;/b&gt; via the JMS transport and Transaction mediator for database mediators&lt;/li&gt;&lt;li&gt;Internationalized GUI management console with user/permission management for configuration development and monitoring support with statistics, configurable logging and tracing&lt;/li&gt;&lt;li&gt;&lt;b&gt;JMX monitoring support&lt;/b&gt; and JMX management capabilities like, Gracefull/Forcefull shutdown/restart&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Wow! That's a lot of features for a software product developed openly and distributed free of charge under Apache Software License 2.0. As you would imagine, it is mainly the performance and the lightweight operation model of WSO2 ESB which makes it stand out from the rest. In addition to the above mentioned key features the latest ESB 2.1 release brings you the following set of new features.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Rule based mediation via Drools&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Fine grained authorization for services via the Entitlement mediator&lt;/li&gt;&lt;li&gt;&lt;b&gt;R&lt;/b&gt;&lt;b&gt;eliable-Messaging specification 1.1 support&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Enhanced WS-Eventing support and Event Sources making it an even broker&lt;/li&gt;&lt;li&gt;Enhanced AJAX based sequence, endpoint and proxy service editors&lt;/li&gt;&lt;li&gt;Enhanced transport configuration management through the graphical console&lt;/li&gt;&lt;li&gt;Enhanced integrated registry and search functionalities with versioning, notifications, rating of resources, and commenting&lt;/li&gt;&lt;li&gt;Enhanced remote registry support&lt;/li&gt;&lt;li&gt;Default persistence to the registry for the configuration elements&lt;/li&gt;&lt;li&gt;Enhanced permission model with the user management&lt;/li&gt;&lt;li&gt;Enhanced REST/GET and other HTTP method support&lt;/li&gt;&lt;li&gt;&lt;b&gt;P&lt;/b&gt;&lt;b&gt;2 based OSGi feature support&lt;/b&gt;, for optional features like service management, runtime governance&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The coolest thing about WSO2 ESB 2.1 is that it is &lt;b&gt;100% OSGi based&lt;/b&gt; (thanks to the Carbon platform of course!). All the features are packed into OSGi bundles and therefore adding new features and removing unnecessary features cannot get any easier. The newly introduced provisioning support based on Equinox P2 makes it particularly easy to deploy new features and third party libraries into the ESB. With WSO2 ESB 2.1, you can deploy only the features you want and only them. You are not forced to load any features/libraries that you never use. Why waste memory and other resources on features never used, right?&lt;/div&gt;&lt;div style="text-align: justify;"&gt;With ESB 2.1 registry integration support has improved vastly. WSO2 ESB 2.1 comes with an embedded WSO2 G-Reg instance but you can easily point the ESB to a remotely hosted registry instance in a matter of seconds. ESB 2.1 also has the ability to export its entire configuration to the registry and reload the configuration back from the registry at the server startup.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;User interfaces and context sensitive help system have gone through lot of rework. You will find that most of the web interfaces are now fully AJAX compliant making it easy and fun to work with WSO2 ESB. All UIs are fully internationalized and can be even separated from the backend system to be hosted as different web application.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;WSO2 ESB 2.1 is a giant step forward by the WSO2 folks to make their ESB even more elegant and enterprise ready. It gives you a combination of high performance, modularity and user friendliness. It is completely free and open source, with a very active and supportive community of developers to back up all the development work.  WSO2 also offers user training, development support and production support to any party which requires such facilities.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you are looking for a robust mediation solution to power your enterprise SOA or if you are tired of trying out expensive proprietary ESB solutions, it’s high time you give WSO2 ESB 2.1 a spin. It will be totally worth it!!!&lt;/div&gt;&lt;div style="text-align: justify;"&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/4206392247746930256-2566655918550022663?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/2566655918550022663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=2566655918550022663' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/2566655918550022663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/2566655918550022663'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/07/amplify-your-soa-with-wso2-esb-21.html' title='Amplify Your SOA with WSO2 ESB 2.1'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-6263109386266605955</id><published>2009-07-10T07:40:00.000-07:00</published><updated>2009-07-10T08:09:06.459-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='registry'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='wsas'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='identity'/><category scheme='http://www.blogger.com/atom/ns#' term='osgi'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>WSO2 Carbon Platform Takes Another Giant Step Forward</title><content type='html'>&lt;div style="text-align: justify;"&gt;Weeks have passed by since I did my last blog post. The reason for my prolonged silence in the blog sphere was due to the fact that I was working hard on a very important point release of &lt;a href="http://wso2.org/projects/carbon"&gt;WSO2 Carbon 2.0&lt;/a&gt; and a host of WSO2 Java products based on the Carbon platform. Ideally these releases should have come out bit early but realizing the importance of implementing some new features, we decided to push the releases back by a few weeks. Anyway WSO2 Carbon 2.0 and four of the Carbon based WSO2 products (&lt;a href="http://wso2.org/projects/wsas/java"&gt;WSAS 3.1&lt;/a&gt;, &lt;a href="http://wso2.org/projects/esb/java"&gt;ESB 2.1&lt;/a&gt;, &lt;a href="http://wso2.org/projects/governance-registry"&gt;G-Reg 3.0&lt;/a&gt; and &lt;a href="http://wso2.org/projects/identity"&gt;IS 2.0&lt;/a&gt;) were released on 8th July 2009 and you can now download them from the &lt;a href="http://wso2.org/downloads"&gt;download page&lt;/a&gt; of the &lt;a href="http://wso2.org/"&gt;WSO2 Oxygen Tank&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;WSO2 Carbon is an &lt;a href="http://www.osgi.org/"&gt;OSGi&lt;/a&gt; based application framework for SOA and Web Services. All WSO2 Java products including WSO2 ESB, WSO2 WSAS, WSO2 Governance Registry and WSO2 Identity Server are based on this revolutionary SOA platform. We have made some very important architectural and functional enhancements to WSO2 Carbon recently. Therefore the users of Carbon 2.0 based products will be able to reap the benefits of those improvements in the forms of improved performance, reliability, extensibility, user friendliness and stability.  &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;One of the most important architectural changes we made to the Carbon platform this time around is getting rid of OSGi bundle activators and instead, adapting OSGi declarative services to handle bundle initialization and cleanup. OSGi declarative services are considered the best solution when it comes to managing systems with a large number of OSGi bundles. Declarative services allow bundles to startup and initialize properly while sharing required data among various bundles without following a pre configured bundle startup order. Declarative services also helped us improve the dynamic nature of the overall Carbon platform, so now starting bundles and stopping bundles at runtime is easier and safer.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Another key enhancement we did for this release of Carbon is the introduction of the &lt;a href="http://wiki.eclipse.org/P2"&gt;P2&lt;/a&gt; based provisioning system. This work is still at its early stages but it already enables Carbon and Carbon based product users to easily deploy Carbon components, user developed OSGi bundles, mediators and third party dependencies to the system easily, without having to write a single line of code to handle OSGi initialization or cleanup work.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In General Carbon 2.0 and Carbon 2.0 products have better registry integration support, better transport management support, better user management support, better security features and better user interfaces. We gave most of the Carbon component UIs a fresh look through the extended use of AJAX. Persistence of configuration data is another area where we have done a lot of work lately. WSO2 ESB 2.1 in particular has the ability to store the entire ESB configuration in a registry and then load the configuration back from the registry during server startup. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Documentation is yet another area that’s been largely improved with this release. We paid special attention to improving our context sensitive help documents (accessed via product user interfaces) and other downloadable guides and tutorials. In the previous releases of Carbon and Carbon based products we were mostly focused on system architecture and functionality. But now the Carbon framework is largely stabilized we were able to spare some cycles for improving our documentation too. We have added lots of new guides and catalogs including mediator catalog, transports catalog, server administration guide and the endpoints guide. Our plan is to make our products easy to learn and use via making our user interfaces simple, integrating help with the user interfaces and making ample documentation freely available to all.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In addition to the key improvements mentioned above Carbon 2.0 and related products come with tons of new features, minor bug fixes, performance enhancements and usability improvements which add lot of value to the WSO2 Carbon SOA platform. If you are interested in SOA and Web Services middleware you must give some of the new Carbon 2.0 based WSO2 products a try. After all it’s totally free and open source so it doesn’t cost you a penny to try our software. I guarantee that it would be a great experience and after that you will love WSO2 products.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;On a finishing note I would like to quote the WSO2 Carbon 2.0 release note here….&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;WSO2 Carbon 2.0.0 - Middleware a' la carte&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Welcome to the WSO2 Carbon 2.0.0 release. This release is available for download at &lt;a href="http://wso2.org/projects/carbon"&gt;http://wso2.org/projects/carbon&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;WSO2 Carbon is the base platform for all WSO2 Java products. Built on OSGi, Carbon encapsulates major SOA functionality such as data services, business process management, ESB routing/transformation, rules, security, throttling, caching, logging and monitoring. These product capabilities are no longer tied to individual products, but are available as components.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;A Carbon feature consists of one or more Carbon components. These are nothing but Eclipse equinox P2 features. In order to extend the functionality of you Carbon server, simply install new features onto you server as outlined in &lt;a href="https://wso2.org/wiki/display/carbon/p2-based-provisioning-support"&gt;https://wso2.org/wiki/display/carbon/p2-based-provisioning-support&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;Key Features&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ol&gt;&lt;li&gt;Extensible OSGi component based architecture&lt;/li&gt;&lt;li&gt;P2 provisioning based feature enhancement of the server&lt;/li&gt;&lt;li&gt;Unified server management framework &lt;/li&gt;&lt;li&gt;Unified Management Console&lt;/li&gt;&lt;li&gt;Web service, JMX &amp;amp; Equinox OSGi console based administration&lt;/li&gt;&lt;li&gt;Integrated security &amp;amp; permissions management&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;New Features In This Release&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;Experimental Equinox P2 based provisioning support - extend your Carbon instance by installing new P2 features (See &lt;a href="https://wso2.org/wiki/display/carbon/p2-based-provisioning-support"&gt;https://wso2.org/wiki/display/carbon/p2-based-provisioning-support&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Fixed start levels eliminated&lt;/li&gt;&lt;li&gt;Performance improvements to the Registry&lt;/li&gt;&lt;li&gt;Ability to make normal jar files into OSGi bundle (Just copy the jar files into CARBON_HOME/repository/components/lib)&lt;/li&gt;&lt;li&gt;Various bug fixes and enhancements including architectural improvements to Apache Axis2, Apache Rampart, Apache Sandesha2 , WSO2 Carbon and other projects, including security fixes&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;How to Run&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ol&gt;&lt;li&gt;Extract the downloaded zip&lt;/li&gt;&lt;li&gt;Go to the bin directory in the extracted folder&lt;/li&gt;&lt;li&gt;Run the wso2server.sh or wso2server.bat as appropriate&lt;/li&gt;&lt;li&gt;Point you browser to the URL https://localhost:9443/carbon/&lt;/li&gt;&lt;li&gt;Use "admin", "admin" as the username and password.&lt;/li&gt;&lt;li&gt;If you need to start the OSGi console with the server use the property -DosgiConsole when starting the server&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;For more details, run, wso2server.sh (wso2server.bat) --help&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;How to Install Additional Features&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;You can build your own server by selecting only the features that you require&lt;/div&gt;&lt;div style="text-align: justify;"&gt;For further details refer to&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://wso2.org/wiki/display/carbon/p2-based-provisioning-support"&gt;https://wso2.org/wiki/display/carbon/p2-based-provisioning-support&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;Known Issues&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;All known issues have been recorded at&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://wso2.org/jira/browse/CARBON"&gt;https://wso2.org/jira/browse/CARBON&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;Training&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;WSO2 Inc. offers a variety of professional Training Programs, including training on general web services as well as WSO2 Carbon, Apache Axis2, Data Services and a number of other products.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;For additional support information please refer to &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wso2.com/training/course-catalog/" style="text-decoration: none;"&gt;http://wso2.com/training/course-catalog/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;Support&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;WSO2 Inc. offers a variety of development and production support programs, ranging from web-based support up through normal business hours, to premium 24x7 phone support.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;For additional support information please refer to &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wso2.com/support/"&gt;http://wso2.com/support/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;For more information on WSO2 Carbon, visit the WSO2 Oxygen Tank (&lt;a href="http://wso2.org/"&gt;http://wso2.org&lt;/a&gt;)&lt;/div&gt;&lt;div style="text-align: justify;"&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/4206392247746930256-6263109386266605955?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/6263109386266605955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=6263109386266605955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/6263109386266605955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/6263109386266605955'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/07/wso2-carbon-platform-takes-another.html' title='WSO2 Carbon Platform Takes Another Giant Step Forward'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-4836576392880692943</id><published>2009-05-08T07:14:00.000-07:00</published><updated>2009-05-08T07:36:33.698-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='terminator'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Terminator is Here! Make Your Judgement!</title><content type='html'>&lt;div style="text-align: justify;"&gt;I recently installed '&lt;a href="http://www.tenshu.net/terminator/"&gt;Terminator&lt;/a&gt;' on my laptop which is running Ubuntu Gutsy. Terminator is a neat little shell client for Linux and many other platforms, which enables you to split the shell screen horizontally and vertically into multiple shell screens. This is a feature that I've always longed for.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;As a software developer I usually have to work with multiple applications and multiple shell instances at the same time. For example, very often I fire off my IDE from one shell instance, run my Maven builds in another shell instance, interact with SVN from another shell instance and browse the local file system from another shell instance. Most traditional shell clients attempt to address this requirement by providing tabs. Tabs are great but keeping track of which application is running in which tab and switching between them accordingly can be a real pain. It becomes an unavoidable annoyance when you open up more than 3 tabs.&lt;br /&gt;&lt;br /&gt;In my opinion, Terminator gives you the most optimal solution for this problem by giving the ability to split a single shell screen into multiple shell screens. You can see all the shell instances you have opened up on your screen at one glance and switching between them is lot more easier than having to switch between tabs. Splitting the shell screen is also easy with Terminator. Simply right click on the Terminator shell and select one of the split options available from the context menu that appears. Following is a little screen shot of Terminator that I took when working with four shell instances. It clearly illustrates the power of Terminator.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Agr7CcJVYp8/SgRDEqwpmEI/AAAAAAAAACY/nEqoxzuNdKQ/s1600-h/terminator.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 250px;" src="http://2.bp.blogspot.com/_Agr7CcJVYp8/SgRDEqwpmEI/AAAAAAAAACY/nEqoxzuNdKQ/s400/terminator.png" alt="" id="BLOGGER_PHOTO_ID_5333461606190389314" border="0" /&gt;&lt;/a&gt;Installing Terminator on Ubuntu systems is also pretty easy. Simply add the following line to your sources.list file, update the apt cache and type 'sudo apt-get install terminator' to install the application. Piece of cake!!&lt;br /&gt;&lt;blockquote&gt;deb http://ppa.launchpad.net/gnome-terminator/ubuntu gutsy main restricted universe multiverse&lt;br /&gt;&lt;/blockquote&gt;(Depending on the version of your Ubuntu installation, you might have to edit this line)&lt;br /&gt;&lt;br /&gt;If you often happen to work with many shell screens at once you'll definitely love 'Terminator'. So install 'Terminator' today and join the fun!!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-4836576392880692943?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/4836576392880692943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=4836576392880692943' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/4836576392880692943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/4836576392880692943'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/05/terminator-is-here-make-your-judgement.html' title='Terminator is Here! Make Your Judgement!'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Agr7CcJVYp8/SgRDEqwpmEI/AAAAAAAAACY/nEqoxzuNdKQ/s72-c/terminator.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-1798351784425032670</id><published>2009-05-02T22:44:00.000-07:00</published><updated>2009-05-02T23:15:13.771-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><title type='text'>A 'Good' ESB Should....</title><content type='html'>&lt;div style="text-align: justify;"&gt;As technologies like SOA and Web Services continue to become more and more dominant mechanisms for implementing complex distributed systems, the demand for efficient and reliable enterprise service bus middleware is becoming larger and larger. There are dozens of potential ESB solutions out there, some open source and some proprietary, but the cold hearted truth is most of these products have a number of short comings, which makes them totally useless in production environments. Production environments don't require fast ESBs. They need ultra fast ESBs that can handle thousands of concurrent user requests. such deployments require middleware which can satisfy scalability and availability requirements through features such as load balancing, clustering and fail over support. A good ESB should also be capable of dealing with many communication protocols, transport mechanisms and messaging standards.&lt;br /&gt;&lt;br /&gt;Fortunately we are not totally out of hope. There are some really good products out there which give you all the above mentioned features and deliver 100% in production deployments. &lt;a href="http://wso2.org/projects/esb"&gt;WSO2 ESB&lt;/a&gt; is certainly one of those middleware solutions which is fast, reliable and feature rich. It is based on Apache's tried and tested &lt;a href="http://synapse.apache.org"&gt;Apache Synapse&lt;/a&gt; light weight ESB and starting from version 2.0 it is also based on WSO2's revolutionary &lt;a href="http://wso2.org/projects/carbon"&gt;Carbon framework&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;WSO2 folks recently published a cool &lt;a href="http://wso2.org/library/demonstrations/flash-demo-wso2-enterprise-service-bus-wso2-esb"&gt;flash presentation&lt;/a&gt; which walks us through all the basic features of WSO2 ESB within a few minutes. Have a look and see whether your ESB delivers at least half of the things the WSO2 ESB provides.&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/4206392247746930256-1798351784425032670?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/1798351784425032670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=1798351784425032670' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/1798351784425032670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/1798351784425032670'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/05/good-esb-should.html' title='A &apos;Good&apos; ESB Should....'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-7926582886754357494</id><published>2009-04-25T07:40:00.000-07:00</published><updated>2009-04-25T08:22:01.556-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xerces'/><category scheme='http://www.blogger.com/atom/ns#' term='summer of code'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='derby'/><title type='text'>Summer of Code is Back</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a href="http://socghop.appspot.com/"&gt;Google Summer of Code 2009&lt;/a&gt;, the annual open source feast organized by the Internet giant Google is now underway. I also applied for the contest and I'm pleased to announce that &lt;a href="http://wiki.apache.org/general/HiranyaJayathilaka/gsoc2009/derby-dblook-proposal"&gt;my project proposal&lt;/a&gt; to implement SQL authorization support for &lt;a href="http://db.apache.org/derby"&gt;Apache Derby&lt;/a&gt; dblook has been accepted. So that makes me a GSoC winner, two times in a row. Last year I &lt;a href="http://wiki.apache.org/general/HiranyaJayathilaka/gsoc2008/xerces-j-proposal"&gt;implemented&lt;/a&gt; XML Schema 1.1 type alternatives support for &lt;a href="http://xerces.apache.org/xerces2-j/"&gt;Apache Xerces2/J&lt;/a&gt; under the guidance of Khaled Noaman. This year Dag Wanvik will be mentoring my project. &lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I'm eagerly looking forward to complete this task in time and of course in classy fashion. Apache Derby community is really active, dynamic and supportive. I feel gifted to get an opportunity to work with such a passionate group of committers. And not to mention this is going to be a great learning experience as well as a genuine test of skill for me.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;On the sad side, this will probably be the last GSoC I'm going to take part as a student of the &lt;a href="http://www.mrt.ac.lk/"&gt;University of Moratuwa&lt;/a&gt;. I will be officially passing out from the University in a couple of months time. University of Moratuwa became the no. 1 ranked institute in last year's GSoC which made us really happy and proud of ourselves. I'm confident that my University has ranked pretty high this year too (Google haven't released the numbers as of yet). So that means this is the last time I get to enjoy being on top of the world in GSoC :(&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-7926582886754357494?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/7926582886754357494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=7926582886754357494' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/7926582886754357494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/7926582886754357494'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/04/summer-of-code-is-back.html' title='Summer of Code is Back'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-8446639093147442650</id><published>2009-04-09T07:46:00.000-07:00</published><updated>2009-04-09T08:31:31.079-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='committer'/><category scheme='http://www.blogger.com/atom/ns#' term='xerces'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Committed to Apache Xerces</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Agr7CcJVYp8/Sd4UtQD2jZI/AAAAAAAAACA/FHmFffDu4gY/s1600-h/apache-xerces.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 283px; height: 130px;" src="http://4.bp.blogspot.com/_Agr7CcJVYp8/Sd4UtQD2jZI/AAAAAAAAACA/FHmFffDu4gY/s400/apache-xerces.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5322714577236299154" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The &lt;a href="http://xerces.apache.org/"&gt;Apache Xerces&lt;/a&gt; community granted me committer status for &lt;a href="http://xerces.apache.org/xerces2-j/"&gt;Apache Xerces2-J&lt;/a&gt;. The vote was called in just a few days back and it was officially closed on 8th of April (yesterday). Xerces2-J is an open source library for parsing, validating and manipulating XML documents. It is the most matured and most standard complaint XML parser available for Java applications today. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;Apache Xerces used to be a subproject of the Apache XML project but due to the immense popularity and high adoption rate that Xerces continued to exhibit, it became a top level project in year 2004. Presently Apache Xerces is a collection of four sub projects.&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;Apache Xerces C++&lt;br /&gt;&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Apache Xerces2 Java&lt;br /&gt;&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Apache Xerces Perl&lt;br /&gt;&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Apache XML Commons&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The original code base which formed the foundation of Xerces C++ and Xerces-J was developed at IBM and donated to ASF in year 1999. Therefore Apache Xerces happens to be one of the oldest projects of the &lt;a href="http://www.apache.org/"&gt;ASF&lt;/a&gt; as well. In fact Xerces is nearly as old as the ASF itself and will be celebrating its 10th anniversary this November. Given all the facts and figures, it is indeed a great honour to be a part of such a majestic open source project :)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Talking about Apache Xerces2-J, it supports a large number of XML and XML related standards and APIs. The latest released version (2.9.1) supports the following specs.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;XML 1.0 (4th Edition)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Namespaces in XML 1.0 (2nd Edition)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;XML 1.1 (2nd Edition)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Namespaces in XML 1.1 (2nd Edition)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;W3C XML Schema 1.0 (2nd Edition)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;XInclude 1.0 (2nd Edition)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;OASIS XML Catalogs 1.1&lt;br /&gt;&lt;/li&gt;&lt;li&gt;SAX 2.0.2&lt;br /&gt;&lt;/li&gt;&lt;li&gt;DOM Level 3 Core, Load and Save&lt;br /&gt;&lt;/li&gt;&lt;li&gt;DOM Level 2 Core, Events, Traversal and Range&lt;br /&gt;&lt;/li&gt;&lt;li&gt;JAXP 1.3&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Due to the performance levels achievable through Xerces and its high level of standard compliancy, hundreds of open source projects and other commercial software applications make use of Xerces2-J. It is fair enough to say that Xerces2-J is the most widely used XML parser in the Java world. If you have a Java application which does some XML related stuff it's very likely that Xerces2-J is somewhere in your application's classpath. People sometimes use it even without knowing that they are actually using Xerces2-J. Sun Microsystems ships Xerces2-J with their JDK. This enables Sun JDK users to develop XML parsing applications powered by Xerces2-J without having to explicitly put the Xerces2-J jars in the project classpaths. However folks at Sun Microsystems have changed the Xerces2-J package name from org.apache.xerces.* to com.sun.org.apache.xerces.* which in my opinion is being a little ungrateful :(&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Nowadays we are working on getting Xerces2-J to support the new XML Schema 1.1 specification from &lt;a href="http://www.w3c.org/"&gt;W3C&lt;/a&gt;. In fact I started contributing to Xerces2-J by implementing a XML Schema 1.1 feature as a Google Summer of Code participant, last year. I've been taking part in mailing list discussions and fixing bugs ever since. The Xerces2-J community is rather small but there's a very helpful and friendly bunch of experienced developers there, who have dedicated their lives and careers to Xerces. That encourages young developers like me to do more and more towards the betterment of the project, as and when the time permits.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-8446639093147442650?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/8446639093147442650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=8446639093147442650' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8446639093147442650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8446639093147442650'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/04/committed-to-apache-xerces.html' title='Committed to Apache Xerces'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Agr7CcJVYp8/Sd4UtQD2jZI/AAAAAAAAACA/FHmFffDu4gY/s72-c/apache-xerces.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-4370233902128700866</id><published>2009-04-04T07:26:00.001-07:00</published><updated>2009-04-04T07:32:36.381-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='moinc'/><category scheme='http://www.blogger.com/atom/ns#' term='software testing'/><category scheme='http://www.blogger.com/atom/ns#' term='scalability'/><title type='text'>MOINC and Scalability</title><content type='html'>&lt;div style="text-align: justify;"&gt;My colleague &lt;a href="http://aravindad.blogspot.com"&gt;Aravinda&lt;/a&gt; just published a cool &lt;a href="http://aravindad.blogspot.com/2009/04/moinc-yes-it-scales.html"&gt;post&lt;/a&gt; on his blog regarding the &lt;a href="http://techfeast-hiranya.blogspot.com/2009/03/pushing-to-limits.html"&gt;scalability testing round&lt;/a&gt; we carried out on &lt;a href="http://moinc.org"&gt;MOINC&lt;/a&gt; a few weeks back. He has also published some charts illustrating the results of our tests. Have a look and see for yourself.&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/4206392247746930256-4370233902128700866?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/4370233902128700866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=4370233902128700866' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/4370233902128700866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/4370233902128700866'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/04/moinc-and-scalability.html' title='MOINC and Scalability'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-248451178482619040</id><published>2009-04-04T07:14:00.000-07:00</published><updated>2009-04-04T07:37:19.718-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>WSO2 ESB 2.0.2 Released...Come and Get it</title><content type='html'>&lt;p style="text-align: justify;"&gt;The WSO2 ESB team is pleased to announce the release of version 2.0.2 of the Open Source Enterprise Service Bus (ESB). This is a bug fix release of the 2.0 release of WSO2 ESB&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;WSO2 ESB is a lightweight and easy-to-use Open Source Enterprise Service Bus (ESB) available under the Apache Software License v2.0. WSO2 ESB allows administrators to simply and easily configure message routing, intermediation, transformation, logging, task scheduling, etc.. The runtime has been designed to be completely asynchronous, non-blocking and streaming based on the Apache Synapse core.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;WSO2 ESB 2.0.2 is developed on top of the revolutionary &lt;a class="externalLink" href="http://wso2.org/projects/carbon"&gt;Carbon platform&lt;/a&gt; (Middleware a' la carte), and is based on the OSGi framework to achieve the better modularity for your SOA architecture. This also contains a lots of new features and many other optional components to customize the behavior of the server. Further, if you do not want any of the built in features, you can uninstall those features without any trouble. In other words, this ESB can be customized to your SOA needs.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: left;"&gt;You can download this distribution from &lt;a class="externalLink" href="http://wso2.org/downloads/esb"&gt;http://wso2.org/downloads/esb&lt;/a&gt; and give it a try.&lt;/p&gt; &lt;h2&gt;&lt;span style="font-size:100%;"&gt;How to Run&lt;/span&gt; &lt;/h2&gt; &lt;ol type="1"&gt;&lt;li&gt;Extract the downloaded zip&lt;/li&gt;&lt;li&gt;Go to the bin directory in the extracted folder&lt;/li&gt;&lt;li&gt;Run the wso2server.sh or wso2server.bat as appropriate&lt;/li&gt;&lt;li&gt;Point your browser to the URL &lt;a class="moz-txt-link-freetext" href="https://localhost:9443/carbon"&gt;https://localhost:9443/carbon&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Use "admin", "admin" as the username and password to login as an admin and create a user account&lt;/li&gt;&lt;li&gt;Assign the required permissions to the user through a role&lt;/li&gt;&lt;li&gt;If you need to start the OSGi console with the server use the property -DosgiConsole when starting the server&lt;/li&gt;&lt;li&gt;Samples configurations can be specified by passing the property -Desb.sample=${SAMPLE_NUMBER}&lt;/li&gt;&lt;/ol&gt; &lt;h2&gt;&lt;span style="font-size:100%;"&gt;Key Features&lt;/span&gt;&lt;/h2&gt; &lt;ul&gt;&lt;li&gt;Proxy services - facilitating transport, interface (WSDL/Schema/Policy), message format (SOAP 1.1/1.2, POX/REST, Text, Binary), QoS (WS-Addressing/WS-Security/WS-RM) and optimization switching (MTOM/SwA).&lt;/li&gt;&lt;li&gt;Non-blocking HTTP/S transports based on Apache HttpCore for ultrafast execution and support for thousands of connections at high concurreny with constant memory usage.&lt;/li&gt;&lt;li&gt;Built in Registry/Repository, facilitating dynamic updating and reloading of the configuration and associated resources (e.g. XSLTs, XSD, JS, ..)&lt;/li&gt;&lt;li&gt;Easily extended via custom Java class (mediator and command)/Spring mediators, or BSF Scripting languages (Javascript, Ruby, Groovy, etc.)&lt;/li&gt;&lt;li&gt;Built in support for scheduling tasks using the Quartz scheduler.&lt;/li&gt;&lt;li&gt;Load-balancing (with or without sticky sessions) /Fail-over, and clustered Throttling and Caching support&lt;/li&gt;&lt;li&gt;WS-Security, WS-Reliable Messaging, Caching and Throttling configurable via (message/operation/service level) WS-Policies&lt;/li&gt;&lt;li&gt;Lightweight, XML and Web services centric messaging model&lt;/li&gt;&lt;li&gt;Support for industrial standards (Hessian binary web service protocol/Financial information exchange protocol)&lt;/li&gt;&lt;li&gt;Enhanced support for the VFS/JMS/Mail transports&lt;/li&gt;&lt;li&gt;Support for message splitting and aggregation using the EIP&lt;/li&gt;&lt;li&gt;Database lookup and store support with DBMediators with reusable database connection pools&lt;/li&gt;&lt;li&gt;JMX monitoring support&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;&lt;span style="font-size:100%;"&gt;New Features of the WSO2 ESB 2.0 (2.0.2)&lt;/span&gt;&lt;/h2&gt; &lt;ul&gt;&lt;li&gt;This ESB release is based on Carbon "Middleware a' la carte" which is an OSGi based SOA platform by WSO2 Inc.&lt;/li&gt;&lt;li&gt;Transactional JMS transport and the Transaction mediators&lt;/li&gt;&lt;li&gt;Integrated graphical user management&lt;/li&gt;&lt;li&gt;Integrated graphical key store management&lt;/li&gt;&lt;li&gt;Configurable logging through the management console&lt;/li&gt;&lt;li&gt;Graphical data source declaration&lt;/li&gt;&lt;li&gt;WS-Eventing support and Event Sources making it an event broker&lt;/li&gt;&lt;li&gt;Enhanced sequence and proxy service editor&lt;/li&gt;&lt;li&gt;Module management capability&lt;/li&gt;&lt;li&gt;Transport configuration management through the graphical console&lt;/li&gt;&lt;li&gt;Graceful/Forced shutdown/restart&lt;/li&gt;&lt;li&gt;Enhanced integrated registry and search functionalities&lt;/li&gt;&lt;li&gt;User permissions support&lt;/li&gt;&lt;li&gt;Enhanced monitoring tools for statistics and tracing&lt;/li&gt;&lt;li&gt;Try-It tool to try an existing service&lt;/li&gt;&lt;li&gt;Graphical policy editor&lt;/li&gt;&lt;li&gt;Administration console fully internationalized&lt;/li&gt;&lt;li&gt;Better modularity and extendability through OSGi component architecture&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;&lt;span style="font-size:100%;"&gt; How You Can Contribute....&lt;/span&gt; &lt;/h2&gt; &lt;h3&gt;&lt;span style="font-size:100%;"&gt; Mailing Lists&lt;/span&gt; &lt;/h3&gt; &lt;p&gt; Join our mailing list and correspond with the developers directly. &lt;/p&gt; &lt;ul&gt;&lt;li&gt; Developer List : &lt;a class="externalLink" href="mailto:esb-java-dev@wso2.org"&gt;esb-java-dev@wso2.org&lt;/a&gt;&lt;a class="externalLink" href="http://wso2.org/mailarchive/esb-java-dev/"&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt; User List : &lt;a class="externalLink" href="mailto:esb-java-user@wso2.org"&gt;esb-java-user@wso2.org&lt;/a&gt;&lt;a class="externalLink" href="http://wso2.org/mailarchive/esb-java-user/"&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;&lt;span style="font-size:100%;"&gt; Reporting Issues&lt;/span&gt; &lt;/h3&gt; &lt;p&gt; WSO2 encourages you to report issues and your enhancement requests for the WSO2 ESB using the public &lt;a class="externalLink" href="http://www.wso2.org/jira/browse/ESBJAVA"&gt;JIRA&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; You can also watch how they are resolved, and comment on the progress.. &lt;/p&gt; &lt;h3&gt;&lt;span style="font-size:100%;"&gt; Discussion Forums&lt;/span&gt; &lt;/h3&gt; &lt;p&gt; Alternatively, questions could be raised using the forums available. &lt;/p&gt; &lt;p&gt;&lt;a class="externalLink" href="http://wso2.org/forum/187"&gt;WSO2 ESB Forum&lt;/a&gt; : Discussion forum for WSO2 ESB developers/users &lt;/p&gt; &lt;h2&gt;&lt;span style="font-size:100%;"&gt;Training&lt;/span&gt;&lt;/h2&gt; &lt;p style="text-align: justify;"&gt;WSO2 Inc. offers a variety of professional Training Programs, including training on general Web services as well as WSO2 ESB, Apache Synapse, Apache Axis2 and number of other products.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;For additional support information please refer to &lt;a class="externalLink" href="http://wso2.com/training/course-catalog/"&gt;http://wso2.com/training/course-catalog/&lt;/a&gt;&lt;/p&gt; &lt;h2&gt;&lt;span style="font-size:100%;"&gt;Support&lt;/span&gt;&lt;/h2&gt; &lt;p style="text-align: justify;"&gt;WSO2 Inc. offers a variety of development and production support programs, ranging from Web-based support up through normal business hours, to premium 24x7 phone support.&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;For additional support information please refer to &lt;a class="externalLink" href="http://wso2.com/support/"&gt;http://wso2.com/support/&lt;/a&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;For more information on WSO2 ESB, visit the WSO2 Oxygen Tank (&lt;a class="externalLink" href="http://wso2.org/"&gt;http://wso2.org&lt;/a&gt;)&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;We welcome your feedback on this implementation. Thank you for your interest in WSO2 ESB. &lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;p style="text-align: justify;"&gt;&lt;i&gt;-- The WSO2 ESB Team --&lt;/i&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-248451178482619040?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/248451178482619040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=248451178482619040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/248451178482619040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/248451178482619040'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/04/wso2-esb-202-releasedcome-and-get-it.html' title='WSO2 ESB 2.0.2 Released...Come and Get it'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-3527936011138775658</id><published>2009-03-27T14:20:00.000-07:00</published><updated>2009-03-27T14:23:58.422-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='amsterdam'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='netherlands'/><category scheme='http://www.blogger.com/atom/ns#' term='apachecon'/><title type='text'>ApacheCon EU 2009....Finishing Touches</title><content type='html'>&lt;div style="text-align: justify;"&gt;The &lt;a href="http://apachecon.com/"&gt;ApacheCon EU 2009&lt;/a&gt; (Amsterdam, Netherlands) came to an end today evening. We had a BarCamp on 23rd followed by a Hackathon on 24th. The conference commenced on 25th and continued until today evening. We had two keynotes and around 64 technical presentations during the last three days. I was fortunate enough to take part in the following presentations.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Embrace OSGi (by Carsten Ziegeler, member of ASF)&lt;/li&gt;&lt;li&gt;Tales from OSGi trenches (by Bertrand Delacretaz, member of ASF)&lt;/li&gt;&lt;li&gt;OSGi as a framework for building a product line (by Ruwan Linton and Afkham Azeez, WSO2)&lt;/li&gt;&lt;li&gt;HBasics: Hadoop's big database (by Michael Stack, Microsoft)&lt;/li&gt;&lt;li&gt;Apache license as a business model (by Paul Fremantle, WSO2)&lt;/li&gt;&lt;li&gt;Clustered Web services for high availability and scalability (by Ruwan Linton, WSO2)&lt;/li&gt;&lt;li&gt;EDA with Apache Synapse (by Paul Fremantle, WSO2)&lt;/li&gt;&lt;li&gt;Performance tuning Apache Tomcat (by Filip Hanik, SpringSource)&lt;/li&gt;&lt;li&gt;How to become a project at ASF (by Martijn Dashorst)&lt;/li&gt;&lt;li&gt;Introduction to NIO 2.0 (by Jeanfrancois Arcand)&lt;/li&gt;&lt;li&gt;Using MINA 2.0 (by Emmanuel Lecharmy, IKTEK)&lt;/li&gt;&lt;li&gt;Becoming a Tomcat super user (by mark Thomas, SpringSource) &lt;/li&gt;&lt;li&gt;High availability != High cost (by Norman Maurer, HEAG MediaNet)&lt;/li&gt;&lt;li&gt;Apache POI (by Nick Burch, Torchbox)&lt;/li&gt;&lt;li&gt;Enterprise build &amp;amp; test in the cloud (Carlos Sanchez, G2iX)&lt;/li&gt;&lt;li&gt;Shindig for blogs and wikis (Dave Johnson, VP Apache Roller)&lt;/li&gt;&lt;/ul&gt;I also got the opportunity to chair most of the above sessions thanks to the organizers and folks of the Apache TAC. Thanks guys! You rock!&lt;br /&gt;&lt;br /&gt;Out of the two keynotes, I really enjoyed the keynote on 'open sourcing the analyst business' by James Governor. It was a real blast!&lt;br /&gt;&lt;br /&gt;In addition to all the technical knowledge I gathered during the  conference I also made quite a lot of new friends. I met some very interesting people working at various levels and projects of the ASF. All in all it was a very successful ApacheCon, not just to me but to everybody that participated. (I have a lot more to mention but unfortunately I have to cut it short. I have lot of packing left to do before I start the return journey tomorrow morning.)&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/4206392247746930256-3527936011138775658?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/3527936011138775658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=3527936011138775658' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/3527936011138775658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/3527936011138775658'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/03/apachecon-eu-2009finishing-touches.html' title='ApacheCon EU 2009....Finishing Touches'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-485537804014634618</id><published>2009-03-25T13:53:00.000-07:00</published><updated>2009-03-25T14:03:19.505-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='apachecon'/><title type='text'>Happy Birthday ASF</title><content type='html'>&lt;div style="text-align: justify;"&gt;The &lt;a href="http://apache.org"&gt;Apache Software Foundation&lt;/a&gt; (ASF) celebrates its 10th anniversary today. Having finished the regular activities of the &lt;a href="http://www.eu.apachecon.com/c/aceu2009"&gt;ApacheCon&lt;/a&gt; scheduled for the day, all the committers, PMC members and members got together to celebrate this great occasion. &lt;a href="http://www.jimjag.com/"&gt;Jim Jagielski&lt;/a&gt;, the chairman of the ASF board of directors cut the giant birth day cake. It was indeed a fun filled and proud moment for everyone at Apache. Another important event that took place during the reception was the key signining party where around 20 folks including myself, got the opportunity to get signed PGP keys from ASF.&lt;br /&gt;&lt;br /&gt;All in all it was a great birth day party with loads of fun and excitement. Happy 10th anniversary ASF!!!&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/4206392247746930256-485537804014634618?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/485537804014634618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=485537804014634618' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/485537804014634618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/485537804014634618'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/03/happy-birthday-asf.html' title='Happy Birthday ASF'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-6650699136767255577</id><published>2009-03-23T13:21:00.000-07:00</published><updated>2009-03-23T13:51:27.403-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='amsterdam'/><category scheme='http://www.blogger.com/atom/ns#' term='barcamp'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='apachecon'/><title type='text'>ApacheCon EU 2009 Begins</title><content type='html'>&lt;div style="text-align: justify;"&gt;After a 3 hour flight from Sri Lanka to India followed by an 8 hour flight from India to Netherlands, I finally arrived at beautiful Amsterdam city, to take part in the &lt;a href="http://www.eu.apachecon.com/c/aceu2009/"&gt;ApacheCon Europe 2009&lt;/a&gt;. The event is now being held at the Movenpick hotel at the Amsterdam city center. The main attraction of the first day was &lt;a href="http://www.barcamp.org/BarCampApache"&gt;BarCamp Apache&lt;/a&gt; where a number of developers, committers and open source geeks like me presented on a variety of topics. I myself conducted a presentation on Apache Synapse and how it can be used to scale up Web Services deployments. Among the other presentations I really liked the presentation by Ricardo Varela on software for mobile platforms and the presentation by Ross Gardler on teaching open source. Sri Lankan student community was credited for their achievements in the last Google Summer of Code during the presentation by Ross :)&lt;br /&gt;&lt;br /&gt;All in all it was a really awesome BarCamp with lots of  great talks, t-shirts, sweets and coffee. Let's see how the things turn out tomorrow.&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/4206392247746930256-6650699136767255577?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/6650699136767255577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=6650699136767255577' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/6650699136767255577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/6650699136767255577'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/03/apachecon-eu-2009-begins.html' title='ApacheCon EU 2009 Begins'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-7858753846117045311</id><published>2009-03-19T08:41:00.000-07:00</published><updated>2009-03-19T08:55:13.884-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='NASA'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>Web Services for Mission Critical Apps</title><content type='html'>&lt;div style="text-align: justify;"&gt;While reading the “&lt;a href="http://oreilly.com/catalog/9780596510046/"&gt;Beautiful Code&lt;/a&gt;” from &lt;a href="http://oreilly.com/"&gt;O'Reilly Media&lt;/a&gt; I came across a chapter compiled by Ronald Mak. He was a senior scientist at the Research Institute for Advanced Computer Science and he has been contracted twice by the NASA to develop their enterprise applications to manage space missions. In the chapter 20 of “Beautiful Code” Ronald describes the internals of the Collaborative Information Portal (CIP) which he and his team developed for the NASA for the &lt;a href="http://marsrovers.nasa.gov/home/index.html"&gt;Mars Exploration Rover (MER)&lt;/a&gt; mission which commenced in year 2003. The development of the project has taken nearly two years and needless to say being a highly mission critical ERP solution the requirements of the system have been very demanding. Among the most fundamental features of the system were,&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;Time management (Managing all time zones on Earth and two time zones on Mars)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Personnel management (Managing all mission personnel) and,&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Data management (Managing all the data sent from the two automated Rovers on Mars)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;So how did Ronald and his team tackled this mammoth task? They used a 3-tiered service oriented architecture (SOA). Most of the code has been written in Java and they have followed J2EE standards. Also the developers of the CIP have used commercial off-the-shelf (COTS) software as much as possible to avoid re-inventing the wheel thus saving loads of time and effort. The client tier of the system consists mainly of standalone GUI applications developed mostly with Swing. These client applications communicate with a set of Web Services hosted on a J2EE compliant application server. This forms the middleware tier of the CIP. Finally there is a data tier which consists of mission file servers, databases and other metadata repositories. Ronald explains that using an SOA based on J2EE, was one of the main driving forces behind their success with the CIP.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Web Services in the middleware tier are perhaps the most important components of the system. These services have been implemented using Enterprise Java Beans (EJB). They have developed two types of beans, namely stateless session beans and stateful session beans. Stateless session beans act as the service providers by receiving all the client requests and routing them to relevant stateful session beans which implement the business logic of the system. Ronald further elaborates that use of Web Services made CIP modular, language independent and loosely coupled.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;All-in-all Ronald and his team have manged to deliver the solution on schedule. The end system has recorded a 99.9% uptime, indicating how reliable the system was. In addition to using Web Services and SOA to make the system highly maintainable and scalable, they have employed a number of other techniques to shape up the CIP into a highly reliable ERP solution. According to Roland, logging was one such technique. They have used a system wide logging mechanism based on Apache Log4j to log all the important (and even not so important) activities that take place within the system. They have also developed services to specifically support the monitoring function of the system which means that they have considered monitoring as a fundamental requirement of the system. In addition, Ronald and the team made the CIP dynamically configurable and hot swappable to minimize the down time maximize the robustness.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I believe that CIP of NASA is one of many examples which effectively demonstrates the power of Web Services and SOA. These technologies can help even huge government agencies like NASA to develop large complex enterprise software systems on time while meeting all the strict reliability, availability and scalability requirements as desired. As the time goes on these state of the art technologies will prove to be even more powerful and useful. I'm just glad that I'm into further exercising SOA as a Software Engineer.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-7858753846117045311?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/7858753846117045311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=7858753846117045311' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/7858753846117045311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/7858753846117045311'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/03/web-services-for-mission-critical-apps.html' title='Web Services for Mission Critical Apps'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-3737428933435849348</id><published>2009-03-18T04:18:00.000-07:00</published><updated>2009-03-18T04:29:06.933-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='social networking'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='bandwidth'/><title type='text'>Social Networking: Bandwidth Eater?</title><content type='html'>&lt;div style="text-align: justify;"&gt;Me and a group of my colleagues at &lt;a href="http://www.mrt.ac.lk"&gt;University of Moratuwa&lt;/a&gt;, conducted a small research to analyze the impact of social networking on bandwidth usage in corporate networks. Under the guidance of Dr. Chandana Gamage, we studied the network resource utilization patterns triggered by browsing social networking sites such as &lt;a href="http://www.facebook.com"&gt;Facebook&lt;/a&gt; and &lt;a href="http://www.youtube.com"&gt;YouTube&lt;/a&gt;. We then put our observations and findings into a short research paper titled, “&lt;a href="http://people.apache.org/~hiranya/SocialNetworking.pdf"&gt;Network Resource Utilization and Social Networking&lt;/a&gt;”. Our research was rather small and probably not highly analytical but I think anybody who runs a corporate network should have a quick look at it. However if you are a sworn social networking fan, I would say it’s best not to read it since our findings might seriously piss you off ;)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;On a finishing note let me just say that bandwidth on corporate networks is a valuable resource that is generally shared among many people. So use it carefully and use it responsibly. Having some fun with social networking is fine. But always know your limits and ethical responsibilities.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-3737428933435849348?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/3737428933435849348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=3737428933435849348' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/3737428933435849348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/3737428933435849348'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/03/social-networking-bandwidth-eater.html' title='Social Networking: Bandwidth Eater?'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-2805668802886041021</id><published>2009-03-17T01:12:00.000-07:00</published><updated>2009-03-17T01:50:25.776-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='moinc'/><category scheme='http://www.blogger.com/atom/ns#' term='university of moratuwa'/><category scheme='http://www.blogger.com/atom/ns#' term='software testing'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><title type='text'>Pushing to the Limits</title><content type='html'>&lt;div style="text-align: justify;"&gt;Just a couple of days back, me and the rest of the &lt;a href="http://moinc.org/"&gt;MOINC&lt;/a&gt; team conducted a large scale performance testing round for MOINC at the advanced computing lab of the &lt;a href="http://www.cse.mrt.ac.lk/"&gt;Department of CSE&lt;/a&gt;, &lt;a href="http://www.mrt.ac.lk/"&gt;University of Moratuwa&lt;/a&gt;. We used over 20 PCs for our tests and the resulting numbers we obtained were pretty amazing. My friend and colleague &lt;a href="http://aravindad.blogspot.com/"&gt;Aravinda&lt;/a&gt; is already in the process of analyzing the statistics collected and we hope to compile a research paper based on the results. We will be publishing the details regarding the experiments as well as the collected data soon on our website in a more aesthetically pleasing manner. In the meantime I would like to say that we as the developers are very happy regarding the level of scalability the prototype MOINC platform has displayed during the tests.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Following are some of the pictures that were taken during the performance testing round. The sight of the MOINC screen saver coming up in about 20 PCs at the same time was truly a treat to the eye :)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Agr7CcJVYp8/Sb9hGJLuK9I/AAAAAAAAABY/1VBRPZK-1bQ/s1600-h/DSC00301.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_Agr7CcJVYp8/Sb9hGJLuK9I/AAAAAAAAABY/1VBRPZK-1bQ/s400/DSC00301.JPG" alt="" id="BLOGGER_PHOTO_ID_5314072843492666322" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Agr7CcJVYp8/Sb9hF4sowLI/AAAAAAAAABQ/o8KiPMCOEfs/s1600-h/DSC00307.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_Agr7CcJVYp8/Sb9hF4sowLI/AAAAAAAAABQ/o8KiPMCOEfs/s400/DSC00307.JPG" alt="" id="BLOGGER_PHOTO_ID_5314072839067320498" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Agr7CcJVYp8/Sb9hFWaMUaI/AAAAAAAAABI/cf8B1f0I0Ok/s1600-h/DSC00299.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_Agr7CcJVYp8/Sb9hFWaMUaI/AAAAAAAAABI/cf8B1f0I0Ok/s400/DSC00299.JPG" alt="" id="BLOGGER_PHOTO_ID_5314072829863154082" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Agr7CcJVYp8/Sb9hGUo7NMI/AAAAAAAAABg/ZImILRfWblM/s1600-h/DSC00308.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_Agr7CcJVYp8/Sb9hGUo7NMI/AAAAAAAAABg/ZImILRfWblM/s400/DSC00308.JPG" alt="" id="BLOGGER_PHOTO_ID_5314072846567945410" border="0" /&gt;&lt;/a&gt;I thank our department head, Mrs. Vishaka Nanayakkara and officer in charge of the advanced computing lab, Mr. Ananda Fransiscu for all the support in carrying out this round of testing.&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/4206392247746930256-2805668802886041021?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/2805668802886041021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=2805668802886041021' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/2805668802886041021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/2805668802886041021'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/03/pushing-to-limits.html' title='Pushing to the Limits'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Agr7CcJVYp8/Sb9hGJLuK9I/AAAAAAAAABY/1VBRPZK-1bQ/s72-c/DSC00301.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-6933944822124933433</id><published>2009-03-16T06:05:00.000-07:00</published><updated>2009-03-16T06:22:25.689-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='axis2'/><category scheme='http://www.blogger.com/atom/ns#' term='moinc'/><category scheme='http://www.blogger.com/atom/ns#' term='university of moratuwa'/><category scheme='http://www.blogger.com/atom/ns#' term='cse'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><title type='text'>Get Ready to Get MOINCed</title><content type='html'>&lt;div style="text-align: justify;"&gt;Few weeks back me and my team managed to finalize developing the first prototype of our dream project, &lt;a href="http://moinc.org"&gt;MOINC&lt;/a&gt;. If you are clueless as to what project MOINC is all about, it is an attempt to combine the Web Services paradigm with grid computing. The goal of the project is to be able to deploy enterprise Web Services for high availability and high scalability using commodity hardware. So far we have done three formal presentations describing each of the major components of the MOINC platform and we have written three research papers which we hope to publish very soon. In addition to the presentations we also conducted a formal demonstration of MOINC at University of Moratuwa, using 6 computers which effectively gave a preview of MOINC in action to a panel headed by our project supervisor &lt;a href="http://sanjiva.weerawarana.org/"&gt;Dr. Sanjiva Weerawarana&lt;/a&gt; and our senior lecturer &lt;a href="http://crdesilva.blogspot.com/"&gt;Dr. Chathura De Silva&lt;/a&gt;. Presentations were attended by Dr. Sanath Jayasena, Dr. Chandana Gamage, Dr. Chathura De Silva and Mr. Shantha Fernando of the &lt;a href="http://www.cse.mrt.ac.lk"&gt;department of CSE&lt;/a&gt;, &lt;a href="http://www.mrt.ac.lk"&gt;University of Moratuwa&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;We got pretty good feedback from all those who attended the presentations and the demonstration, clearly indicating that we are on the right track to make MOINC into a useful software solution for business organizations worldwide. Some of the core features of the MOINC platform that we demonstrated are listed below.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ol&gt;&lt;li&gt;Deploy, manage and undeploy service artifacts (Service artifacts are uploaded as Axis archives - *.aar files)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Track down idling computers in the local network and add them to the MOINC grid dynamically&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Download service artifacts into idling computers from a centralized registry/repository&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Action script based screen saver for client PCs&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Load balance the incoming service requests among all the active nodes connected to the MOINC grid (Powered by &lt;a href="http://synapse.apache.org"&gt;Apache Synapse&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Monitor the grid via an AJAX based Web interface (Powered by WSO2 WSF/AJAX)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Collect statistics related to computers connected to the MOINC grid and use them in the intelligent load balance mode&lt;br /&gt;&lt;/li&gt;&lt;li&gt;MOINC community portal and forums (backed by &lt;a href="http://wso2.org/projects/registry"&gt;WSO2 Registry&lt;/a&gt; and JForum)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;That’s certainly a lot of features for a mere prototype. No wonder we got pretty good feedback. However there is certainly lot more work to be done. We need to improve the overall security of the platform. Currently there is a couple of security loop holes in MOINC SMM that we need to close off. Also Dr. Sanjiva suggested writing a Java security manager for MOINC client agent which ensures the security of PCs connected to the MOINC server. We need to start working on that soon as well. Also we have to finish our Maven2 integration stuff and get the release artifacts for MOINC 0.1-alpha out soon. We still haven’t cut the release artifacts for all the components of MOINC but the full source code of the prototype can be checked out from our &lt;a href="http://www.moinc.org/index.php?option=com_content&amp;amp;view=article&amp;amp;id=56&amp;amp;Itemid=66"&gt;SVN&lt;/a&gt;. Also checkout the &lt;a href="http://www.moinc.org/index.php?option=com_content&amp;amp;view=article&amp;amp;id=53&amp;amp;Itemid=65"&gt;developer resources&lt;/a&gt; section on our &lt;a href="http://moinc.org"&gt;website&lt;/a&gt; for all the slides we used for the above mentioned three presentations.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I will also make arrangements for all of you humble readers to have a sneak peak at our research papers before we actually publish them. I promise. Meanwhile enjoy the presentations and other design documents :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-6933944822124933433?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/6933944822124933433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=6933944822124933433' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/6933944822124933433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/6933944822124933433'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/03/get-ready-to-get-moinced.html' title='Get Ready to Get MOINCed'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-5317323779055276249</id><published>2009-03-12T22:55:00.000-07:00</published><updated>2009-03-12T23:00:40.531-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='carbon'/><category scheme='http://www.blogger.com/atom/ns#' term='osgi'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>Carbonizing SOA</title><content type='html'>&lt;div style="text-align: justify;"&gt;It's probably bit late to blog regarding this subject, but what the heck? After all, late is better than never.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wso2.com/"&gt;WSO2&lt;/a&gt; folks released their flagship product, the mother of all open source SOA solutions, &lt;a href="http://wso2.org/projects/carbon"&gt;WSO2 Carbon – Middleware a la carte&lt;/a&gt;. It is a componentized, customizable SOA platform built on Equinox and OSGi. The platform can be configured and tailored to suit the enterprise architecture of any business organization. Among the major components of the Carbon platform are;&lt;br /&gt;&lt;br /&gt;1.WSO2 Web Services Application Server 3.0&lt;br /&gt;2.WSO2 ESB 2.0&lt;br /&gt;3.WSO2 Registry 2.0&lt;br /&gt;4.WSO2 Business Process Server 1.0&lt;br /&gt;&lt;br /&gt;All these high level components share the same set of core Carbon modules. It is really exciting to see how those high level middleware solutions combine with the core Carbon framework to deliver the results. Sounds interesting? Feel like learning more? &lt;a href="http://wso2.org/library/webinars/wso2-synergies-carbon-story"&gt;Here&lt;/a&gt; you can find an introductory presentation on WSO2 Carbon. It gives a good insight into this revolutionary product and its architecture. Also don't forget to checkout other related articles and presentations on &lt;a href="http://wso2.org/"&gt;WSO2 Oxygen Tank&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-5317323779055276249?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/5317323779055276249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=5317323779055276249' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/5317323779055276249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/5317323779055276249'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2009/03/carbonizing-soa.html' title='Carbonizing SOA'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-8573263046271162668</id><published>2008-12-09T21:02:00.000-08:00</published><updated>2008-12-09T21:22:40.209-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ea'/><category scheme='http://www.blogger.com/atom/ns#' term='nfs'/><category scheme='http://www.blogger.com/atom/ns#' term='race'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Going Undercover....</title><content type='html'>&lt;div style="text-align: justify;"&gt;I recently completed the video game '&lt;a href="http://undercover.needforspeed.com"&gt;Need for Speed Undercover&lt;/a&gt;', the latest member of the popular &lt;a href="http://www.needforspeed.com"&gt;NFS&lt;/a&gt; series by &lt;a href="http://www.ea.com"&gt;EA&lt;/a&gt; Games. The game was so exciting and thrilling that I had to blog about it.&lt;br /&gt;&lt;br /&gt;I have been a big fan of the NFS series since NFS 2. I really liked NFS Underground, NFS Underground 2 and NFS Most Wanted. NFS Underground was the first game in the NFS series to have a base storyline. Underground 2 and Most Wanted took the NFS series to a whole new level by making the storyline even more exciting and adding more features to the game. However I was a bit disappointed when NFS Carbon came out. It certainly did not live up to the hype and I found the game rather short and less challenging compared to its predecessors. Things got even worse when they released NFS Pro Street. To me Pro Street is the most unsuccessful game in the whole series. The whole point of playing a racing game on your PC or PS3 is to drive extremely fast and crash into things (which is something you cannot do in the real world without hurting someone or getting brain damage). But Pro Street does not allow the player to do that since going fast and crashing into objects would cause your car to get totaled and immobilized. Also fixing damaged cars will consume large sums of money the player has earned in the career mode of the game. And the biggest problem I had with NFS Pro Street was that it took the game back to the world of professional racing on closed racing circuits. For somebody who liked the virtual street racing experience offered by NFS Underground and NFS Most Wanted getting used to racing on closed tracks is almost like getting tortured.&lt;br /&gt;&lt;br /&gt;However it seems the folks at EA have learned their lesson from the feedback they got from the fans for the NFS Pro Street. With NFS Undercover they have taken the action back into the open streets. Player gets to ride in a virtual city in some of the finest auto mobiles of the world. Couple of cars worth mentioning are Bugatti Veryon and the McLaren F1 which was last available in NFS 6. Cars are categorized into three, namely Japanese, European and American (see complete &lt;a href="http://www.nfsplanet.com/en/nfsuc/cars/"&gt;car list&lt;/a&gt;). However NFS Carbon fans will realize that these three categories effectively map to the three car categories in NFS Carbon (tuners, exotics, and muscles). The city has plenty of wide open roads where the player can really push the cars into their limits. Most of the tracks enable the player to accelerate the car to its top speed and hold that velocity.&lt;br /&gt;&lt;br /&gt;Another aspect of the game I liked most was the soundtracks. Predecessors of NFS Undercover had mostly hard rock and technical death metal oriented sound tracks. But Undercover brings you a little bit of pop, a little bit of Latin and even a little bit of Spanish in addition to the rock stuff.&lt;br /&gt;&lt;br /&gt;The underlying story of the game is perhaps the most interesting feature. In the previous versions of NFS the storyline was simple and very much predictable. In those games there is some kind of a bad ass, champion racer who bosses the other racers in the town (for example Razor in Most Wanted and Darius in Carbon). The player enters the world of racing as an amateur and starts to work his way up to become the new racing king of the town. In the process the player will have to confront many other racers, companions of the existing champion and sometimes even the police. But NFS Undercover brings you a totally different storyline. The story is full of action, suspense and even a bit of romance. The storyline clearly has some traces of '&lt;a href="http://www.imdb.com/title/tt0187078/"&gt;Gone in 60 Seconds&lt;/a&gt;', '&lt;a href="http://www.imdb.com/title/tt0232500/"&gt;Fast and the Furious&lt;/a&gt;' and '&lt;a href="http://www.imdb.com/title/tt0313043/"&gt;CSI Miami&lt;/a&gt;'. Also the game enables the player to play the roles of the street racer, gang member, car thief as well as the federal agent.&lt;br /&gt;&lt;br /&gt;The game is pretty fast paced and action packed. Graphics and the related effects are so natural and realistic. It's everything the racing gamers ever dreamed of. If you are like me and if you haven't played Undercover yet then go for it. It's totally worth it. Well done EA. You guys rock!&lt;br /&gt;&lt;br /&gt;Also don't forget to check out &lt;a href="http://www.nfsplanet.com"&gt;NFS Planet&lt;/a&gt; for some cool Undercover wallpapers and movies.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;You are not good&lt;br /&gt;        and you are not bad.&lt;br /&gt;You blend and you listen&lt;br /&gt;        and you don't trust anyone.&lt;br /&gt;Once you go undercover&lt;br /&gt;        you are on your own.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-8573263046271162668?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/8573263046271162668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=8573263046271162668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8573263046271162668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8573263046271162668'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2008/12/going-undercover.html' title='Going Undercover....'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-3421828150371548592</id><published>2008-10-23T00:57:00.000-07:00</published><updated>2008-10-23T01:03:47.535-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='moinc'/><category scheme='http://www.blogger.com/atom/ns#' term='grid computing'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><title type='text'>MOINC - The Future Web Services!!!</title><content type='html'>&lt;div style="text-align: justify;"&gt;As Web services continue to become the dominant paradigm in the arena of distributed computing, more and more people around the world are starting to get interested in improving the performance and scalability achievable from Web services deployments. An enterprise grade Web services deployment must be high available and scalable in order for it to be useful to the clients and provide a competitive advantage for the service provider. Due to this reason it has become a must for the Web services middleware providers to support high availability and scalability via general techniques such as clustering.&lt;br /&gt;&lt;br /&gt;Me and some of my colleagues recently started a venture to explore the potential of grid computing as a means of improving the availability and scalability of Web services deployments. Our plan is to design and develop a complete open source Java Web services deployment platform which makes use of grid computing as the basis for clustering. This exciting concept is a brain child of one of our lecturers at the &lt;a href="http://www.cse.mrt.ac.lk"&gt;Department of Computer Science and Engineering&lt;/a&gt;, &lt;a href="http://sanjiva.weerawarana.org/"&gt;Dr. Sanjiva Weerawarana&lt;/a&gt;, who also happens to be the chairman and CEO of &lt;a href="http://wso2.org"&gt;WSO2&lt;/a&gt;. This research project focuses on not only improving the scalability of Web services deployments via grid computing but also putting the much wasted electrical energy to good use by getting idling computers to do some useful work.&lt;br /&gt;&lt;br /&gt;We have named the project 'MOINC' which stands for Mora Open Infrastructure for Network Computing. (If you are confused what 'Mora' is all about it's a little nick name for the &lt;a href="http://www.mrt.ac.lk"&gt;University of Moratuwa&lt;/a&gt;. 'Mora' also means shark in Sinhala.) So far we have managed to successfully complete the requirements gathering and design phases of this massive R&amp;amp;D effort. We have identified four components in our target platform and four groups of undergrads are working on implementing the components. The four components are;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;MOINC Server&lt;/li&gt;&lt;li&gt;MOINC Client Agent&lt;/li&gt;&lt;li&gt;MOINC Server Manager&lt;/li&gt;&lt;li&gt;Thisara Communication Framework &lt;/li&gt;&lt;/ul&gt;You can learn more about our project and its four main components from our &lt;a href="http://moinc.org"&gt;official website&lt;/a&gt;. You will also find links to our design documents, proposals, specifications and SVN repositories there. We recently released the 0.1-alpha version of the Thisara messaging framework which is one of the four components of the MOINC platform. You can download the binaries from our website too.&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/4206392247746930256-3421828150371548592?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/3421828150371548592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=3421828150371548592' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/3421828150371548592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/3421828150371548592'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2008/10/moinc-future-web-services.html' title='MOINC - The Future Web Services!!!'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-4308835929667659384</id><published>2008-10-10T07:34:00.000-07:00</published><updated>2008-10-10T07:38:34.517-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='ie'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>Google Chrome, Looking Good</title><content type='html'>&lt;div style="text-align: justify;"&gt;It seems almost everybody is taking a strong liking into &lt;a href="http://www.google.com/chrome"&gt;Google Chrome&lt;/a&gt; these days and almost everybody who has downloaded it seems to be appreciating it a lot. So I myself thought of giving Google Chrome a trial run. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;However I have to say that my first impression on Google Chrome was not a very good one mainly due to the fact that it’s only available for the Windows platform at the moment. I’m an open source fan and that makes me naturally dislike anything that won’t run on Linux out of the box. However I think I can forgive Google for that. I believe they just wanted to keep the things simple by focusing on one target platform since this is only a beta release. Also they probably wanted to get the maximum possible test coverage out of this release. In that case Windows is the only logical solution since whether we like it or not Windows still dominates the client side system software market. (and it will probably remain that way for a long time :-( )&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Other than the above mentioned glitch my experience with Google Chrome has been a fairly good one. It’s easy to install and configure. I really like the wording and labeling convention used in Chrome. It’s simple and casual English that anybody can understand. Not a single technical word is used so that even someone who is browsing the Internet for the first time can easily get used to Google Chrome. Even the buttons that are usually rendered as ‘browse’ buttons in other browsers will be rendered as ‘choose file’ buttons. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The user interfaces are pretty cool too. Chrome UI designers have clearly dumped the approaches taken by &lt;a href="http://www.microsoft.com/windows/products/winfamily/ie/default.mspx"&gt;IE&lt;/a&gt; developers and &lt;a href="http://www.mozilla.com/firefox/"&gt;Firefox&lt;/a&gt; developers to come up with their own style. It has no menu bars and no tool bars. All it has is the address bar with few more additional controls embedded into it. The address bar can be used to type in both URLs and search queries. One advantage of this organization is that it makes the browser’s main Window large so that the user can see more content without having to scroll much. But the problem is for someone who is so used to IE or Firefox, figuring out how to control the browser is going to be a bit of a pain.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In my opinion it has slightly better performance compared to Firefox-3 and IE-7. (well at least I feel that way) I have experienced frequent browser crashes with both IE-7 and Firefox-3. But I’m yet to experience that in Chrome. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Perhaps the most enticing feature of Chrome is that every time a new tab is opened a new process is forked off by the browser. This way each tab gets its own set of resources. This will hopefully rectify most of the memory related issues experienced by other browsers. If you are a regular Firefox user you know that as we continue to open new tabs in Firefox the overall performance of the browser degrades significantly. This is because all the tabs have to share the same set of resource (memory in particular). By dedicating a separate process for each tab Google Chrome effectively deals with this issue.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I will continue to test Google Chrome in the days to come. I just started with Chrome and I will be in a better position to give a comprehensive feedback after another couple of weeks. Until then ‘good job Google’!&lt;/div&gt;&lt;div style="text-align: justify;"&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/4206392247746930256-4308835929667659384?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/4308835929667659384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=4308835929667659384' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/4308835929667659384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/4308835929667659384'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2008/10/google-chrome-looking-good.html' title='Google Chrome, Looking Good'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-7956992036220038026</id><published>2008-10-08T23:57:00.000-07:00</published><updated>2008-10-09T00:06:23.841-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='yacc'/><category scheme='http://www.blogger.com/atom/ns#' term='parser'/><category scheme='http://www.blogger.com/atom/ns#' term='grammar'/><category scheme='http://www.blogger.com/atom/ns#' term='lex'/><category scheme='http://www.blogger.com/atom/ns#' term='language'/><title type='text'>Lex It! Yacc It!</title><content type='html'>&lt;div style="text-align: justify;"&gt;Lately I have been working a lot with the two legendary parser generator tools, ‘&lt;a href="http://en.wikipedia.org/wiki/Lex_programming_tool"&gt;Lex&lt;/a&gt;’ and ‘&lt;a href="http://en.wikipedia.org/wiki/Yacc"&gt;Yacc&lt;/a&gt;’. (Well it’s actually ‘Flex’ and ‘Bison’ to be precise) To be honest I didn’t have any experience with Lex and Yacc two weeks back. But the two applications are so easy to learn and master that anyone could become an expert compiler developer in no time. Practically speaking one could start developing parsers and compilers without any prior knowledge on compiler theory or language parsing. All you need to get started is some experience in C programming. However I have to admit that some knowledge on regular expressions, context free grammars and push down automatons can make your life lot easier since that would help you better understand the syntax of the two configuration languages used by Lex and Yacc. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Lex (or Flex) generates a C function called yylex which is capable of scanning and tokenizing a given input. The input to Lex primarily consists of regular expressions and C code segments to be executed on detection of strings that match the regular expression definitions. Yacc (or Bison) generates a C function called yyparse which accepts a sequence of tokens from yylex and parses them. The YACC input would include the productions of the language grammar and C code segments to be executed on application of the productions. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;It’s truly amazing how easy to develop parsers to accept complex languages with Lex and Yacc. The more I use it more I like it. The syntax of the configuration files are well structured and so easy to understand. I was so inspired by these two applications that I started developing my own command-line mathematics package for Unix/Linux systems. My plan is to develop something which is similar to the command interpreter that comes with &lt;a href="http://www.mathworks.com/products/matlab/"&gt;MATLAB&lt;/a&gt;. I have already implemented support for executing simple mathematical expressions, trigonometric functions, logarithms and variables. I’m currently trying to implement the support for user defined functions. Once that is done I intend to implement support for matrix algebra and simple statistics.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The above sounds like a lot of work but thanks to Lex and Yacc I have to write only a very small amount of code. The two magic tools do the job by generating hundreds of lines of C code for me. Of course needless to say that developing something similar from the scratch would surely take months.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I’ve always wondered how come there are so many programming languages. But now I think I know the answer. It’s so freaking easy to develop parsers and compilers for a language with tools like Lex and Yacc. Once you have a language expressed in terms of a set of productions it takes only a few minutes to develop a fully functional compiler. So anyone can come up with an idea for a new language and turn it into reality in a flash. In fact I’m thinking about doing the same in the near future :-)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you are like me and want to learn and master Lex and Yacc &lt;a href="http://epaperpress.com/lexandyacc/download/lexyacc.pdf"&gt;here&lt;/a&gt; is a cool reference guide. It helped me out a lot and I’m sure it will do the same for you.&lt;/div&gt;&lt;div style="text-align: justify;"&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/4206392247746930256-7956992036220038026?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/7956992036220038026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=7956992036220038026' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/7956992036220038026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/7956992036220038026'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2008/10/lex-it-yacc-it.html' title='Lex It! Yacc It!'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-5370286584042354539</id><published>2008-09-01T05:50:00.000-07:00</published><updated>2008-09-01T06:01:04.353-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xerces'/><category scheme='http://www.blogger.com/atom/ns#' term='schema'/><category scheme='http://www.blogger.com/atom/ns#' term='summer of code'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>GSoC 2008 ....... Done</title><content type='html'>&lt;div style="text-align: justify;"&gt;You may have noticed that my blog has gone rather silent in the last couple of months. Well, the reason was my &lt;a href="http://code.google.com/soc/2008"&gt;Google Summer of Code&lt;/a&gt; (GSoC) project. The final deadline was on 18th of August so I worked really hard to deliver the goods on time and finally I can proudly state that I managed to successfully complete my project on time.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;The objective of my GSoC project was to implement XML schema type alternatives support for &lt;a href="http://xerces.apache.org/xerces2-j/"&gt;Apache Xerces2/J&lt;/a&gt;, the legendary open source XML parser for Java applications. Type alternatives is the answer from W3C XML schema working group, for conditional type assignment problem. This feature was first introduced in the XML schema 1.1 structures specification. Type alternatives allow a type to be assigned to an element dynamically at validation time based on one or more conditions. Conditions are expressed as XPath 2.0 expressions. Here is an example element declaration which uses XML schema type alternatives.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Agr7CcJVYp8/SLvm5cKmbuI/AAAAAAAAAAo/hB9ORAut5kI/s1600-h/Screenshot.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_Agr7CcJVYp8/SLvm5cKmbuI/AAAAAAAAAAo/hB9ORAut5kI/s400/Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5241036465863290594" border="0" /&gt;&lt;/a&gt;&lt;xsd:element name="message" type="messageType" minoccurs="0" maxoccurs="unbounded"&gt;As stated in the above code snippet the declared type of the message element is the complex type called messageType. However the element declaration also contains a few type alternatives. These type alternatives allow the type of the message elements to be determined at the validation time. Based on the conditions stated as the test attribute values the schema validator will assign a type for the message element prior to validating its content. The expressions '@kind' and '@code' refer to two attributes of the message element. The first type alternative will assign the type called messageTypeString if the kind attribute has the value 'string' and the code attribute has a value greater than 1000.&lt;br /&gt;&lt;br /&gt;When the schema validator encounters an element declaration with one or more type alternatives it will evaluate the test expressions one by one until an expression which evaluates to true is found. When such a matching type alternative is found the corresponding type will be assigned to the element. If none of the type alternatives match then a default type will be assigned.&lt;br /&gt;&lt;br /&gt;My project mainly consisted of two main sections. First section of the project was to implement the type alternatives traversal support so that Xerces2/J can properly traverse an XML schema document which contains type alternatives and add the corresponding information to the schema grammar. Implementing this was fairly easy and I managed to complete it prior to th GSoC mid term evaluations.  The second part of the project was to implement type alternatives validation. This was fairly difficult since I had to develop a bare minimal XPath 2.0 implementation for Xerces2/J. Developing the XPath processor actually covered a significant portion of the entire project.&lt;br /&gt;&lt;br /&gt;My workings will be fully available in the Xerces2/J code base (even now the code related to traversal part is in one of the SVN branches) very soon. All in all it was a great learning experience as it was a great opportunity for me to learn a whole bunch of cool technologies like XML, XML schema, and XPath 2.0. I also got the opportunity to put some of my knowledge on theory of computing into action and sharpen my programming skills. I would like to give my heartiest gratitude to the Google, the Apache community and very specially to my mentor Khaled Noaman for being a very supportive guide right from the start of my project.&lt;/xsd:element&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-5370286584042354539?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/5370286584042354539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=5370286584042354539' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/5370286584042354539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/5370286584042354539'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2008/09/gsoc-2008-done.html' title='GSoC 2008 ....... Done'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Agr7CcJVYp8/SLvm5cKmbuI/AAAAAAAAAAo/hB9ORAut5kI/s72-c/Screenshot.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-5404809258100342347</id><published>2008-08-19T20:07:00.000-07:00</published><updated>2008-08-19T20:26:45.414-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='fix'/><title type='text'>Financial Applications with WSO2 ESB</title><content type='html'>&lt;div style="text-align: justify;"&gt;It's getting better and better folks. FIX protocol support in &lt;a href="http://wso2.org/esb"&gt;WSO2 ESB&lt;/a&gt; is evolving in a blistering rate. &lt;a href="http://wso2.org/library/articles/developing-financial-applications-wso2-esb"&gt;This article&lt;/a&gt; by Asanka Abeysinghe shows how an entire broker trading platform can be re-engineered using WSO2 ESB. It combines a set of well known usecases of the FIX transport of WSO2 ESB and demonstrates how the ESB can be used to build complete financial applications.&lt;br /&gt;&lt;br /&gt;However when looking back at the way things have gone this is nothing to be surprised of. Few months back Paul Fremantle, CTO of WSO2, infact &lt;a href="http://pzf.fremantle.org/2008/04/synapse-and-wso2-esb-and-quickfixj.html"&gt;predicted&lt;/a&gt; that FIX protocol support in WSO2 ESB will soon evolve to this stage.&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/4206392247746930256-5404809258100342347?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/5404809258100342347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=5404809258100342347' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/5404809258100342347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/5404809258100342347'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2008/08/financial-applications-with-wso2-esb.html' title='Financial Applications with WSO2 ESB'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-6880818749375903474</id><published>2008-08-10T00:08:00.000-07:00</published><updated>2008-08-10T00:22:57.433-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='fix'/><title type='text'>FIX Support in WSO2 ESB</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a href="http://wso2.org/projects/esb"&gt;WSO2 ESB&lt;/a&gt; is an ultra fast, lightweight, open source ESB based on &lt;a href="http://synapse.apache.org"&gt;Apache Synapse&lt;/a&gt;. The FIX transport implementation of Apache Synapse is fully operational in WSO2 ESB 1.7. &lt;a href="http://asanka-home.blogspot.com/"&gt;Asanka Abeysinghe&lt;/a&gt; from WSO2 has recently published a comprehensive &lt;a href="http://wso2.org/library/3837"&gt;article&lt;/a&gt; on using the FIX transport in WSO2 ESB. He starts by giving a short introduction to the FIX protocol and goes onto explaining  a number of interesting usecases for the FIX transport in WSO2 ESB.&lt;br /&gt;&lt;br /&gt;If you are looking for a powerful SOA based solution to deal with your FIX transactions, this is a must read for you. While you are at it don't forget to take a peek at the article titled '&lt;a href="http://wso2.org/library/3449"&gt;Apache Synapse FIX'ed&lt;/a&gt;', and article I wrote few months back introducing the FIX transport implementation of Apache Synapse.&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/4206392247746930256-6880818749375903474?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/6880818749375903474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=6880818749375903474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/6880818749375903474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/6880818749375903474'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2008/08/fix-support-in-wso2-esb.html' title='FIX Support in WSO2 ESB'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-8273951461859713016</id><published>2008-08-09T05:54:00.001-07:00</published><updated>2008-08-09T06:01:31.122-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='quickfix/j'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='fix'/><category scheme='http://www.blogger.com/atom/ns#' term='transport'/><title type='text'>Fixing the FIX Transport</title><content type='html'>&lt;p style="margin-bottom: 0in;" align="justify"&gt;The 1.2 version of &lt;a href="http://synapse.apache.org/"&gt;Apache Synapse&lt;/a&gt;, the open source lightweight ESB was released on June 2008. One of the most striking features of this release was the &lt;a href="http://www.fixprotocol.org"&gt;FIX&lt;/a&gt; transport implementation, mainly due to the fact that most ESBs in the world still do not support the FIX protocol. The Synapse FIX transport implementation which is only two months old at the moment has already made a lot of hype in the world of Software Engineering and SOA. It seems we already got a few interested people (potential clients?) who are at the moment testing and playing with the transport.&lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="justify"&gt;Synapse 1.2 ships with two samples that demonstrate the FIX transport module. One of them demonstrates how two FIX endpoints can be bridged using Apache Synapse. The other samples shows how to bridge an HTTP client with a FIX endpoint. Over the last couple of months the Synapse community has worked really hard to further improve the FIX transport implementation and also to identify more exciting usecases for the transport module. As a result we managed to add four new samples demonstrating the FIX transport to the Synapse documentation. These samples are currently available in the Apache Synapse Snapshot and will be most likely included in the next release.&lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="justify"&gt;The first of the four newly added samples (sample 259) shows how to bridge a FIX client with an HTTP endpoint. The sample effectively demonstrates how Banzai, the sample FIX blotter that ships with &lt;a href="http://www.quickfixj.org"&gt;Quickfix/J&lt;/a&gt; can be used to send order requests via Synapse to a service listening on HTTP. The sample uses the XSLT mediator to convert the FIX messages into a SOAP messages.&lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="justify"&gt;The second of the new samples (sample 260) shows how Synapse can be used to bridge a FIX endpoint with an AMQP endpoint. Here once the FIX message is converted into XML it will be bound to a JMS payload and sent to an AMQP consumer. Since AMQP is used widely in business applications, I believe that this sample will open up the door way to a ton of really cool usecases.&lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="justify"&gt;The third sample (sample 261) demonstrates how Synapse can be used to switch between FIX sessions with different versions (BeginString values). The sample successfully bridges a FIX 4.0 session with a FIX 4.1 session but the underlying concepts can be used to bridge virtually any two FIX sessions. One thing worth mentioning here is that the FIX transport implementation of Synapse initially did not support bridging FIX sessions of different versions. But considering the potential usecases, we implemented that feature very recently.&lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="justify"&gt;The fourth newly added sample (sample 262) demonstrates how CBR (Content Based Routing) can be done with FIX messages using Apache Synapse. The sample configuration causes Synapse to accept FIX messages over a session, read a certain symbol in the messages and based on the symbol value route the messages to different endpoints.&lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="justify"&gt;We also added namespace support to the FIX transport module so that it can properly parse and validate XML based FIX messages with namespaces. Another recent feature addition was improving the way FIX sessions are initialized in Synapse. The initial implementation lazy initializes all the FIX sessions for outgoing FIX messages. That means an outgoing session will not be created until a message arrives for that particular session. However since this leads to fairly large delays we improved the transport module so that the outgoing sessions are also initialized at the startup along with the incoming sessions. (the old way of initializing sessions is also supported)&lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="justify"&gt;Currently we are working on adding support for FIX repeated groups. (we already have a feature request for this on the JIRA from one of our users) All in all it seems that the FIX transport module for Synapse is increasingly becoming a very powerful and matured piece of software in a blistering rate.&lt;/p&gt; &lt;p style="margin-bottom: 0in;" align="justify"&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-8273951461859713016?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/8273951461859713016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=8273951461859713016' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8273951461859713016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8273951461859713016'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2008/08/fixing-fix-transport.html' title='Fixing the FIX Transport'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-7487289078463249700</id><published>2008-06-26T06:43:00.000-07:00</published><updated>2008-06-26T06:44:17.779-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='update manager'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Be Careful Using Ubuntu Update Manager</title><content type='html'>&lt;div style="text-align: justify;"&gt;Ubuntu Linux comes with a pretty cool Update Manager tool which searches for software updates and patches on the Internet and  provides options to install them. I've been using this tool for months to install various updates on my system. The best thing about the Ubuntu Update Manager is that, it not only updates the OS but also updates the drivers and other utilities installed on the system. Everything seemed to work fine until I installed some kernel updates on my system using the Update Manager.&lt;br /&gt;&lt;br /&gt;After applying the updates the Update Manager required a system restart to complete the update process. This has happened before so I patiently complied. But when the system rebooted I noticed that my system has gone dumb. Sounds were not working at all. And then I tried to connect to the Internet via Wi-Fi, only to find that my wireless network device is also screwed up. Luckily for me I have some friends who are professional Linux experts. I hooked up my computer to a wired network and contacted them over the Internet.&lt;br /&gt;&lt;br /&gt;Fixing the wireless connectivity issue was not a big deal. The very Update Manager which got me into trouble helped me out. I installed a bunch of driver updates listed by the Update Manager.  Then after a system reboot my Wi-Fi device was back up and running.&lt;br /&gt;&lt;br /&gt;The difficult part was fixing the audio related issue. I had to fire up the synaptic package manager and install a couple of Linux backport modules and restart the system to get sounds working again.&lt;br /&gt;&lt;br /&gt;However all in all it was yet another learning experience for me. If you are a regular Ubuntu Linux user like me, my advice to you is be careful when installing kernel patches using the Update Manager. Know what you are doing. Be ready to deal with some undesirable results.&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/4206392247746930256-7487289078463249700?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/7487289078463249700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=7487289078463249700' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/7487289078463249700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/7487289078463249700'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2008/06/be-careful-using-ubuntu-update-manager.html' title='Be Careful Using Ubuntu Update Manager'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-2257764580328550703</id><published>2008-06-11T03:55:00.000-07:00</published><updated>2008-06-11T04:03:18.895-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wsas. 2.3'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='axis2. web services'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><title type='text'>WSO2 WSAS 2.3 Released</title><content type='html'>&lt;div style="text-align: justify;"&gt;The WSO2 WSAS team is pleased to announce the release of the WSO2 WSAS 2.3. WSO2 WSAS is an enterprise ready Web services engine powered by Apache Axis2 release under the Apache Software License 2.0.&lt;br /&gt;&lt;br /&gt;This release can be downloaded from;&lt;br /&gt;&lt;a href="http://wso2.org/projects/wsas/java"&gt;http://wso2.org/projects/wsas/java&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;From the WSO2 WSAS 2.3 - Release Note - 10th June 2008&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;WSO2 WSAS is an enterprise ready Web services engine powered by Apache Axis2 which offers a complete middleware solution. It is a lightweight, high performing platform for Service Oriented Architectures, enabling business logic and applications.&lt;br /&gt;&lt;br /&gt;Bringing together a number of Apache Web services projects, WSO2 WSAS provides a secure, transactional and reliable runtime for deploying and managing Web services.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Key Features&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Data services support - Expose you enterprise data as a services in a jiffy&lt;br /&gt;* WSAS IDE - Eclipse IDE integration&lt;br /&gt;* Clustering support for High Availability &amp;amp; High Scalability&lt;br /&gt;* Full support for WS-Security, WS-Trust, WS-Policy and WS-Secure Conversation and XKMS&lt;br /&gt;* EJB service provider support - Expose your EJBs as services&lt;br /&gt;* Axis1 backward compatibility - Deploy Axis1 services on WSAS &amp;amp; Engage advanced WS-* protocols in front of legacy services&lt;br /&gt;* JMX &amp;amp; Web interface based monitoring and management&lt;br /&gt;* WS-* &amp;amp; REST support&lt;br /&gt;* GUI, command line &amp;amp; IDE based tools for Web service development&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;New Features In This Release&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Improved interoperability&lt;br /&gt;* Improved Data Services support&lt;br /&gt;* Various bug fixes to Apache Axis2, Apache Rampart &amp;amp; WSAS&lt;br /&gt;* WSO2 Mercury Integration - A new WS-RM Implementation&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Data Services - Bringing Enterprise Data to Web&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Service enable data locked in relational databases, CSV &amp;amp; Excel files in no time&lt;br /&gt;* Zero code. Simple descriptor file describes the data to service mapping&lt;br /&gt;* Controlled access to your data&lt;br /&gt;* Customizable XML output&lt;br /&gt;* Benefit from REST &amp;amp; WS-* support&lt;br /&gt;* Built-in Connection pooling support&lt;br /&gt;* Supports exposing Stored procedures &amp;amp; functions&lt;br /&gt;* Built-in caching&lt;br /&gt;* Throttling - to ensure your database is never overloaded.&lt;br /&gt;* Easy configuration via graphical console&lt;br /&gt;* Test your services via Try-it tool&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Training&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;WSO2 Inc. offers a variety of professional Training Programs, including&lt;br /&gt;&lt;br /&gt;training on general Web services as well as WSO2 WSAS, Apache Axis2, Data Services and a number of other products.&lt;br /&gt;&lt;br /&gt;For additional support information please refer to&lt;br /&gt;&lt;a href="http://wso2.com/training/course-catalog/"&gt;http://wso2.com/training/course-catalog/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Support&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;WSO2 Inc. offers a variety of development and production support programs, ranging from Web-based support up through normal business hours, to premium 24x7 phone support.&lt;br /&gt;&lt;br /&gt;For additional support information please refer to &lt;a href="http://wso2.com/support/"&gt;http://wso2.com/support/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For more information on WSO2 WSAS, visit the WSO2 Oxygen Tank (&lt;a href="http://wso2.org"&gt;http://wso2.org&lt;/a&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/4206392247746930256-2257764580328550703?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/2257764580328550703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=2257764580328550703' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/2257764580328550703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/2257764580328550703'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2008/06/wso2-wsas-23-released.html' title='WSO2 WSAS 2.3 Released'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-3434412036980877898</id><published>2008-06-10T03:32:00.000-07:00</published><updated>2008-06-10T03:35:36.891-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='1.7'/><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='wso2'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>WSO2 ESB 1.7 Released</title><content type='html'>&lt;div style="text-align: justify; font-family: verdana;" bgcolor="#ffffff" text="#000000"&gt;   The WSO2 Enterprise Service Bus (ESB) team is pleased to announce the release of its version 1.7 of the Open Source ESB.&lt;br /&gt;&lt;br /&gt;The WSO2 ESB is an ultra fast, light-weight and versatile Enterprise Service Bus based on the &lt;a href="http://synapse.apache.org/" target="_blank"&gt;Apache Synapse ESB&lt;/a&gt;. It allows you to Connect, Manage and Transform service interactions between Web services, REST/POX services and Legacy systems. You can easily switch transports between http/s, JMS, File Systems, Mail, FIX etc, or read/write from Databases, split, aggregate or clone messages and support declarative enforcement of QoS aspects such as WS-Security, WS-Reliable Messaging etc, and also switch between message formats such as SOAP 1.1/1.2, PoX/REST, Hessian, Text, Binary, MTOM and SwA.&lt;br /&gt;&lt;br /&gt;The WSO2 ESB is released under the Apache Software License v2.0, and ships with a graphical management and administration console and enhanced JMX management/monitoring support, and integrates seamlessly with the WSO2 Registry.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Webinar series introducing the WSO2 ESB v1.7:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;In this Webinar series Paul Fremantle, CTO of WSO2, will introduce the new features and capabilities of the WSO2 ESB. The first session will recap on the overall approach and benefits of the WSO2 ESB solution and the underlying Apache Synapse project, and then go into the added functionality and benefits of the 1.7 release. The series will include details of the newly released support for Hessian, FIX, AMQP and also discuss the improvements in performance and stability.&lt;br /&gt;&lt;br /&gt;    * For more details on the Webinar series, and to register,&lt;br /&gt;      visit &lt;a href="http://wso2.com/about/news/esb-webinar-june-17/" target="_blank"&gt;http://wso2.com/about/news/esb&lt;wbr&gt;-webinar-june-17/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Core features of the WSO2 ESB includes:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;    * Proxy services / Service mediation and Message mediation&lt;br /&gt;    * Support for Non-blocking http/s, JMS, FIX, Apache VFS (s/ftp, file,&lt;br /&gt;      zip/tar/gz, webdav, cifs..), POP3/IMAP/SMTP, AMQP transports&lt;br /&gt;    * Support for SOAP 1.1/1.2, PoX/REST, Hessian, Text and Binary payloads&lt;br /&gt;    * Support for scheduled task execution and management&lt;br /&gt;    * Support for custom extensions in Java through custom mediators, POJO&lt;br /&gt;      Classes and Java Command classes&lt;br /&gt;    * Support for Apache BSF Scripting languages such as (Javascript, Ruby,&lt;br /&gt;      Groovy..etc)&lt;br /&gt;    * Support for clustered deployment with pinned services and tasks&lt;br /&gt;    * Throttling, Caching, Load balancing and Failover support&lt;br /&gt;    * Support for declarative  WS-Reliable Messaging, WS-Security and&lt;br /&gt;      WS-Policy attachment&lt;br /&gt;    * Integrated WSO2 Registry with support for external Registries&lt;br /&gt;    * Ability to stop, re-start and gracefully shutdown the ESB through JMX&lt;br /&gt;    * Cluster aware sticky load balancing support&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;New features of the v.1.7 release includes:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;    * Support for Hessian binary messages&lt;br /&gt;    * FIX (Financial Information eXchange) protocol transport&lt;br /&gt;    * WS-Reliable Messaging support with WSO2 Mercury&lt;br /&gt;    * Ability to stop, re-start and gracefully shutdown the ESB through JMX&lt;br /&gt;    * Integrated WSO2 Registry shipped, with ability to connect to a remote&lt;br /&gt;      WSO2 Registry&lt;br /&gt;    * Support for re-usable database connection pools for DB report/lookup&lt;br /&gt;      mediators&lt;br /&gt;    * Support for GZip encoding and HTTP 100 continue&lt;br /&gt;    * Natural support for dual channel messaging with WS-Addressing&lt;br /&gt;    * Cluster aware sticky load balancing support&lt;br /&gt;    * Non-blocking streaming of large messages at high concurreny with&lt;br /&gt;      constant memory usage&lt;br /&gt;    * Support for an ELSE clause for the Filter mediator&lt;br /&gt;    * Ability to specify XPath expressions relative to the envelope or body&lt;br /&gt;    * Support for separate policies for incoming/outgoing messages&lt;br /&gt;    * Support for a mandatory sequence before mediation&lt;br /&gt;    * New Router mediator&lt;br /&gt;    * Ability to re-deploy proxy services&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Useful Links&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;    Download WSO2 ESB - &lt;a href="http://wso2.org/downloads/esb/" target="_blank"&gt;http://wso2.org/downloads/esb/&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://wso2.org/project/esb/java/1.7/docs/ESB_QuickStart.html" target="_blank"&gt;Quickstart Guide&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://wso2.org/project/esb/java/1.7/docs/installationguide.html" target="_blank"&gt;Installation Guide&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://wso2.org/project/esb/java/1.7/docs/administratorguide.html" target="_blank"&gt;Administration Guide&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://wso2.org/project/esb/java/1.7/docs/ESB_Samples.html" target="_blank"&gt;Samples Guide&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://wso2.org/project/esb/java/1.7/docs/docs_index.html" target="_blank"&gt;Documentation Index&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Contribute to WSO2 ESB&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;    SVN: &lt;a href="http://wso2.org/repos/wso2/trunk/esb/java/" target="_blank"&gt;http://wso2.org/repos/wso2&lt;wbr&gt;/trunk/esb/java/&lt;/a&gt;&lt;br /&gt;    JIRA: &lt;a href="http://wso2.org/jira/browse/ESBJAVA" target="_blank"&gt;http://wso2.org/jira/browse&lt;wbr&gt;/ESBJAVA&lt;/a&gt;&lt;br /&gt;    User list: &lt;a href="mailto:esb-java-user@wso2.org" target="_blank"&gt;esb-java-user@wso2.org&lt;/a&gt;&lt;br /&gt;    Developer list: &lt;a href="mailto:esb-java-dev@wso2.org" target="_blank"&gt;esb-java-dev@wso2.org&lt;/a&gt;&lt;br /&gt;    Web Forum: &lt;a href="http://wso2.org/forum/187" target="_blank"&gt;http://wso2.org/forum/187&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Training&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;WSO2 Inc. offers a variety of professional Training Programs, including training on general Web services as well as WSO2 ESB, Apache Synapse and Axis2, Data Services and a number of other products. For additional support information please refer to &lt;a href="http://wso2.com/training/course-catalog/" target="_blank"&gt;http://wso2.com/training&lt;wbr&gt;/course-catalog/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Support&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;WSO2 Inc. offers a variety of development and production support programs, ranging from Web-based support up through normal business hours, to premium 24x7 phone support. For additional support information please refer to &lt;a href="http://wso2.com/support/" target="_blank"&gt;http://wso2.com/support/&lt;/a&gt; For more information on WSO2 ESB visit the WSO2 Oxygen Tank (&lt;a href="http://wso2.org/" target="_blank"&gt;http://wso2.org&lt;/a&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/4206392247746930256-3434412036980877898?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/3434412036980877898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=3434412036980877898' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/3434412036980877898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/3434412036980877898'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2008/06/wso2-esb-17-released.html' title='WSO2 ESB 1.7 Released'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-7215930607260183002</id><published>2008-06-09T21:53:00.000-07:00</published><updated>2008-06-09T22:13:11.245-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='synapse'/><category scheme='http://www.blogger.com/atom/ns#' term='release'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='1.2'/><title type='text'>Apache Synapse 1.2 Released</title><content type='html'>&lt;p align="justify"&gt;The Apache Synapse team is pleased to announce the release of version 1.2 of the Open Source Enterprise Service Bus (ESB).&lt;/p&gt;&lt;p align="justify"&gt;Apache Synapse is an lightweight and easy-to-use Open Source Enterprise Service Bus (ESB) available under the Apache Software License v2.0. Apache Synapse allows administrators to simply and easily configure message routing, intermediation, transformation and logging task scheduling, etc.. The runtime has been designed to be completely asynchronous, non-blocking and streaming.&lt;/p&gt;&lt;p align="justify"&gt;The Apache Synapse project and the 1.2 release can be found here:&lt;br /&gt;&lt;a href="http://synapse.apache.org/"&gt;http://synapse.apache.org&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;Apache Synapse offers connectivity and integration with a range of legacy systems, XML-based services and SOAP Web Services. It supports non-blocking HTTP and HTTPS using the Apache HTTPCore (&lt;a href="http://hc.apache.org/"&gt;http://hc.apache.org&lt;/a&gt;) components, as well as supporting JMS (v1.0 and higher) and a range of file systems and FTP sources including SFTP, FTP, File, ZIP/JAR/TAR/GZ via the Apache VFS project (&lt;a href="http://commons.apache.org/vfs/filesystems.html"&gt;http://commons.apache.org/vfs/filesystems.html&lt;/a&gt;).&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;At the same time Synapse 1.2 release adds the support for the &lt;a href="http://www.fixprotocol.org/"&gt;Financial Information eXchange (FIX)&lt;/a&gt; an industry driven messaging standard through &lt;a href="http://www.quickfixj.org/"&gt;QuickFixJ&lt;/a&gt;, Hessian binary web service protocol, as well as other functional, stability and performance improvements. Synapse supports transformation and routing between protocols without any coding via configurable virtual services.&lt;/p&gt;&lt;p align="justify"&gt;Synapse provides first class support for standards such as WS-Addressing, Web Services Security (WSS), Web Services Reliable Messaging (WSRM), Throttling and caching, configurable via WS-Policy upto message level, as well as efficient binary attachments (MTOM/XOP).&lt;/p&gt;&lt;p align="justify"&gt;The 1.2 release contains a set of enhancements based on feedback from the user community, including:&lt;/p&gt; * Support for Hessian binary web service protocol&lt;br /&gt;* FIX (Financial Information eXchange) protocol for messaging&lt;br /&gt;* WS-Reliable Messaging support with WSO2 Mercury&lt;br /&gt;* Support for re-usable database connection pools for DB report/lookup mediators&lt;br /&gt;* Support for GZip encoding and HTTP 100 continue&lt;br /&gt;* Natural support for dual channel messaging with WS-Addressing&lt;br /&gt;* Cluster aware sticky load balancing support&lt;br /&gt;* Non-blocking streaming of large messages at high concurreny with constant memory usage&lt;br /&gt;* Support for an ELSE clause for the Filter mediator&lt;br /&gt;* Ability to specify XPath expressions relative to the envelope or body&lt;br /&gt;* Support for separate policies for incoming/outgoing messages&lt;br /&gt;* Support for a mandatory sequence before mediation&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The combination of XML streaming and asynchronous support for HTTP and HTTPS using Java NIO ensures that Synapse has very high scalability under load. Performance tests show that Synapse can scale to support thousands of concurrent connections with constant memory on standard server hardware.&lt;/div&gt;&lt;p align="justify"&gt;Apache Synapse ships with over 50 samples (&lt;a href="http://commons.apache.org/vfs/filesystems.html"&gt;http://synapse.apache.org/Synapse_Samples.html&lt;/a&gt;) designed to demonstrate common integration patterns "out-of-the-box", along with supporting sample services, and service clients that demonstrate these scenarios. Apache Synapse is configured using a straightforward XML configuration syntax&lt;br /&gt;(&lt;a href="http://commons.apache.org/vfs/filesystems.html"&gt;http://synapse.apache.org/Synapse_Configuration_Language.html&lt;/a&gt;).&lt;/p&gt;&lt;p align="justify"&gt;Apache Synapse is openly developed by a community that welcomes all forms of input, ranging from suggestions and bug reports to patches and code contributions. Your comments and feedback on the project and release are welcome.&lt;/p&gt;&lt;p align="justify"&gt;The Apache Synapse code and binaries are available from the website at &lt;a href="http://synapse.apache.org/"&gt;http://synapse.apache.org&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/4206392247746930256-7215930607260183002?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/7215930607260183002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=7215930607260183002' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/7215930607260183002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/7215930607260183002'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2008/06/apache-synapse-12-released.html' title='Apache Synapse 1.2 Released'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-7246776895538068814</id><published>2008-06-03T23:12:00.000-07:00</published><updated>2008-06-04T01:18:47.654-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual effects'/><category scheme='http://www.blogger.com/atom/ns#' term='vga'/><category scheme='http://www.blogger.com/atom/ns#' term='problems'/><category scheme='http://www.blogger.com/atom/ns#' term='gutsy'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='issues'/><title type='text'>Having Issues with Ubuntu Visual Effects?</title><content type='html'>&lt;div style="text-align: justify;"&gt;I have been experiencing issues activating Ubuntu visual effects on my laptop. I installed Ubuntu Gutsy on my laptop few months back (yes, I'm yet to upgrade to Ubuntu Hardy) and it works fine except that it never allowed me to turn the visual effects on. I have seen these visual effects in action on other computers and they are really exciting. I quite haven't seen anything similar even in the Windows world. So I badly wanted to use visual effects on my personal laptop but strangely it never allowed me. Whenever I tried to activate visual effects, Ubuntu gave me an error simply saying something like 'unable to turn visual effects on'. (wow! what a descriptive error message, isn't it?)&lt;br /&gt;&lt;br /&gt;So after a bit of googling and reading some forum entries I managed to diagnose the problem. The issue was with my VGA card which is treated as 'blacklisted' by Linux. This particular type of VGA (&lt;span style="font-weight: bold;"&gt;Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller&lt;/span&gt;) is being used in a variety of laptops these days and hence I thought of blogging a bit about this and let the world know. If you don't know how to find the type of VGA in your computer simply enter the following command in a shell.&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;$ lspci | grep VGA&lt;/blockquote&gt;In order to find whether your VGA is blacklisted or not run the following command.&lt;br /&gt;&lt;blockquote&gt;$ compiz --replace ccp &amp;amp;&lt;/blockquote&gt;If your VGA is blacklisted you will see something like this on the terminal.&lt;br /&gt;&lt;blockquote&gt;[1] 6002&lt;br /&gt;Checking for Xgl: not present&lt;br /&gt;Blacklisted PCIID '8086:2a02' found&lt;br /&gt;aborting and using fallback: /usr/bin/metacity&lt;br /&gt;&lt;/blockquote&gt;If this is the case you can do a simple override so that Linux won't care whether your VGA is blacklisted or not. Then you can turn the visual effects on and off at will. To perform the override run the following command. (this workaround has been tested on the above mentioned VGA only, so beware and attempt at your own risk!)&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family:courier new;"&gt;$ mkdir -p ~/.config/compiz; echo SKIP_CHECKS=yes &gt;&gt; ~/.config/compiz/compiz-manager&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;This will create a small configuration file named compiz-manager in the ~/.config/compiz directory. This file will instruct Linux to skip certain tests which cause the failures in turning the visual effects on.&lt;br /&gt;&lt;br /&gt;And that's basically it. If you need more information please take a look at &lt;a href="http://forum.compiz-fusion.org/showthread.php?p=42412"&gt;this forum post&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4206392247746930256-7246776895538068814?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/7246776895538068814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=7246776895538068814' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/7246776895538068814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/7246776895538068814'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2008/06/having-issues-with-ubuntu-visual.html' title='Having Issues with Ubuntu Visual Effects?'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4206392247746930256.post-8982707346903048964</id><published>2008-05-18T23:18:00.000-07:00</published><updated>2008-05-18T23:25:43.495-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='top'/><category scheme='http://www.blogger.com/atom/ns#' term='university of moratuwa'/><category scheme='http://www.blogger.com/atom/ns#' term='summer of code'/><category scheme='http://www.blogger.com/atom/ns#' term='rank'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>University of Moratuwa Climbs to the Top with GSoC 2008</title><content type='html'>&lt;div style="text-align: justify;"&gt;For years &lt;a href="http://www.mrt.ac.lk"&gt;University of Moratuwa&lt;/a&gt; in Sri Lanka has been doing a kick-ass job in the process of converting talented youngsters in Sri Lanka into world class computer engineers and IT professionals. It is not a secret that out of all the IT education centers in the country University of Moratuwa is the best in the business. Graduates passed out from the University of Moratuwa can be found virtually in any software firm in Sri Lanka and every year a significant number of University of Moratuwa graduates end up joining some of the finest organizations and universities in the world.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Talking about kicking butt, this time around University of Moratuwa has managed to kick some really serious butt big time. Being able to secure the first place in the &lt;a href="http://code.google.com/soc/2008/"&gt;Google Summer of Code 2008&lt;/a&gt; (GSoC 2008) top participants list is no ordinary thing. According to the latest &lt;a href="http://google-opensource.blogspot.com/2008/05/this-weeks-top-10s-universities-for.html"&gt;statistics&lt;/a&gt; from Google it is from the University of Moratuwa, Sri Lanka that the largest number of GSoC 2008 applications has been received. The blistering number of applications is 93! The second place of this list goes to University of Campinas, Brazil. 29 applications have been received from University of Campinas. So clearly University of Moratuwa is way ahead from the rest of the world with this regard.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Also Google has declared that University of Moratuwa has forwarded the largest number of winning GSoC 2008 applications. There are 23 winning applications from University of Moratuwa this year from which 18 are from the &lt;a href="http://www.cse.mrt.ac.lk"&gt;department of Computer Science and Engineering&lt;/a&gt;. I personally feel very proud of this achievement and feel really happy about myself for being able to be one of those 18 winners.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Sri Lanka is among the &lt;a href="http://google-opensource.blogspot.com/2008/04/two-top-10s-for-google-summer-of-code.html"&gt;top 10 GSoC 2008 participant countries&lt;/a&gt; this year. Sri Lanka is holding this position along with countries like USA, Canada and India who are at the frontier of the global IT industry. However out of all the IT education institutes in Sri Lanka only University of Moratuwa has earned a position in the top 10 GSoC 2008 participant institutes list. This is an clear indication of the level of excellence University of Moratuwa has reached over the past couple of decades in terms of quality of education. In addition to that this achievement by the University of Moratuwa is an indication of the fact that a new generation of computer engineers and IT professionals who appreciate and support open source software is being created at Sri Lanka.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&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/4206392247746930256-8982707346903048964?l=techfeast-hiranya.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techfeast-hiranya.blogspot.com/feeds/8982707346903048964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4206392247746930256&amp;postID=8982707346903048964' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8982707346903048964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4206392247746930256/posts/default/8982707346903048964'/><link rel='alternate' type='text/html' href='http://techfeast-hiranya.blogspot.com/2008/05/university-of-moratuwa-climbs-to-top.html' title='University of Moratuwa Climbs to the Top with GSoC 2008'/><author><name>Hiranya Jayathilaka</name><uri>http://www.blogger.com/profile/17230790150335483296</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_Agr7CcJVYp8/SAGd38JfS3I/AAAAAAAAAAM/NAH-wSk5DrU/S220/182110172.img.small.jpg'/></author><thr:total>2</thr:total></entry><entry><id>ta
