<?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-8048607794005651608</id><updated>2012-01-25T07:00:21.561-08:00</updated><category term='jBPM'/><category term='JBoss'/><category term='Drools'/><category term='Flash recording'/><category term='demo'/><category term='SOA'/><category term='JBoss ESB'/><category term='Smooks'/><title type='text'>JBossESB</title><subtitle type='html'>This is the blog site for the JBossESB team. Although we will predominately concentrate on the JBossESB project, expect entries on ESB and SOA concepts in general.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>76</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-2308897497664387525</id><published>2012-01-25T06:08:00.000-08:00</published><updated>2012-01-25T07:00:21.619-08:00</updated><title type='text'>The JBoss ESB Beginner's Guide is officially published today!</title><content type='html'>&lt;br /&gt;It's available at Packt now! &lt;a href="http://www.packtpub.com/jboss-esb-beginners-guide/book"&gt;http://www.packtpub.com/jboss-esb-beginners-guide/book&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And at Amazon: &lt;a href="http://www.amazon.com/JBoss-ESB-Beginners-Guide-DiMaggio/dp/1849516588/"&gt;http://www.amazon.com/JBoss-ESB-Beginners-Guide-DiMaggio/dp/1849516588/&amp;nbsp;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-fNJv5MO0HzA/TyALeZSbb8I/AAAAAAAAHeU/xZTbGIqvRok/s1600/JBossESBBookCover.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-fNJv5MO0HzA/TyALeZSbb8I/AAAAAAAAHeU/xZTbGIqvRok/s320/JBossESBBookCover.jpg" width="259" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;A review of the book is here:&amp;nbsp; &lt;a href="http://rickwagner.blogspot.com/2011/10/book-review-for-jboss-esb-beginners.html"&gt;http://rickwagner.blogspot.com/2011/10/book-review-for-jboss-esb-beginners.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-2308897497664387525?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/2308897497664387525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=2308897497664387525' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/2308897497664387525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/2308897497664387525'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2012/01/jboss-esb-beginners-guide-is-officially.html' title='The JBoss ESB Beginner&apos;s Guide is officially published today!'/><author><name>Len DiMaggio</name><uri>http://www.blogger.com/profile/07124585546929851174</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://1.bp.blogspot.com/_Wad47xG7w3A/Sc7b75epEEI/AAAAAAAAAQ4/F9-h0znUI7w/S220/Boston.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-fNJv5MO0HzA/TyALeZSbb8I/AAAAAAAAHeU/xZTbGIqvRok/s72-c/JBossESBBookCover.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-1032860160544517681</id><published>2011-12-07T11:32:00.001-08:00</published><updated>2011-12-07T11:35:17.407-08:00</updated><title type='text'>Packt Survey for JBoss Books - and a discount</title><content type='html'>Packt, the folks publishing the JBoss ESB Begineers' Guide later on this month, have a new survey for JBoss users and books.&lt;br /&gt;&lt;br /&gt;The survey is here: &lt;a href="http://snipurl.com/21212r0"&gt;http://snipurl.com/21212r0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Packt is overseeing a community survey for JBoss users to find out what support they need to aid and enhance their JBoss experience. Packt want to make sure they are making the right offers to all JBoss users and are providing what they need and want.&lt;br /&gt;&lt;br /&gt;The survey is about all of JBoss projects (Drools, AS, jBPM and more). The questions will help to provide a snapshot of how the community finds support, how they self-educate, help each other and what information they need now.As Packt think the results will be of genuine interest to the JBoss community, the results of the survey will be published.&lt;br /&gt;&lt;br /&gt;Not only that but every JBoss user that completes the survey will receive a 25% discount off their next JBoss eBook purchase from Packt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-1032860160544517681?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/1032860160544517681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=1032860160544517681' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/1032860160544517681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/1032860160544517681'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2011/12/packt-survey-for-jboss-books-and.html' title='Packt Survey for JBoss Books - and a discount'/><author><name>Len DiMaggio</name><uri>http://www.blogger.com/profile/07124585546929851174</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://1.bp.blogspot.com/_Wad47xG7w3A/Sc7b75epEEI/AAAAAAAAAQ4/F9-h0znUI7w/S220/Boston.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-8273230249551396267</id><published>2011-09-29T20:08:00.000-07:00</published><updated>2011-09-29T20:08:43.101-07:00</updated><title type='text'>JBoss ESB Book - in the Packt RAW Program</title><content type='html'>And, the soon-to-be-published (by Packt) JBoss ESB Beginner's Guide is now in the Packt "RAW" program - so that the book can be purchased pre-release - and chapters are provided as they are completed. &lt;p&gt;&lt;a href="http://www.packtpub.com/jboss-esb-beginners-guide/book"&gt;http://www.packtpub.com/jboss-esb-beginners-guide/book&lt;/a&gt;&lt;p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://www.packtpub.com/sites/default/files/imagecache/productview/6587os_mockupcover_bg.jpg" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"&gt;&lt;img border="0" height="151" width="125" src="https://www.packtpub.com/sites/default/files/imagecache/productview/6587os_mockupcover_bg.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-8273230249551396267?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/8273230249551396267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=8273230249551396267' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/8273230249551396267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/8273230249551396267'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2011/09/jboss-esb-book-in-packt-raw-program.html' title='JBoss ESB Book - in the Packt RAW Program'/><author><name>Len DiMaggio</name><uri>http://www.blogger.com/profile/07124585546929851174</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://1.bp.blogspot.com/_Wad47xG7w3A/Sc7b75epEEI/AAAAAAAAAQ4/F9-h0znUI7w/S220/Boston.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-4890704429585233128</id><published>2011-09-12T17:23:00.000-07:00</published><updated>2011-09-12T17:23:20.371-07:00</updated><title type='text'>The JBoss ESB Guide is on Amazon</title><content type='html'>And - the soon-to-be-published book just appeared on Amazon:&lt;p&gt;&lt;a href="http://www.amazon.com/JBoss-ESB-Beginners-Guide-DiMaggio/dp/1849516588"&gt;JBoss ESB Beginners Guide&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-4890704429585233128?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/4890704429585233128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=4890704429585233128' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4890704429585233128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4890704429585233128'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2011/09/jboss-esb-guide-is-on-amazon.html' title='The JBoss ESB Guide is on Amazon'/><author><name>Len DiMaggio</name><uri>http://www.blogger.com/profile/07124585546929851174</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://1.bp.blogspot.com/_Wad47xG7w3A/Sc7b75epEEI/AAAAAAAAAQ4/F9-h0znUI7w/S220/Boston.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-4724671151714239910</id><published>2011-08-18T11:33:00.000-07:00</published><updated>2011-08-18T11:33:59.663-07:00</updated><title type='text'>JBoss ESB Beginner's Guide - Expected in November</title><content type='html'>Packt is publishing the "JBoss ESB Beginner's Guide" in November!&lt;br /&gt;&lt;a href=" http://www.packtpub.com/jboss-esb-beginners-guide/book"&gt;&lt;br /&gt;http://www.packtpub.com/jboss-esb-beginners-guide/book&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-4724671151714239910?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/4724671151714239910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=4724671151714239910' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4724671151714239910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4724671151714239910'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2011/08/jboss-esb-beginners-guide-expected-in.html' title='JBoss ESB Beginner&apos;s Guide - Expected in November'/><author><name>Len DiMaggio</name><uri>http://www.blogger.com/profile/07124585546929851174</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://1.bp.blogspot.com/_Wad47xG7w3A/Sc7b75epEEI/AAAAAAAAAQ4/F9-h0znUI7w/S220/Boston.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-6903266561072520909</id><published>2011-07-08T08:03:00.000-07:00</published><updated>2011-07-08T08:03:39.532-07:00</updated><title type='text'>ESB 4.10 Released</title><content type='html'>We are happy to announce the 4.10 release of JBoss ESB. It is now available for download at our project site listed below. The major features of this release are as follows:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Support for JBoss AS 6.0.0.Final&lt;/li&gt;&lt;li&gt;Drools 5.2.0&lt;/li&gt;&lt;li&gt;jUDDI 3.1.0 and the inclusion of the juddiv3.war&lt;/li&gt;&lt;li&gt;Scout 1.2.3&lt;/li&gt;&lt;li&gt;Smooks 1.4&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;and numerous bug fixes.&lt;br /&gt;&lt;br /&gt;The project site is updated with binaries and documentation:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jboss.org/jbossesb/downloads.html"&gt;http://jboss.org/jbossesb/downloads.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jboss.org/jbossesb/docs.html"&gt;http://jboss.org/jbossesb/docs.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks to everyone who contributed to this release for your hard work!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-6903266561072520909?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/6903266561072520909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=6903266561072520909' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/6903266561072520909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/6903266561072520909'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2011/07/esb-410-released.html' title='ESB 4.10 Released'/><author><name>David Ward</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-IAcZZcj_j3Y/AAAAAAAAAAI/AAAAAAAACv8/uM0me-uywuQ/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-4786073744626337619</id><published>2010-02-24T17:52:00.000-08:00</published><updated>2010-02-24T17:54:12.892-08:00</updated><title type='text'>Two JBossESB blog posts were just reposted to Dzone</title><content type='html'>And, here they are:&lt;br /&gt;&lt;br /&gt;"From HTTP to the ESB - JBossESB 4.7's New Servlet based HTTP Gateway,"  &lt;a href="http://architects.dzone.com/news/jbossesb-http-gateways"&gt;http://architects.dzone.com/news/jbossesb-http-gateways&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;"Message Alerts in JBossESB 4.7," &lt;a href="http://soa.dzone.com/news/messagealerts-jbossesb-47"&gt;http://soa.dzone.com/news/messagealerts-jbossesb-47&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-4786073744626337619?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/4786073744626337619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=4786073744626337619' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4786073744626337619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4786073744626337619'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2010/02/two-jbossesb-blog-posts-were-just.html' title='Two JBossESB blog posts were just reposted to Dzone'/><author><name>Len DiMaggio</name><uri>http://www.blogger.com/profile/07124585546929851174</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://1.bp.blogspot.com/_Wad47xG7w3A/Sc7b75epEEI/AAAAAAAAAQ4/F9-h0znUI7w/S220/Boston.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-3342874855021383648</id><published>2010-01-15T02:43:00.000-08:00</published><updated>2010-01-15T03:05:34.818-08:00</updated><title type='text'>JBoss Tools Smooks Editor - Progress...</title><content type='html'>&lt;p&gt;We've been making some good progress with the &lt;a href="http://www.jboss.org/tools/" mce_href="http://www.jboss.org/tools/"&gt;JBoss Tools&lt;/a&gt; Smooks Editor.  The following are two rough Screencasts (audio is poorly edited... apologies) illustrating two use cases that extend from each other.&lt;/p&gt; &lt;h2&gt;&lt;span style="font-size:180%;"&gt;EDI to Java&lt;/span&gt;&lt;/h2&gt; &lt;p&gt;In this Screencast, we bind EDI Purchase Order data (but can also be XML, JSON etc) into an "Order" object model (Java).  This Screencast was created a few weeks ago, using the v3.1.0.CR1 release of JBoss Tools.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.screencast.com/t/NWZhOWUx"&gt;See Screencast&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;&lt;span style="font-size:180%;"&gt;EDI to XML (via XSD)&lt;/span&gt;&lt;/h2&gt; &lt;p&gt;In this Screencast, we extend the example shown in the above Screencast, applying a template to the "Order" object model to produce an XML Purchase Order.  The XML Purchase Order is defined in an XML Schema (XSD), but you'll see how the editor makes it very easy to work with the XSD.  This Screencast was created recently, using one of the &lt;a href="http://www.jboss.org/tools/download.html" mce_href="http://www.jboss.org/tools/download.html"&gt;Nightly Builds of JBoss Tools&lt;/a&gt;.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.screencast.com/t/YTJlYTdhOTQt"&gt;See Screencast&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;&lt;span style="font-size:180%;"&gt;Status&lt;/span&gt;&lt;/h2&gt; &lt;p&gt;We are currently working towards the v3.1.0.CR2 release of &lt;a href="http://www.jboss.org/tools/" mce_href="http://www.jboss.org/tools/"&gt;JBoss Tools&lt;/a&gt;, which is due to be released in Feb (not sure of exact date).  There are still a number of &lt;a href="https://jira.jboss.org/jira/browse/JBIDE/component/12311840" mce_href="https://jira.jboss.org/jira/browse/JBIDE/component/12311840"&gt;issues&lt;/a&gt; with the editor.  We are working on these and will be resolving many of them for the 3.1.0.CR2 release.&lt;/p&gt; &lt;p&gt;We have purposely restricted the 3.1.0 version of the editor:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;&lt;b&gt;Supported Use Cases&lt;/b&gt;: &lt;ul&gt;&lt;li&gt;&lt;i&gt;Java Mapping/Binding&lt;/i&gt;:  Drag &amp;amp; Drop mapping/binding of XML, JSON, CSV and EDI data to Java.&lt;/li&gt;&lt;li&gt;&lt;i&gt;CSV and XML Templating&lt;/i&gt;:  Drag &amp;amp; Drop templating of Java Mappings (see #1 above) to produce CSV or XML (XML via XSD or XML Sample).&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;&lt;b&gt;Supported Integration&lt;/b&gt;: &lt;ul&gt;&lt;li&gt;&lt;i&gt;JBoss Tools ESB Editor&lt;/i&gt;:  Will have basic open and edit integration with the ESB SmooksAction.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;&lt;b&gt;Supported Versions&lt;/b&gt;: &lt;ul&gt;&lt;li&gt;&lt;i&gt;Smooks v1.2 Configurations&lt;/i&gt;:  The Editor will only support Smooks v1.2 configuration namespaces.  Therefore, if you have configurations using config namespaces from earlier (or newer v1.3) versions of Smooks, the editor will not open the configurations.&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ol&gt; &lt;p&gt;So, the editor will not support:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Direct Source to Result drag &amp;amp; drop templating e.g. XML to XML, EDI to XML, XML to CSV etc.  We hope to support this in a future release (next one hopefully), but for now (in the v3.1.0 release), you need to define a Java Object model to use as the canonical form of the data being mapped i.e. v3.1.0 templating works as &lt;i&gt;Source -&gt; Java -&gt; Result&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;A number of features supported by the Smooks Runtime, such as Persistence, Validation etc.  We will be adding support for these in future releases.&lt;/li&gt;&lt;li&gt;Smooks v1.1 (and before) configuration namespaces that have newer versions in Smooks v1.2.  For example, Smooks v1.2 added a v1.2 javabean config namespace.  It is this version of the javabean config namespace that is supported by the editor.  The v1.1 javabean config namespace is not supported.&lt;/li&gt;&lt;li&gt;Smooks v1.3 (yet to be released) configuration namespaces.&lt;/li&gt;&lt;/ol&gt; &lt;h2&gt;&lt;span style="font-size:180%;"&gt;Try it Out...&lt;/span&gt;&lt;/h2&gt; &lt;p&gt;Please take the editor for a spin and let us know what you think.  It can be downloaded (standalone, or as part of &lt;a href="http://www.jboss.org/tools/" mce_href="http://www.jboss.org/tools/"&gt;JBoss Tools&lt;/a&gt;) from the &lt;a href="http://www.jboss.org/tools/download.html" mce_href="http://www.jboss.org/tools/download.html"&gt;JBoss Tools Downloads Page&lt;/a&gt;.  &lt;a href="https://jira.jboss.org/jira/secure/BrowseProject.jspa?id=10020" mce_href="https://jira.jboss.org/jira/secure/BrowseProject.jspa?id=10020"&gt;Please log any issues&lt;/a&gt; you find with the editor (against the "smooks" component), if not already logged.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-3342874855021383648?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/3342874855021383648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=3342874855021383648' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3342874855021383648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3342874855021383648'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2010/01/jboss-tools-smooks-editor-progress.html' title='JBoss Tools Smooks Editor - Progress...'/><author><name>Tom Fennelly</name><uri>http://www.blogger.com/profile/14161465872732273475</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-870106040979144467</id><published>2009-12-22T18:13:00.000-08:00</published><updated>2009-12-22T19:09:24.132-08:00</updated><title type='text'>From HTTP to ESB - JBossESB 4.7's New Servlet based HTTP Gateway</title><content type='html'>One of the primary functions performed by JBossESB is the routing of messages between services. (Remember that, on an ESB, everything is either a message or a service.) The messages that JBoss ESB handles conform to org.jboss.soa.esb.message.Message. Service endpoints that can process messages in this format are described as being "ESB-aware." This is all well and good for services and applications that were designed and written with this message format in mind, but what about other services, including legacy applications, that communicate through other non-ESB aware data formats?&lt;br /&gt;&lt;br /&gt;JBossESB handles connecting services that communicate in non-ESB aware message formats through its gateway listeners. These listeners route incoming messages from outside the ESB to ESB services. The ESB's set of gateway listeners (generally referred to as "gateways") support a variety of message formats such as files, FTP, and JMS. These gateways accept messages in a non-ESB aware format onto the ESB and then  convert them (actually, they wrap the message payload) into ESB-aware messages before sending them to their service's action pipeline.&lt;br /&gt;&lt;br /&gt;In this post, we'll take a look at JBossESB 4.7's new HTTP gateway ("http-gateway" ).  &lt;a href="#[1]"&gt;[1]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You use an http-gateway to "expose" an ESB-unaware endpoint on the ESB. In other words, an http-gateway enables you to communicate to ESB services through HTTP endpoints, in the familiar format used by Java servlets. This servlet-based approach is made possible by the http-gateway leveraging the JBossESB Server or JBoss Application Server's HTTP container, just as any servlet would. This means that many of the HTTP configuration properties such as port addresses are already handled for you. You don't have to create the entire HTTP configuration for your http-gateway, as many configurations work right out-of-the-box. This is in keeping with other features of JBossESB, such as its rich set of out-of-the-box actions.  &lt;a href="#[2]"&gt;[2]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;A Very Basic Example&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Let's take a quick look at a very basic http-gateway configuration. We'll take a longer look at variations of http-gateway usage later on in this post. To begin, let's start small. Here's a service definition taken from the JBossESB user guide &lt;a href="#[3]"&gt;[3]&lt;/a&gt;  that you would create in your JBossESB application's jboss-esb.xml file:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  &amp;lt;service category="Vehicles" name="Cars" description="" invmScope="GLOBAL"&amp;gt;&lt;br /&gt;2:     &amp;lt;listeners&amp;gt;&lt;br /&gt;3:       &amp;lt;http-gateway name="Http" /&amp;gt;&lt;br /&gt;4:    &amp;lt;/listeners&amp;gt;&lt;br /&gt;5:    &amp;lt;actions mep="RequestResponse"&amp;gt;&lt;br /&gt;6:    &amp;lt;!-- Service Actions.... --&amp;gt;&lt;br /&gt;7:    &amp;lt;/actions&amp;gt;&lt;br /&gt;8:  &amp;lt;/service&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Like a lot of things with JBossESB, you can do a lot with a little. Let's examine this example line-by-line:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Line 1: Service name and category are used to differentiate the services. Every service has a category and name attribute. JBossESB uses these attributes to register a service's listeners (gateway listeners or ESB-aware listeners) endpoints in a service registry. The InVM transport enables services to communicate using the same JVM and without having to go through a second non-gateway provider. This makes things more efficient as the services don't have use any networking protocols between JVM instances. The "GLOBAL" value indicates that the this service can be invoked using the InVM transport using the same JVM.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Line 3: Here's the definition of the http gateway.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Line 5: Remember that since the gateway is servlet based, it requires a request/response message exchange pattern (or "mep" for short).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Line 6: And, here's where the pipeline of actions would be defined.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Simple, right? Before we move on, did you notice what's not here? Dude, where's my service provider?&lt;br /&gt;&lt;br /&gt;Since a provider is not defined, the service uses a the ESB's default HTTP provider. And, since there is no bus reference ID (the busrefid element in a provider definition and then referenced elsewhere in jboss-esb.xml files), the ESB builds the HTTP endpoint that it exposes out of these fields:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:     http://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;/&amp;lt;.esbname&amp;gt;/http/Vehicles/Cars&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;The host and port number come from the ESB server. The "&lt;.esbname&gt;" token is the actual name of the deployed .esb archive, minus the .esb extension. Note that while this string is an HTTP URL, it's also an endpoint. The prefix of "http" is actually a namespace that is used for all the http-gateway endpoints.&lt;br /&gt;&lt;br /&gt;It's also important to note that the http-gateway listener captures all incoming HTTP requests that match the servlet mapping pattern expressed in the HTTP endpoint. You can make use of this mapping with the gateway's "urlPattern" property. For example, if we modify the service and gateway definition that we just looked at to include a urlPattern:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  &amp;lt;service category="Vehicles" name="Cars" description="" invmScope="GLOBAL"&amp;gt;&lt;br /&gt;2:    &amp;lt;listeners&amp;gt;&lt;br /&gt;3:      &amp;lt;http-gateway name="Http" urlPattern="esb-cars/*" /&amp;gt;&lt;br /&gt;4:    &amp;lt;/listeners&amp;gt;&lt;br /&gt;5:    &amp;lt;actions mep="RequestResponse"&amp;gt;&lt;br /&gt;6:    &amp;lt;!-- Service Aactions.... --&amp;gt;&lt;br /&gt;7:    &amp;lt;/actions&amp;gt;&lt;br /&gt;8:  &amp;lt;/service&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Then, the service's exposed HTTP endpoint would capture incoming HTTP requests at this address:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:    http://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;/&amp;lt;.esbname&amp;gt;/http/esb-cars/*&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Creating a Message From a Request&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;How does the http-gateway actually convert an incoming HTTP request into an ESB message? It depends on the request's MIME type. What controls this is the “core:org.jboss.soa.esb.mime.text.types” configuration property. This property is defined in your server's jbossesb-properties.xml as a semi-colon separated list of character MIME types. The default value of the property includes wildcard support and is set equal to this set:&lt;br /&gt;&lt;br /&gt;            text/*&lt;br /&gt;            application/xml&lt;br /&gt;            application/*-xml&lt;br /&gt;&lt;br /&gt;The http-gateway uses this property to determine whether the request payload should be decoded into a Java String before it's given to the service, or if the payload should stay as a Byte array, and have the Service perform the decoding itself in an action. The http-gateway can also over-ride the default MIME type with the "payloadAs" attribute. This attribute enables you to have the gateway treat the payload as either “BYTES” or “STRING.” For text payloads, the gateway uses the same character encoding from the request.&lt;br /&gt;&lt;br /&gt;What about the other information in the incoming HTTP request?&lt;br /&gt;&lt;br /&gt;The request parameters are contained in the RequestParameterMap (a java.util.Map). These request query string parameters are stored as message properties on the ESB message created by the gateway. Full access to the URL arguments/query string is supported in that you can access the parameters in your service's actions by:&lt;br /&gt; &lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  Map params = (Map) message.getProperties().getProperty(“RequestParameterMap”);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;The RequestInfoMap is another java.util.Map that contains request information such as authType, characterEncoding, HTTP Method, remoteHost, contentLength, etc.. You can access the parameters in your service's actions by:&lt;br /&gt; &lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  Map params = (Map) message.getProperties().getProperty(“RequestInfoMap”);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Let's switch gears now and look at a more extensive example.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The http_gateway Quickstart Example&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;JBossESB release 4.7 includes the aptly named "http_gateway" quickstart example application. (As I always tell people, the quickstarts included with JBossESB are both a great learning tool and a great starting point for developing your own ESB applications.) The http_gateway quickstart demonstrates multiple ways of using the gateway to pass HTTP requests onto ESB services:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Basic authentication&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The default http bus&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Mapping ESB exceptions to HTTP error codes globally for an http-provider...&lt;br /&gt;&lt;/li&gt;&lt;li&gt;...and how to over-ride that global setting&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Setting up an asynchronous response that changes the default response code&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Message-Level Security&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;We'll take these one at a time.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Basic Authentication&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The quickstart uses the "java:/jaas/JBossWS" security domain, which is already installed in JBoss ESB/App Server out-of-the-box configuration. The login username is "kermit" and the password is "thefrog". You can see this username/password combination defined in the "server/[server profile]/conf/props/jbossws-roles.properties" file. Let's take a look at the security setting in the quickstart's jboss-esb.xml file:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  &amp;lt;globals&amp;gt;&lt;br /&gt;2:    &amp;lt;!-- Security setting for all http-providers and all EBWSs in this jboss-esb.xml file.--&amp;gt;&lt;br /&gt;3:    &amp;lt;war-security method="BASIC" domain="JBossWS" /&amp;gt;&lt;br /&gt;4:  &amp;lt;/globals&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;This "global" section is new with the http-gateway in JBossESB 4.7. Like the comment says, this defines the global security setting for all the http and EBWS providers in this application. The other supported settings for the war-security method are: DIGEST &lt;a href="#[4]"&gt;[4]&lt;/a&gt; and CLIENT-CERT.&lt;br /&gt;&lt;br /&gt;And here's the http-provider definition:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  &amp;lt;http-provider name="http"&amp;gt;&lt;br /&gt;2:    &amp;lt;http-bus busid="secureFriends"&amp;gt;&lt;br /&gt;3:    &amp;lt;!-- Only users in the "friend" role are allowed&lt;br /&gt;4:    access via the "GET" method. Unspecified&lt;br /&gt;5:    methods are not protected (i.e. are allowed)... --&amp;gt;&lt;br /&gt;6:      &amp;lt;allowed-roles&amp;gt;&lt;br /&gt;7:        &amp;lt;role name="friend" /&amp;gt;&lt;br /&gt;8:      &amp;lt;/allowed-roles&amp;gt;&lt;br /&gt;9:      &amp;lt;protected-methods&amp;gt;&lt;br /&gt;10:        &amp;lt;method name="GET" /&amp;gt;&lt;br /&gt;11:        &amp;lt;method name="POST" /&amp;gt;&lt;br /&gt;12:      &amp;lt;/protected-methods&amp;gt;&lt;br /&gt;13:    &amp;lt;/http-bus&amp;gt;&lt;br /&gt;14:    &amp;lt;!-- Global exception mappings file... --&amp;gt;&lt;br /&gt;15:    &amp;lt;exception mappingsFile="/http-exception-mappings.properties" /&amp;gt;&lt;br /&gt;16:  &amp;lt;/http-provider&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;In this file fragment we see:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Line 2: Here's where the http-bus definition starts. Note the name chosen for the busid ("secureFriends"). We'll reference this in the definition of the http-gateway in a moment.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Line 5: The set of allowed roles starts here.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Line 8: And the set of HTTP methods that user in the allowed roles can use is defined here. Note that the http-gateway supports using these HTTP methods: GET, PUT, POST and DELETE&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Line 14: Here's another global (global to the http-provider, that is) definition. We'll come back to the exception mappingsFile in a bit. This definition enables you to define status codes to be returned for exceptions.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Now, let's look at the actual http-gateway definition:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  &amp;lt;service category="Sales" name="List" description="" invmScope="GLOBAL"&amp;gt;&lt;br /&gt;2:    &amp;lt;listeners&amp;gt;&lt;br /&gt;3:      &amp;lt;!-- Receives: http://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;/Quickstart_http_gateway/http/sales/* but will be forced to&lt;br /&gt;4:      authenticate because the "sales" bus has basic auth configured (above)... --&amp;gt;&lt;br /&gt;5:      &amp;lt;http-gateway name="sales" busidref="secureFriends" urlPattern="sales/*" /&amp;gt;&lt;br /&gt;6:    &amp;lt;/listeners&amp;gt;&lt;br /&gt;7:    &amp;lt;actions mep="RequestResponse"&amp;gt;&lt;br /&gt;8:      &amp;lt;action name="print" class="org.jboss.soa.esb.samples.quickstart.httpgateway.MyAction"/&amp;gt;&lt;br /&gt;9:    &amp;lt;/actions&amp;gt;&lt;br /&gt;10:  &amp;lt;/service&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Here's where it all ties together:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Line 1: The service definition begins here. Note the "GLOBAL InVM scope that we talked about earlier.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Line 5: The http-gateway definition is here. Note the reference to the busidref that we defined in the http-bus. Also note the urlPattern. We'll use this pattern when we run the quickstart.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Line 6: The message exchange pattern (mep) is RequestResponse as, remember we're dealing with HTTP.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Line 7: Our customer action. This class prints out informatin from the request.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;OK - let's run the quickstart and see the results.&lt;br /&gt;&lt;br /&gt;Where's the client program that we run? Well, this quickstart is different from most of the other quickstarts in that you don't initial the test by generating a message. Remember how the http-provider we defined specified the GET and POST HTTP verbs? To run this part of the quickstart, you can just fire up your favorite browser and send an HTTP GET request by entering this URL:&lt;br /&gt;&lt;br /&gt;   http://localhost:8080/Quickstart_http_gateway/http/sales/a/b/c&lt;br /&gt;&lt;br /&gt;For the sake of illustration, we'll use the lynx (text) browser.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  lynx -dump -source -auth=kermit:thefrog http://localhost:8080/Quickstart_http_gateway/http/sales/a/b/c&lt;br /&gt;2:  Service: Sales:List&lt;br /&gt;3: &lt;br /&gt;4:  ------------Http Request Info (XStream Encoded)-------------------&lt;br /&gt;5:  &amp;lt;org.jboss.soa.esb.http.HttpRequest&amp;gt;&lt;br /&gt;6:   &amp;lt;authType&amp;gt;BASIC&amp;lt;/authType&amp;gt;&lt;br /&gt;7:   &amp;lt;contextPath&amp;gt;/Quickstart_http_gateway&amp;lt;/contextPath&amp;gt;&lt;br /&gt;8:   &amp;lt;localAddr&amp;gt;127.0.0.1&amp;lt;/localAddr&amp;gt;&lt;br /&gt;9:   &amp;lt;localName&amp;gt;localhost.localdomain&amp;lt;/localName&amp;gt;&lt;br /&gt;10:   &amp;lt;method&amp;gt;GET&amp;lt;/method&amp;gt;&lt;br /&gt;11:   &amp;lt;pathInfo&amp;gt;/a/b/c&amp;lt;/pathInfo&amp;gt;&lt;br /&gt;12:   &amp;lt;protocol&amp;gt;HTTP/1.0&amp;lt;/protocol&amp;gt;&lt;br /&gt;13:   &amp;lt;remoteAddr&amp;gt;127.0.0.1&amp;lt;/remoteAddr&amp;gt;&lt;br /&gt;14:   &amp;lt;remoteHost&amp;gt;127.0.0.1&amp;lt;/remoteHost&amp;gt;&lt;br /&gt;15:   &amp;lt;remoteUser&amp;gt;kermit&amp;lt;/remoteUser&amp;gt;&lt;br /&gt;16:   &amp;lt;contentLength&amp;gt;-1&amp;lt;/contentLength&amp;gt;&lt;br /&gt;17:   &amp;lt;requestURI&amp;gt;/Quickstart_http_gateway/http/sales/a/b/c&amp;lt;/requestURI&amp;gt;&lt;br /&gt;18:   &amp;lt;scheme&amp;gt;http&amp;lt;/scheme&amp;gt;&lt;br /&gt;19:   &amp;lt;serverName&amp;gt;localhost&amp;lt;/serverName&amp;gt;&lt;br /&gt;20:   &amp;lt;requestPath&amp;gt;/http/sales&amp;lt;/requestPath&amp;gt;&lt;br /&gt;21:   &amp;lt;pathInfoTokens&amp;gt;&lt;br /&gt;22:    &amp;lt;string&amp;gt;a&amp;lt;/string&amp;gt;&lt;br /&gt;23:    &amp;lt;string&amp;gt;b&amp;lt;/string&amp;gt;&lt;br /&gt;24:    &amp;lt;string&amp;gt;c&amp;lt;/string&amp;gt;&lt;br /&gt;25:   &amp;lt;/pathInfoTokens&amp;gt;&lt;br /&gt;26:   &amp;lt;queryParams/&amp;gt;&lt;br /&gt;27:   &amp;lt;headers&amp;gt;&lt;br /&gt;28:    &amp;lt;org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;29:     &amp;lt;name&amp;gt;host&amp;lt;/name&amp;gt;&lt;br /&gt;30:     &amp;lt;value&amp;gt;localhost:8080&amp;lt;/value&amp;gt;&lt;br /&gt;31:    &amp;lt;/org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;32:    &amp;lt;org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;33:     &amp;lt;name&amp;gt;accept&amp;lt;/name&amp;gt;&lt;br /&gt;34:     &amp;lt;value&amp;gt;text/html, text/plain, audio/mod, image/*, application/msword, application/pdf, application/postscript, application/x-java-jnlp-file, text/sgml, video/mpeg, */*;q=0.01&amp;lt;/value&amp;gt;&lt;br /&gt;35:    &amp;lt;/org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;36:    &amp;lt;org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;37:     &amp;lt;name&amp;gt;accept-language&amp;lt;/name&amp;gt;&lt;br /&gt;38:     &amp;lt;value&amp;gt;en&amp;lt;/value&amp;gt;&lt;br /&gt;39:    &amp;lt;/org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;40:    &amp;lt;org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;41:     &amp;lt;name&amp;gt;user-agent&amp;lt;/name&amp;gt;&lt;br /&gt;42:     &amp;lt;value&amp;gt;Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.8e-fips-rhel5&amp;lt;/value&amp;gt;&lt;br /&gt;43:    &amp;lt;/org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;44:    &amp;lt;org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;45:     &amp;lt;name&amp;gt;authorization&amp;lt;/name&amp;gt;&lt;br /&gt;46:     &amp;lt;value&amp;gt;Basic a2VybWl0OnRoZWZyb2c=&amp;lt;/value&amp;gt;&lt;br /&gt;47:    &amp;lt;/org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;48:   &amp;lt;/headers&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;The Default HTTP Bus in Action&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In the next part of the QuickStart we'll take another look a service definition where the &lt;http-listener&gt; definition doesn't reference a bus definition (busidref) and instead uses the "default" http bus. The definition of this service looks like this:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  &amp;lt;service category="Index" name="List" description="" invmScope="GLOBAL"&amp;gt;&lt;br /&gt;2:    &amp;lt;listeners&amp;gt;&lt;br /&gt;3:      &amp;lt;!-- Receives: http://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;/Quickstart_http_gateway/http/index/*&lt;br /&gt;4:             Uses the default http bus configuration... --&amp;gt;&lt;br /&gt;5:      &amp;lt;http-gateway name="Index" urlPattern="index/*" /&amp;gt;&lt;br /&gt;6:    &amp;lt;/listeners&amp;gt;&lt;br /&gt;7:    &amp;lt;actions mep="RequestResponse"&amp;gt;&lt;br /&gt;8:      &amp;lt;action name="print" class="org.jboss.soa.esb.samples.quickstart.httpgateway.MyAction"/&amp;gt;&lt;br /&gt;9:    &amp;lt;/actions&amp;gt;&lt;br /&gt;10:  &amp;lt;/service&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Well, there's not a great deal to look at here since the default http bus is being used. To access this service, you point your browser at this URL:&lt;br /&gt;&lt;br /&gt;http://localhost:8080/Quickstart_http_gateway/http/index/XXXX/yyy?a=1,b=2&lt;br /&gt;&lt;br /&gt;Note that we discussed earlier in this post and that this URL shows, we're able to process request parameters in the URL. Here's what lynx shows us:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  lynx -dump -source http://localhost:8080/Quickstart_http_gateway/http/index/XXXX/yyy?a=1,b=2&lt;br /&gt;2:  Service: Index:List&lt;br /&gt;3: &lt;br /&gt;4:  ------------Http Request Info (XStream Encoded)-------------------&lt;br /&gt;5:  &amp;lt;org.jboss.soa.esb.http.HttpRequest&amp;gt;&lt;br /&gt;6:   &amp;lt;contextPath&amp;gt;/Quickstart_http_gateway&amp;lt;/contextPath&amp;gt;&lt;br /&gt;7:   &amp;lt;localAddr&amp;gt;127.0.0.1&amp;lt;/localAddr&amp;gt;&lt;br /&gt;8:   &amp;lt;localName&amp;gt;localhost.localdomain&amp;lt;/localName&amp;gt;&lt;br /&gt;9:   &amp;lt;method&amp;gt;GET&amp;lt;/method&amp;gt;&lt;br /&gt;10:   &amp;lt;pathInfo&amp;gt;/XXXX/yyy&amp;lt;/pathInfo&amp;gt;&lt;br /&gt;11:   &amp;lt;protocol&amp;gt;HTTP/1.0&amp;lt;/protocol&amp;gt;&lt;br /&gt;12:   &amp;lt;queryString&amp;gt;a=1,b=2&amp;lt;/queryString&amp;gt;&lt;br /&gt;13:   &amp;lt;remoteAddr&amp;gt;127.0.0.1&amp;lt;/remoteAddr&amp;gt;&lt;br /&gt;14:   &amp;lt;remoteHost&amp;gt;127.0.0.1&amp;lt;/remoteHost&amp;gt;&lt;br /&gt;15:   &amp;lt;contentLength&amp;gt;-1&amp;lt;/contentLength&amp;gt;&lt;br /&gt;16:   &amp;lt;requestURI&amp;gt;/Quickstart_http_gateway/http/index/XXXX/yyy&amp;lt;/requestURI&amp;gt;&lt;br /&gt;17:   &amp;lt;scheme&amp;gt;http&amp;lt;/scheme&amp;gt;&lt;br /&gt;18:   &amp;lt;serverName&amp;gt;localhost&amp;lt;/serverName&amp;gt;&lt;br /&gt;19:   &amp;lt;requestPath&amp;gt;/http/index&amp;lt;/requestPath&amp;gt;&lt;br /&gt;20:   &amp;lt;pathInfoTokens&amp;gt;&lt;br /&gt;21:    &amp;lt;string&amp;gt;XXXX&amp;lt;/string&amp;gt;&lt;br /&gt;22:    &amp;lt;string&amp;gt;yyy&amp;lt;/string&amp;gt;&lt;br /&gt;23:   &amp;lt;/pathInfoTokens&amp;gt;&lt;br /&gt;24:   &amp;lt;queryParams&amp;gt;&lt;br /&gt;25:    &amp;lt;entry&amp;gt;&lt;br /&gt;26:     &amp;lt;string&amp;gt;a&amp;lt;/string&amp;gt;&lt;br /&gt;27:     &amp;lt;string-array&amp;gt;&lt;br /&gt;28:      &amp;lt;string&amp;gt;1,b=2&amp;lt;/string&amp;gt;&lt;br /&gt;29:     &amp;lt;/string-array&amp;gt;&lt;br /&gt;30:    &amp;lt;/entry&amp;gt;&lt;br /&gt;31:   &amp;lt;/queryParams&amp;gt;&lt;br /&gt;32:   &amp;lt;headers&amp;gt;&lt;br /&gt;33:    &amp;lt;org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;34:     &amp;lt;name&amp;gt;host&amp;lt;/name&amp;gt;&lt;br /&gt;35:     &amp;lt;value&amp;gt;localhost:8080&amp;lt;/value&amp;gt;&lt;br /&gt;36:    &amp;lt;/org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;37:    &amp;lt;org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;38:     &amp;lt;name&amp;gt;accept&amp;lt;/name&amp;gt;&lt;br /&gt;39:     &amp;lt;value&amp;gt;text/html, text/plain, audio/mod, image/*, application/msword, application/pdf, application/postscript, application/x-java-jnlp-file, text/sgml, video/mpeg, */*;q=0.01&amp;lt;/value&amp;gt;&lt;br /&gt;40:    &amp;lt;/org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;41:    &amp;lt;org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;42:     &amp;lt;name&amp;gt;accept-language&amp;lt;/name&amp;gt;&lt;br /&gt;43:     &amp;lt;value&amp;gt;en&amp;lt;/value&amp;gt;&lt;br /&gt;44:    &amp;lt;/org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;45:    &amp;lt;org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;46:     &amp;lt;name&amp;gt;user-agent&amp;lt;/name&amp;gt;&lt;br /&gt;47:     &amp;lt;value&amp;gt;Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.8e-fips-rhel5&amp;lt;/value&amp;gt;&lt;br /&gt;48:    &amp;lt;/org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;49:   &amp;lt;/headers&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Take special note of these lines:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:   &amp;lt;queryParams&amp;gt;&lt;br /&gt;2:    &amp;lt;entry&amp;gt;&lt;br /&gt;3:     &amp;lt;string&amp;gt;a&amp;lt;/string&amp;gt;&lt;br /&gt;4:     &amp;lt;string-array&amp;gt;&lt;br /&gt;5:      &amp;lt;string&amp;gt;1,b=2&amp;lt;/string&amp;gt;&lt;br /&gt;6:     &amp;lt;/string-array&amp;gt;&lt;br /&gt;7:    &amp;lt;/entry&amp;gt;&lt;br /&gt;8:   &amp;lt;/queryParams&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Let's change the URL a bit and make sure that the query parameters can really be accessed by the service and its actions:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  lynx -dump -source http://localhost:8080/Quickstart_http_gateway/http/index/XXXX/yyy?param1=hello,param2=world&lt;br /&gt;2: &lt;br /&gt;3:   &amp;lt;queryParams&amp;gt;&lt;br /&gt;4:    &amp;lt;entry&amp;gt;&lt;br /&gt;5:     &amp;lt;string&amp;gt;param1&amp;lt;/string&amp;gt;&lt;br /&gt;6:     &amp;lt;string-array&amp;gt;&lt;br /&gt;7:      &amp;lt;string&amp;gt;hello,param2=world&amp;lt;/string&amp;gt;&lt;br /&gt;8:     &amp;lt;/string-array&amp;gt;&lt;br /&gt;9:    &amp;lt;/entry&amp;gt;&lt;br /&gt;10:   &amp;lt;/queryParams&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Yup! It's them!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A Global Exception&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In the description of the basic authentication example that we discussed earlier, we skipped over the definition of a global exceptions mapping for the http-provider:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  &amp;lt;!-- Global exception mappings file... --&amp;gt;&lt;br /&gt;2:  &amp;lt;&amp;lt;exception mappingsFile="/http-exception-mappings.properties" /&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;As its name indicates, this feature enables you to define a status code that will be returned for all requests that are received by a service. Let's take a look at the http-exception-mappings.properties file:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  org.jboss.soa.esb.services.security.SecurityServiceException=401&lt;br /&gt;2:  org.jboss.soa.esb.samples.quickstart.httpgateway.MyActionException=502&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;What this file indicates is that all requests that raise an exception of type org.jboss.soa.esb.services.security.SecurityServiceException will result in an HTTP return status code of 401 being returned to the client that sent in the request, and all requests that raise an exception of type org.jboss.soa.esb.samples.quickstart.httpgateway.MyActionException will result in an HTTP return sttaus code of 502 being returned. To illustrate how this, we'll invoke this service:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  &amp;lt;service category="Exceptions" name="Exception1" description="" invmScope="GLOBAL"&amp;gt;&lt;br /&gt;2:    &amp;lt;listeners&amp;gt;&lt;br /&gt;3:      &amp;lt;http-gateway name="Exception2" /&amp;gt;&lt;br /&gt;4:    &amp;lt;/listeners&amp;gt;&lt;br /&gt;5:    &amp;lt;actions mep="RequestResponse"&amp;gt;&lt;br /&gt;6:      &amp;lt;!-- Uses the globally defined exception mappings defined on the &amp;lt;http-provider&amp;gt;... --&amp;gt;&lt;br /&gt;7:       &amp;lt;action name="print" class="org.jboss.soa.esb.samples.quickstart.httpgateway.MyExceptionAction"/&amp;gt;&lt;br /&gt;8:    &amp;lt;/actions&amp;gt;&lt;br /&gt;9:  &amp;lt;/service&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;The MyExceptionAction class is minimal - just enough code to throw an exception:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  public class MyExceptionAction extends AbstractActionPipelineProcessor {&lt;br /&gt;2: &lt;br /&gt;3:    public MyExceptionAction(ConfigTree config) {&lt;br /&gt;4:    }&lt;br /&gt;5: &lt;br /&gt;6:    public Message process(Message message) throws ActionProcessingException {&lt;br /&gt;7:      throw new MyActionException("MyActionException!!!!");&lt;br /&gt;8:    }&lt;br /&gt;9: &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;To access this service, you point your browser at this URL: http://localhost:8080/Quickstart_http_gateway/http/Exceptions/Exception1&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  lynx -dump -source http://localhost:8080/Quickstart_http_gateway/http/Exceptions/Exception1 -error_file=error.txt&lt;br /&gt;2:  org.jboss.soa.esb.couriers.FaultMessageException: org.jboss.soa.esb.samples.quickstart.httpgateway.MyActionException: MyActionException!!!!&lt;br /&gt;3:      at org.jboss.soa.esb.listeners.message.errors.Factory.createExceptionFromFault(Factory.java:50)&lt;br /&gt;4:      at org.jboss.internal.soa.esb.couriers.TwoWayCourierImpl.pickup(TwoWayCourierImpl.java:207)&lt;br /&gt;5:      at org.jboss.soa.esb.client.ServiceInvoker$EPRInvoker.attemptDelivery(ServiceInvoker.java:675)&lt;br /&gt;6:      at org.jboss.soa.esb.client.ServiceInvoker$EPRInvoker.access$200(ServiceInvoker.java:569)&lt;br /&gt;7:      at org.jboss.soa.esb.client.ServiceInvoker.post(ServiceInvoker.java:359)&lt;br /&gt;8:      at org.jboss.soa.esb.client.ServiceInvoker.deliverSync(ServiceInvoker.java:219)&lt;br /&gt;9:      at org.jboss.soa.esb.listeners.gateway.http.HttpGatewayServlet.service(HttpGatewayServlet.java:187)&lt;br /&gt;10:      at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)&lt;br /&gt;11:      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)&lt;br /&gt;12:      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)&lt;br /&gt;13:      at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)&lt;br /&gt;14:      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)&lt;br /&gt;15:      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)&lt;br /&gt;16:      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)&lt;br /&gt;17:      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)&lt;br /&gt;18:      at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)&lt;br /&gt;19:      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)&lt;br /&gt;20:      at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)&lt;br /&gt;21:      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)&lt;br /&gt;22:      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)&lt;br /&gt;23:      at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)&lt;br /&gt;24:      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)&lt;br /&gt;25:      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)&lt;br /&gt;26:      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)&lt;br /&gt;27:      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)&lt;br /&gt;28:      at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)&lt;br /&gt;29:      at java.lang.Thread.run(Thread.java:636)&lt;br /&gt;30:  Caused by: org.jboss.soa.esb.samples.quickstart.httpgateway.MyActionException: MyActionException!!!!&lt;br /&gt;31:      at org.jboss.soa.esb.samples.quickstart.httpgateway.MyExceptionAction.process(MyExceptionAction.java:34)&lt;br /&gt;32:      at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.processPipeline(ActionProcessingPipeline.java:634)&lt;br /&gt;33:      at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.processPipeline(ActionProcessingPipeline.java:586)&lt;br /&gt;34:      at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.process(ActionProcessingPipeline.java:420)&lt;br /&gt;35:      at org.jboss.soa.esb.listeners.message.MessageAwareListener$TransactionalRunner.run(MessageAwareListener.java:540)&lt;br /&gt;36:      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)&lt;br /&gt;37:      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)&lt;br /&gt;38:      ... 1 more&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;And - here's the return code that we wanted:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  cat error.txt&lt;br /&gt;2:    URL=http://localhost:8080/Quickstart_http_gateway/http/Exceptions/Exception1 (GET)&lt;br /&gt;3:  STATUS=HTTP/1.1 502 Bad Gateway&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Over-Riding a Global Exception&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;It's good to be able to handle all exceptions at a global level. However, there may be times when you will want to receive a different return status code. To do this, you can over-ride that global setting. Here's a service definition to over-ride the global variable that we just discussed:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  &amp;lt;service category="Exceptions" name="Exception2" description="" invmScope="GLOBAL"&amp;gt;&lt;br /&gt;2:    &amp;lt;listeners&amp;gt;&lt;br /&gt;3:      &amp;lt;http-gateway name="Exception1"&amp;gt;&lt;br /&gt;4:        &amp;lt;!-- Override the exception mappings defined on the &amp;lt;http-provider&amp;gt;... --&amp;gt;&lt;br /&gt;5:        &amp;lt;exception&amp;gt;&lt;br /&gt;6:          &amp;lt;mapping class="org.jboss.soa.esb.samples.quickstart.httpgateway.MyActionException" status="503" /&amp;gt;&lt;br /&gt;7:        &amp;lt;/exception&amp;gt;&lt;br /&gt;8:      &amp;lt;/http-gateway&amp;gt;&lt;br /&gt;9:    &amp;lt;/listeners&amp;gt;&lt;br /&gt;10:    &amp;lt;actions mep="RequestResponse"&amp;gt;&lt;br /&gt;11:      &amp;lt;!-- Uses the override exception mappings defined on the &amp;lt;http-gateway&amp;gt;... --&amp;gt;&lt;br /&gt;12:      &amp;lt;action name="print" class="org.jboss.soa.esb.samples.quickstart.httpgateway.MyExceptionAction"/&amp;gt;&lt;br /&gt;13:    &amp;lt;/actions&amp;gt;&lt;br /&gt;14:  &amp;lt;/service&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Line 6 is the one that we're interested in. Here's where we map the class that throws the exception to the code that is returned. And, here's what happens:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  lynx -dump -source http://localhost:8080/Quickstart_http_gateway/http/Exceptions/Exception2 -error_file=error.txt&lt;br /&gt;2:  org.jboss.soa.esb.couriers.FaultMessageException: org.jboss.soa.esb.samples.quickstart.httpgateway.MyActionException: MyActionException!!!!&lt;br /&gt;3:      at org.jboss.soa.esb.listeners.message.errors.Factory.createExceptionFromFault(Factory.java:50)&lt;br /&gt;4:      at org.jboss.internal.soa.esb.couriers.TwoWayCourierImpl.pickup(TwoWayCourierImpl.java:207)&lt;br /&gt;5:      at org.jboss.soa.esb.client.ServiceInvoker$EPRInvoker.attemptDelivery(ServiceInvoker.java:675)&lt;br /&gt;6:      at org.jboss.soa.esb.client.ServiceInvoker$EPRInvoker.access$200(ServiceInvoker.java:569)&lt;br /&gt;7:      at org.jboss.soa.esb.client.ServiceInvoker.post(ServiceInvoker.java:359)&lt;br /&gt;8:      at org.jboss.soa.esb.client.ServiceInvoker.deliverSync(ServiceInvoker.java:219)&lt;br /&gt;9:      at org.jboss.soa.esb.listeners.gateway.http.HttpGatewayServlet.service(HttpGatewayServlet.java:187)&lt;br /&gt;10:      at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)&lt;br /&gt;11:      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)&lt;br /&gt;12:      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)&lt;br /&gt;13:      at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)&lt;br /&gt;14:      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)&lt;br /&gt;15:      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)&lt;br /&gt;16:      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)&lt;br /&gt;17:      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)&lt;br /&gt;18:      at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)&lt;br /&gt;19:      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)&lt;br /&gt;20:      at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)&lt;br /&gt;21:      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)&lt;br /&gt;22:      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)&lt;br /&gt;23:      at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)&lt;br /&gt;24:      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)&lt;br /&gt;25:      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)&lt;br /&gt;26:      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)&lt;br /&gt;27:      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)&lt;br /&gt;28:      at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)&lt;br /&gt;29:      at java.lang.Thread.run(Thread.java:636)&lt;br /&gt;30:  Caused by: org.jboss.soa.esb.samples.quickstart.httpgateway.MyActionException: MyActionException!!!!&lt;br /&gt;31:      at org.jboss.soa.esb.samples.quickstart.httpgateway.MyExceptionAction.process(MyExceptionAction.java:34)&lt;br /&gt;32:      at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.processPipeline(ActionProcessingPipeline.java:634)&lt;br /&gt;33:      at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.processPipeline(ActionProcessingPipeline.java:586)&lt;br /&gt;34:      at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.process(ActionProcessingPipeline.java:420)&lt;br /&gt;35:      at org.jboss.soa.esb.listeners.message.MessageAwareListener$TransactionalRunner.run(MessageAwareListener.java:540)&lt;br /&gt;36:      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)&lt;br /&gt;37:      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)&lt;br /&gt;38:      ... 1 more&lt;br /&gt;39: &lt;br /&gt;40:  cat error.txt&lt;br /&gt;41:    URL=http://localhost:8080/Quickstart_http_gateway/http/Exceptions/Exception2 (GET)&lt;br /&gt;42:  STATUS=HTTP/1.1 503 Service Unavailable&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;An Asynchronous Response&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;So far, we've only seen synchronous responses to our requests. It's also possible to have the invoked service respond asynchronously. Here's the quickstart's service definition that illustrates this:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  &amp;lt;service category="Async" name="List" description="" invmScope="GLOBAL"&amp;gt;&lt;br /&gt;2:    &amp;lt;listeners&amp;gt;&lt;br /&gt;3:      &amp;lt;!-- Receives: http://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;/Quickstart_http_gateway/http/Async/List&lt;br /&gt;4:              Uses the default http bus configuration... --&amp;gt;&lt;br /&gt;5:      &amp;lt;http-gateway name="Async"&amp;gt;&lt;br /&gt;6:        &amp;lt;asyncResponse statusCode="202"&amp;gt;&lt;br /&gt;7:          &amp;lt;payload classpathResource="/readme.txt" contentType="text/plain" characterEncoding="UTF-8" /&amp;gt;&lt;br /&gt;8:        &amp;lt;/asyncResponse&amp;gt;&lt;br /&gt;9:      &amp;lt;/http-gateway&amp;gt;&lt;br /&gt;10:    &amp;lt;/listeners&amp;gt;&lt;br /&gt;11:    &amp;lt;actions mep="RequestResponse"&amp;gt;&lt;br /&gt;12:      &amp;lt;action name="print" class="org.jboss.soa.esb.samples.quickstart.httpgateway.MyAction"/&amp;gt;&lt;br /&gt;13:    &amp;lt;/actions&amp;gt;&lt;br /&gt;14:  &amp;lt;/service&amp;gt;  &lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Line 5: This is where the asynchronous response definition starts. Note that the return code is 202.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Line 6: And. we're also able to specify a file, the contents of which will be returned as a static payload in the response along with the return code.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  lynx -dump -source http://localhost:8080/Quickstart_http_gateway/http/Async/List -error_file=error.txt&lt;br /&gt;2:  Overview:&lt;br /&gt;3:  =========&lt;br /&gt;4:   The purpose of the http_gateway quickstart sample is to demonstarte how to&lt;br /&gt;5:   configue a http gateway to pass the http request into ESB service.&lt;br /&gt;6:  &lt;br /&gt;7: &lt;br /&gt;8:  Running this quickstart:&lt;br /&gt;9:  ========================&lt;br /&gt;10:   Please refer to 'ant help-quickstarts' for prerequisites about the quickstarts&lt;br /&gt;11:   and a more detailed descripton of the different ways to run the quickstarts.&lt;br /&gt;12: &lt;br /&gt;13:  To Run '.esb' archive mode:&lt;br /&gt;14:  ===========================&lt;br /&gt;15:   1. In a command terminal window in this folder ("Window1"), type 'ant deploy'.&lt;br /&gt;16:   2. Open the web brower and send http requests to the following addresses. Be sure to&lt;br /&gt;17:     check the Server console after executing each request:&lt;br /&gt;18:      a) http://localhost:8080/Quickstart_http_gateway/http/sales/a/b/c - Will be routed to the Sales:List&lt;br /&gt;19:       service. Will return some details about the request. This Service's &amp;lt;http-gateway&amp;gt; references a&lt;br /&gt;20:       "secureFriends" bus, which contains login configurations. The login username is "kermit" and the&lt;br /&gt;21:       password is "thefrog". It usee the "java:/jaas/JBossWS" security domain, which is already installed&lt;br /&gt;22:       in your JBoss ESB/App Server.&lt;br /&gt;23:      b) http://localhost:8080/Quickstart_http_gateway/http/index/XXXX/yyy?a=1,b=2 - Will be routed to the Index:List&lt;br /&gt;24:       service. Will return some details about the request. This Service's &amp;lt;http-listener&amp;gt; does not refer&lt;br /&gt;25:       to any bus and so simply uses the "default" http bus.&lt;br /&gt;26:      c) http://localhost:8080/Quickstart_http_gateway/http/Exceptions/Exception1 - Will be routed to the&lt;br /&gt;27:       Exceptions:Exception1 service. This service throws a "MyActionException", resulting in a&lt;br /&gt;28:       502 (Bad Gateway) status being returned in accordance with the Exception to HTTP status code&lt;br /&gt;29:       mappings defined globally on the &amp;lt;http-provider&amp;gt;.&lt;br /&gt;30:      d) http://localhost:8080/Quickstart_http_gateway/http/Exceptions/Exception2 - Will be routed to the&lt;br /&gt;31:       Exceptions:Exception2 service. This service also throws a "MyActionException", but the &amp;lt;http-gateway&amp;gt;&lt;br /&gt;32:       on this service overrides the globally defined Exception to HTTP status code mappings defined globally&lt;br /&gt;33:       on the &amp;lt;http-provider&amp;gt; to return a 503 (Service Unavailable) status for the "MyActionException" exception.&lt;br /&gt;34:      e) http://localhost:8080/Quickstart_http_gateway/http/Async/List - Will be routed to the&lt;br /&gt;35:       Async:List service, which responds asynchronously with a 202 (Accepted) response code and a static&lt;br /&gt;36:       payload of this readme.txt.&lt;br /&gt;37:      f) http://localhost:8080/Quickstart_http_gateway/http/soap/ - Will be routed to the&lt;br /&gt;38:       Soap:List service, which requires message level seurity. An 401 error will occur. Now&lt;br /&gt;39:       switch to the command line and run "ant soap". This POSTs a SOAP message, with login credentials&lt;br /&gt;40:       to the gateway. The service should respond successfully this time!!&lt;br /&gt;41:   3. In this folder ("Window1"), type 'ant undeploy'.&lt;br /&gt;42: &lt;br /&gt;43:  cat error.txt&lt;br /&gt;44:    URL=http://localhost:8080/Quickstart_http_gateway/http/Async/List (GET)&lt;br /&gt;45:  STATUS=HTTP/1.1 202 Accepted&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;SOAP and Security&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The quickstart finishes where it began; with an example of some basic security. Here's the service definition:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  &amp;lt;service category="Soap" name="List" description="" invmScope="GLOBAL"&amp;gt;&lt;br /&gt;2:    &amp;lt;listeners&amp;gt;&lt;br /&gt;3:      &amp;lt;!-- Receives: http://&amp;lt;host&amp;gt;:&amp;lt;port&amp;gt;/Quickstart_http_gateway/http/soap/*&lt;br /&gt;4:        Execute "ant soap" on command line.... --&amp;gt;&lt;br /&gt;5:      &amp;lt;http-gateway name="soap" busidref="secureFriends" urlPattern="soap/*"&amp;gt;&lt;br /&gt;6:        &amp;lt;exception&amp;gt;&lt;br /&gt;7:          &amp;lt;mapping class="org.jboss.soa.esb.services.security.SecurityServiceException" status="401" /&amp;gt;&lt;br /&gt;8:        &amp;lt;/exception&amp;gt;&lt;br /&gt;9:      &amp;lt;/http-gateway&amp;gt;&lt;br /&gt;10:    &amp;lt;/listeners&amp;gt;&lt;br /&gt;11:    &amp;lt;actions mep="RequestResponse"&amp;gt;&lt;br /&gt;12:      &amp;lt;action name="print" class="org.jboss.soa.esb.samples.quickstart.httpgateway.MyAction"/&amp;gt;&lt;br /&gt;13:    &amp;lt;/actions&amp;gt;&lt;br /&gt;14:  &amp;lt;/service&amp;gt;  &lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Line 5: Here's the http-gateway definition. Note that we're using the "secureFriends" busidref again. (This means that kermit will have to login again.)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Line 7: And, here's the exception that we'll throw, with a return status code of 401.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Sure enough, when we send a request, we get that exception and return code:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  lynx -dump -source http://localhost:8080/Quickstart_http_gateway/http/soap -error_file=error.txt&lt;br /&gt;2:  HTTP: Access authorization required.&lt;br /&gt;3:      Use the -auth=id:pw parameter.&lt;br /&gt;4: &lt;br /&gt;5:  Looking up localhost:8080&lt;br /&gt;6:  Making HTTP connection to localhost:8080&lt;br /&gt;7:  Sending HTTP request.&lt;br /&gt;8:  HTTP request sent; waiting for response.&lt;br /&gt;9:  Alert!: Access without authorization denied -- retrying&lt;br /&gt;10: &lt;br /&gt;11:  lynx: Can't access startfile http://localhost:8080/Quickstart_http_gateway/http/soap&lt;br /&gt;12: &lt;br /&gt;13:  cat error.txt&lt;br /&gt;14:    URL=http://localhost:8080/Quickstart_http_gateway/http/soap (GET)&lt;br /&gt;15:  STATUS=HTTP/1.1 401 Unauthorized&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Now, we could just provide login credentials manually through the browser UI, but we want our client code to be able to do this programatically. The answer to avoiding this exception, is ot have request that we send has to include login credentials. The quickstart's build.xml file provides an ant target to do this for you by invoking the JBossESB HttpRouter action (org.jboss.soa.esb.actions.routing.http.HttpRouter). This action is one of the JBossESB's large set of "out-of-the-box" actions.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  &amp;lt;target name="soap" depends="compile" description="sends a SOAP HTTP request to the http gateway"&amp;gt;&lt;br /&gt;2:    &amp;lt;echo&amp;gt;Http Client&amp;lt;/echo&amp;gt;&lt;br /&gt;3:    &amp;lt;java fork="yes" classname="org.jboss.soa.esb.actions.routing.http.HttpRouter" failonerror="true"&amp;gt;&lt;br /&gt;4:      &amp;lt;arg value="endpointUrl=http://localhost:8080/Quickstart_http_gateway/http/soap/"/&amp;gt;&lt;br /&gt;5:              &amp;lt;!-- The EBWS is secured with container level security --&amp;gt;&lt;br /&gt;6:      &amp;lt;arg value="configurators=HttpProtocol,AuthBASIC"/&amp;gt;&lt;br /&gt;7:      &amp;lt;arg value="method=POST"/&amp;gt;&lt;br /&gt;8:      &amp;lt;arg value="auth-username=kermit"/&amp;gt;&lt;br /&gt;9:      &amp;lt;arg value="auth-password=thefrog"/&amp;gt;&lt;br /&gt;10:      &amp;lt;arg value="authscope-host=localhost"/&amp;gt;&lt;br /&gt;11:      &amp;lt;arg value="authscope-port=8080"/&amp;gt;&lt;br /&gt;12:      &amp;lt;!-- The actual payload to POST --&amp;gt;&lt;br /&gt;13:      &amp;lt;arg value="payload=soap-login.xml"/&amp;gt;&lt;br /&gt;14:      &amp;lt;classpath refid="exec-classpath"/&amp;gt;&lt;br /&gt;15:    &amp;lt;/java&amp;gt;&lt;br /&gt;16:  &amp;lt;/target&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;The actual message payload that is sent is defined in the soap-login.xml file is:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  &amp;lt;soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"&lt;br /&gt;2:              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;3:              xmlns:xsd="http://www.w3.org/2001/XMLSchema"&amp;gt;&lt;br /&gt;4: &lt;br /&gt;5:   &amp;lt;soap:Header&amp;gt;&lt;br /&gt;6:   &amp;lt;/soap:Header&amp;gt;&lt;br /&gt;7: &lt;br /&gt;8:   &amp;lt;soap:Body&amp;gt;&lt;br /&gt;9:   &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;10: &lt;br /&gt;11:  &amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;And, the successful results look like this:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:  soap:&lt;br /&gt;2:     [echo] Http Client&lt;br /&gt;3:     [java] Request payload:&lt;br /&gt;4:     [java] &amp;lt;soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"&lt;br /&gt;5:     [java]           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;6:     [java]           xmlns:xsd="http://www.w3.org/2001/XMLSchema"&amp;gt;&lt;br /&gt;7:     [java]&lt;br /&gt;8:     [java]  &amp;lt;soap:Header&amp;gt;&lt;br /&gt;9:     [java]  &amp;lt;/soap:Header&amp;gt;&lt;br /&gt;10:     [java]&lt;br /&gt;11:     [java]  &amp;lt;soap:Body&amp;gt;&lt;br /&gt;12:     [java]  &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;13:     [java]&lt;br /&gt;14:     [java] &amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;15:     [java]&lt;br /&gt;16:     [java] --------------------------&lt;br /&gt;17:     [java]&lt;br /&gt;18:     [java]&lt;br /&gt;19:     [java] Response Status Code: 200&lt;br /&gt;20:     [java] Response payload:&lt;br /&gt;21:     [java] Service: Soap:List&lt;br /&gt;22:     [java]&lt;br /&gt;23:     [java] ------------Http Request Info (XStream Encoded)-------------------&lt;br /&gt;24:     [java] &amp;lt;org.jboss.soa.esb.http.HttpRequest&amp;gt;&lt;br /&gt;25:     [java]  &amp;lt;authType&amp;gt;BASIC&amp;lt;/authType&amp;gt;&lt;br /&gt;26:     [java]  &amp;lt;characterEncoding&amp;gt;UTF-8&amp;lt;/characterEncoding&amp;gt;&lt;br /&gt;27:     [java]  &amp;lt;contentType&amp;gt;text/xml;charset=UTF-8&amp;lt;/contentType&amp;gt;&lt;br /&gt;28:     [java]  &amp;lt;contextPath&amp;gt;/Quickstart_http_gateway&amp;lt;/contextPath&amp;gt;&lt;br /&gt;29:     [java]  &amp;lt;localAddr&amp;gt;127.0.0.1&amp;lt;/localAddr&amp;gt;&lt;br /&gt;30:     [java]  &amp;lt;localName&amp;gt;localhost.localdomain&amp;lt;/localName&amp;gt;&lt;br /&gt;31:     [java]  &amp;lt;method&amp;gt;POST&amp;lt;/method&amp;gt;&lt;br /&gt;32:     [java]  &amp;lt;pathInfo&amp;gt;/&amp;lt;/pathInfo&amp;gt;&lt;br /&gt;33:     [java]  &amp;lt;protocol&amp;gt;HTTP/1.1&amp;lt;/protocol&amp;gt;&lt;br /&gt;34:     [java]  &amp;lt;remoteAddr&amp;gt;127.0.0.1&amp;lt;/remoteAddr&amp;gt;&lt;br /&gt;35:     [java]  &amp;lt;remoteHost&amp;gt;127.0.0.1&amp;lt;/remoteHost&amp;gt;&lt;br /&gt;36:     [java]  &amp;lt;remoteUser&amp;gt;kermit&amp;lt;/remoteUser&amp;gt;&lt;br /&gt;37:     [java]  &amp;lt;contentLength&amp;gt;268&amp;lt;/contentLength&amp;gt;&lt;br /&gt;38:     [java]  &amp;lt;requestURI&amp;gt;/Quickstart_http_gateway/http/soap/&amp;lt;/requestURI&amp;gt;&lt;br /&gt;39:     [java]  &amp;lt;scheme&amp;gt;http&amp;lt;/scheme&amp;gt;&lt;br /&gt;40:     [java]  &amp;lt;serverName&amp;gt;localhost&amp;lt;/serverName&amp;gt;&lt;br /&gt;41:     [java]  &amp;lt;requestPath&amp;gt;/http/soap&amp;lt;/requestPath&amp;gt;&lt;br /&gt;42:     [java]  &amp;lt;pathInfoTokens/&amp;gt;&lt;br /&gt;43:     [java]  &amp;lt;queryParams/&amp;gt;&lt;br /&gt;44:     [java]  &amp;lt;headers&amp;gt;&lt;br /&gt;45:     [java]   &amp;lt;org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;46:     [java]    &amp;lt;name&amp;gt;content-type&amp;lt;/name&amp;gt;&lt;br /&gt;47:     [java]    &amp;lt;value&amp;gt;text/xml;charset=UTF-8&amp;lt;/value&amp;gt;&lt;br /&gt;48:     [java]   &amp;lt;/org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;49:     [java]   &amp;lt;org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;50:     [java]    &amp;lt;name&amp;gt;user-agent&amp;lt;/name&amp;gt;&lt;br /&gt;51:     [java]    &amp;lt;value&amp;gt;Jakarta Commons-HttpClient/3.0.1&amp;lt;/value&amp;gt;&lt;br /&gt;52:     [java]   &amp;lt;/org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;53:     [java]   &amp;lt;org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;54:     [java]    &amp;lt;name&amp;gt;content-length&amp;lt;/name&amp;gt;&lt;br /&gt;55:     [java]    &amp;lt;value&amp;gt;268&amp;lt;/value&amp;gt;&lt;br /&gt;56:     [java]   &amp;lt;/org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;57:     [java]   &amp;lt;org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;58:     [java]    &amp;lt;name&amp;gt;authorization&amp;lt;/name&amp;gt;&lt;br /&gt;59:     [java]    &amp;lt;value&amp;gt;Basic a2VybWl0OnRoZWZyb2c=&amp;lt;/value&amp;gt;&lt;br /&gt;60:     [java]   &amp;lt;/org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;61:     [java]   &amp;lt;org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;62:     [java]    &amp;lt;name&amp;gt;host&amp;lt;/name&amp;gt;&lt;br /&gt;63:     [java]    &amp;lt;value&amp;gt;localhost:8080&amp;lt;/value&amp;gt;&lt;br /&gt;64:     [java]   &amp;lt;/org.jboss.soa.esb.http.HttpHeader&amp;gt;&lt;br /&gt;65:     [java]  &amp;lt;/headers&amp;gt;&lt;br /&gt;66:     [java] &amp;lt;/org.jboss.soa.esb.http.HttpRequest&amp;gt;&lt;br /&gt;67:     [java] --------------------------&lt;br /&gt;68:     [java]&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Closing Thoughts&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The JBossESB's new http-gateway provides great flexibility in integrating HTTP applications across the ESB. The http_gateway quickstart illustrates some of this flexibility, and, incidentally, shows just how much you can do without writing a lot of custom code. Did you notice while eading this post, that we didn't have to write support routines to handle authentication, exception handling, and dealing with URL patterns? The http-gateway and the JBossESB did the heavy lifting for us.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Acknowledgements&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Thanks to the JBossESB community and its contributors (see &lt;a href="http://anonsvn.jboss.org/repos/labs/labs/jbossesb/trunk/Contributors.txt"&gt;http://anonsvn.jboss.org/repos/labs/labs/jbossesb/trunk/Contributors.txt&lt;/a&gt;) - and to Kevin Conner for his timely review comments!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;References&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name="[1]"&gt;[1]&lt;/a&gt; http://www.jboss.org/community/wiki/HTTPGateway&lt;br /&gt;&lt;a name="[2]"&gt;[2]&lt;/a&gt; http://jboss-soa-p.blogspot.com/2009/09/works-great-right-out-of-box.html&lt;br /&gt;&lt;a name="[3]"&gt;[3]&lt;/a&gt; http://www.jboss.org/jbossesb/docs/4.7/manuals/html/ProgrammersGuide.html&lt;br /&gt;&lt;a name="[4]"&gt;[4]&lt;/a&gt; http://en.wikipedia.org/wiki/Digest_access_authentication&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/http-listener&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-870106040979144467?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/870106040979144467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=870106040979144467' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/870106040979144467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/870106040979144467'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2009/12/from-http-to-esb-jboss-esb-47s-new.html' title='From HTTP to ESB - JBossESB 4.7&apos;s New Servlet based HTTP Gateway'/><author><name>Len DiMaggio</name><uri>http://www.blogger.com/profile/07124585546929851174</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://1.bp.blogspot.com/_Wad47xG7w3A/Sc7b75epEEI/AAAAAAAAAQ4/F9-h0znUI7w/S220/Boston.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-1022433250724182539</id><published>2009-11-30T05:23:00.000-08:00</published><updated>2009-11-30T06:49:59.399-08:00</updated><title type='text'>Proxying SOAP Web Services in JBossESB 4.7</title><content type='html'>JBossESB supports SOAP web services via various mechanisms:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SOAPClient for invoking external web services.&lt;/li&gt;&lt;li&gt;SOAPProducer for invoking internally-deployed JBossWS services.&lt;/li&gt;&lt;li&gt;EBWS (ESB-Based Web Services) for decorating service requests/responses with a SOAP Envelope.&lt;/li&gt;&lt;li&gt;HttpRouter can be used to manually invoke an HTTP endpoint.&lt;/li&gt;&lt;li&gt;Explicit support for web service proxying via the &lt;a href="http://www.jboss.org/jbossesb/docs/4.7/javadoc/esb/org/jboss/soa/esb/actions/soap/proxy/SOAPProxy.html"&gt;SOAPProxy&lt;/a&gt; action.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Why would I want to proxy a web service from the ESB?&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To provide loose coupling between the client and the proxied service: the client no longer needs to have a direct connection to the remote host.&lt;/li&gt;&lt;li&gt;The WSDL contract can be transformed to modify it's parameters or change the service's declared capabilities.&lt;/li&gt;&lt;li&gt;A transformation of the SOAP envelope/body can be introduced via the ESB action chain both for the inbound request and outbound response (via &lt;a href="http://www.jboss.org/jbossesb/docs/4.7/javadoc/esb/org/jboss/soa/esb/actions/transformation/xslt/XsltAction.html"&gt;XsltAction&lt;/a&gt; or &lt;a href="http://www.jboss.org/jbossesb/docs/4.7/javadoc/esb/org/jboss/soa/esb/smooks/SmooksAction.html"&gt;SmooksAction&lt;/a&gt;). Other custom processing can also be introduced in the chain.&lt;/li&gt;&lt;li&gt;Service versioning is possible since clients can connect to 2 or more proxy endpoints on the ESB, each with its own WSDL and/or transformations and routing requirements, and the ESB will send the appropriate message to the appropriate endpoint and provide an ultimate response.&lt;/li&gt;&lt;li&gt;Complex context-based routing via ContentBasedRouter.&lt;/li&gt;&lt;/ul&gt;Here is a figure of a basic web service proxy in the ESB:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3Inn8MOHmqk/SxPIAzqx3aI/AAAAAAAAAHE/GMW8tpwK3yk/s1600/proxy.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 173px;" src="http://2.bp.blogspot.com/_3Inn8MOHmqk/SxPIAzqx3aI/AAAAAAAAAHE/GMW8tpwK3yk/s400/proxy.png" alt="" id="BLOGGER_PHOTO_ID_5409887493597289890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As you can see, the ESB action chain can perform any number of out-of-the-box or custom actions before or after the call to the proxied web service.  Also, the client of the ESB as well as the proxied web service do not have to be Java-based.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Show me how to configure the ESB to proxy to a .NET-based SOAP web service.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Here it is in 15 short lines:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) none repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0); word-wrap: normal;"&gt;1:  &amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;2:  &amp;lt;jbossesb xmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.2.0.xsd" parameterReloadSecs="5"&amp;gt;&lt;br /&gt;3:    &amp;lt;services&amp;gt;&lt;br /&gt;4:      &amp;lt;service category="Stock" name="Quote" description="Stock Quote" invmScope="GLOBAL"&amp;gt;&lt;br /&gt;5:        &amp;lt;listeners&amp;gt;&lt;br /&gt;6:          &amp;lt;http-gateway name="StockQuote-GwListener"/&amp;gt;&lt;br /&gt;7:        &amp;lt;/listeners&amp;gt;&lt;br /&gt;8:        &amp;lt;actions mep="RequestResponse"&amp;gt;&lt;br /&gt;9:          &amp;lt;action name="proxy" class="org.jboss.soa.esb.actions.soap.proxy.SOAPProxy"&amp;gt;&lt;br /&gt;10:            &amp;lt;property name="wsdl" value="http://www.webservicex.net/stockquote.asmx?WSDL"/&amp;gt;&lt;br /&gt;11:          &amp;lt;/action&amp;gt;&lt;br /&gt;12:        &amp;lt;/actions&amp;gt;&lt;br /&gt;13:      &amp;lt;/service&amp;gt;&lt;br /&gt;14:    &amp;lt;/services&amp;gt;&lt;br /&gt;15:  &amp;lt;/jbossesb&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Line 8 specifies a request/response message exchange pattern.  Line 9 adds the SOAPProxy action to the processing pipeline.  Line 10 is the only &lt;span style="font-style: italic;"&gt;required&lt;/span&gt; property: the wsdl location.  In this example, we are proxying to a .NET-based stock quote service.  Line 6 specifies the use of the newly supported &lt;a href="http://www.jboss.org/community/wiki/HTTPGateway"&gt;HTTPGateway&lt;/a&gt;, introduced in &lt;a href="http://www.jboss.org/jbossesb/downloads/"&gt;JBossESB 4.7&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;When a .esb archive is deployed with this configuration, you will see output like this in the server console:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) none repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0); word-wrap: normal;"&gt;07:17:51,789 INFO [SOAPProxy] mapped soapaction ["http://www.webserviceX.NET/GetQuote"] to binding [{http://www.webserviceX.NET/}StockQuoteSoap]&lt;br /&gt;07:17:51,790 INFO [SOAPProxy] mapped binding [{http://www.webserviceX.NET/}StockQuoteSoap] to transport [org.jboss.soa.esb.actions.soap.proxy.HttpSOAPProxyTransport] with endpoint address: [http://www.webservicex.net/stockquote.asmx]&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;At this point, the SOAPProxy has transformed the wsdl by rewriting it's soap:address location to the ESB server, so clients of the ESB will invoke it rather than the proxied service itself (line 3 below):&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) none repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0); word-wrap: normal;"&gt;1:  &amp;lt;wsdl:service name="StockQuote"&amp;gt;&lt;br /&gt;2:    &amp;lt;wsdl:port binding="tns:StockQuoteSoap" name="StockQuoteSoap"&amp;gt;&lt;br /&gt;3:      &amp;lt;soap:address location="http://192.168.1.103:8080/sample/http/Stock/Quote"/&amp;gt;&lt;br /&gt;4:    &amp;lt;/wsdl:port&amp;gt;&lt;br /&gt;5:  &amp;lt;/wsdl:service&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;With the introduction of the new &lt;a href="http://www.jboss.org/community/wiki/HTTPGateway"&gt;HTTPGateway&lt;/a&gt;, the wsdl is available at the well-known location of the endpoint URL + "?wsdl" (or "?WSDL"), as shown in the following screenshot of the ESB contract application, available at http://host:port/contract/&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3Inn8MOHmqk/SxPNKlCCsyI/AAAAAAAAAHM/lIRCGmJOxFY/s1600/JBoss_ESB_Service_Deployments.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 114px;" src="http://2.bp.blogspot.com/_3Inn8MOHmqk/SxPNKlCCsyI/AAAAAAAAAHM/lIRCGmJOxFY/s400/JBoss_ESB_Service_Deployments.png" alt="" id="BLOGGER_PHOTO_ID_5409893159025160994" border="0" /&gt;&lt;/a&gt;In our case, the wsdl URL is http://192.168.1.103:8080/sample/http/Stock/Quote?wsdl&lt;br /&gt;To invoke the ESB, we can use a tool like &lt;a href="http://www.soapui.org/"&gt;soapUI&lt;/a&gt; to send a test request to http://192.168.1.103:8080/sample/http/Stock/Quote&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) none repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0); word-wrap: normal;"&gt;1:  &amp;lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://www.webserviceX.NET/"&amp;gt;&lt;br /&gt;2:    &amp;lt;soapenv:Header/&amp;gt;&lt;br /&gt;3:    &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;4:     &amp;lt;web:GetQuote&amp;gt;&lt;br /&gt;5:       &amp;lt;web:symbol&amp;gt;RHT&amp;lt;/web:symbol&amp;gt;&lt;br /&gt;6:     &amp;lt;/web:GetQuote&amp;gt;&lt;br /&gt;7:    &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;8:  &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;The &lt;a href="http://www.jboss.org/community/wiki/HTTPGateway"&gt;HTTPGateway&lt;/a&gt; will receive the request, the SOAPProxy action will invoke the proxied .NET stock quote service, and the following response will be returned:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) none repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0); word-wrap: normal;"&gt;1:  &amp;lt;soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&amp;gt;&lt;br /&gt;2:    &amp;lt;soap:Body&amp;gt;&lt;br /&gt;3:     &amp;lt;GetQuoteResponse xmlns="http://www.webserviceX.NET/"&amp;gt;&lt;br /&gt;4:       &amp;lt;GetQuoteResult&amp;gt;&amp;lt;![CDATA[&amp;lt;StockQuotes&amp;gt;&amp;lt;Stock&amp;gt;&amp;lt;Symbol&amp;gt;RHT&amp;lt;/Symbol&amp;gt;&amp;lt;Last&amp;gt;26.80&amp;lt;/Last&amp;gt;&amp;lt;Date&amp;gt;11/27/2009&amp;lt;/Date&amp;gt;&amp;lt;Time&amp;gt;1:00pm&amp;lt;/Time&amp;gt;&amp;lt;Change&amp;gt;0.00&amp;lt;/Change&amp;gt;&amp;lt;Open&amp;gt;N/A&amp;lt;/Open&amp;gt;&amp;lt;High&amp;gt;N/A&amp;lt;/High&amp;gt;&amp;lt;Low&amp;gt;N/A&amp;lt;/Low&amp;gt;&amp;lt;Volume&amp;gt;0&amp;lt;/Volume&amp;gt;&amp;lt;MktCap&amp;gt;5.032B&amp;lt;/MktCap&amp;gt;&amp;lt;PreviousClose&amp;gt;26.80&amp;lt;/PreviousClose&amp;gt;&amp;lt;PercentageChange&amp;gt;0.00%&amp;lt;/PercentageChange&amp;gt;&amp;lt;AnnRange&amp;gt;8.30 - 28.94&amp;lt;/AnnRange&amp;gt;&amp;lt;Earns&amp;gt;0.448&amp;lt;/Earns&amp;gt;&amp;lt;P-E&amp;gt;59.82&amp;lt;/P-E&amp;gt;&amp;lt;Name&amp;gt;RED HAT INC&amp;lt;/Name&amp;gt;&amp;lt;/Stock&amp;gt;&amp;lt;/StockQuotes&amp;gt;]]&amp;gt;&amp;lt;/GetQuoteResult&amp;gt;&lt;br /&gt;5:     &amp;lt;/GetQuoteResponse&amp;gt;&lt;br /&gt;6:    &amp;lt;/soap:Body&amp;gt;&lt;br /&gt;7:  &amp;lt;/soap:Envelope&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Why can't I just use HttpRouter to do this?&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;HttpRouter can only talk to one endpoint.  One WSDL can specify multiple soap:address locations.  With the SOAPProxy, you just config the one location of the WSDL, and it can dynamically route the request to the correct soap:address location.&lt;/li&gt;&lt;li&gt;To use HttpRouter with SOAP, you have to always configure a MappedHeaderList (usually "Content-Type, Accept, Authorization, SOAPAction").  This is unnecessary with the SOAPProxy.&lt;/li&gt;&lt;li&gt;The SOAPProxy allows you to specify a wsdlTransform, which allows you to transform the original WSDL to something else you want the SOAPProxy to expose.  (This handles the "versioning" use case, and also usually means you'll want to use XsltAction or SmooksAction in the action pipeline.)&lt;/li&gt;&lt;li&gt;If you are proxying to a BASIC Auth secured web service, the "clientCredentialsRequired" property of the SOAPProxy allows you to specify if the credentials should be passed into the SOAPProxy from the client (the default, in which case the credentials are propagated), or if you want the proxy to be wide-open, but &lt;span style="font-style: italic;"&gt;it&lt;/span&gt; will handle the authentication to the proxied service for you.&lt;/li&gt;&lt;li&gt;SOAPProxy is designed to talk to more than just HTTP endpoints, although HTTP is all that is implemented right now.&lt;/li&gt;&lt;li&gt;When using the new &lt;a href="http://www.jboss.org/community/wiki/HTTPGateway"&gt;HTTPGateway&lt;/a&gt; to front the SOAPProxy, the ESB will automatically transform and cache the WSDL and make it available at the well-known location of ${endpoint}?wsdl (or ?WSDL). &lt;/li&gt;&lt;/ol&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Tell me more about security&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As mentioned in #4 above, the SOAPProxy can invoke external web services that are protected by BASIC Auth.  In addition, these services can also be encrypted using SSL.  Here is an example configuration taken from the &lt;a href="http://anonsvn.jboss.org/repos/labs/labs/jbossesb/tags/JBESB_4_7/product/samples/quickstarts/webservice_proxy_security/"&gt;webservice_proxy_security&lt;/a&gt; quickstart which comes bundled with &lt;a href="http://www.jboss.org/jbossesb/downloads/"&gt;JBossESB 4.7&lt;/a&gt;:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) none repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0); word-wrap: normal;"&gt;1:  &amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;2:  &amp;lt;jbossesb xmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.2.0.xsd" parameterReloadSecs="5"&amp;gt;&lt;br /&gt;3:    &amp;lt;globals&amp;gt;&lt;br /&gt;4:      &amp;lt;war-security method="BASIC" domain="JBossWS"/&amp;gt;&lt;br /&gt;5:    &amp;lt;/globals&amp;gt;&lt;br /&gt;6:    &amp;lt;providers&amp;gt;&lt;br /&gt;7:      &amp;lt;http-provider name="HTTP-PROVIDER"&amp;gt;&lt;br /&gt;8:        &amp;lt;http-bus busid="HTTP-BUS" transportGuarantee="CONFIDENTIAL"&amp;gt;&lt;br /&gt;9:          &amp;lt;allowed-roles&amp;gt;&lt;br /&gt;10:            &amp;lt;role name="friend"/&amp;gt;&lt;br /&gt;11:          &amp;lt;/allowed-roles&amp;gt;&lt;br /&gt;12:        &amp;lt;/http-bus&amp;gt;&lt;br /&gt;13:      &amp;lt;/http-provider&amp;gt;&lt;br /&gt;14:    &amp;lt;/providers&amp;gt;&lt;br /&gt;15:    &amp;lt;services&amp;gt;&lt;br /&gt;16:      &amp;lt;service category="Proxy_Security" name="Proxy" description="Security WebService Proxy" invmScope="GLOBAL"&amp;gt;&lt;br /&gt;17:        &amp;lt;listeners&amp;gt;&lt;br /&gt;18:          &amp;lt;http-gateway name="HTTP-GATEWAY" busidref="HTTP-BUS" urlPattern="ProxyWS/*"/&amp;gt;&lt;br /&gt;19:        &amp;lt;/listeners&amp;gt;&lt;br /&gt;20:        &amp;lt;actions mep="RequestResponse"&amp;gt;&lt;br /&gt;21:          &amp;lt;action name="proxy" class="org.jboss.soa.esb.actions.soap.proxy.SOAPProxy"&amp;gt;&lt;br /&gt;22:            &amp;lt;!-- property name="wsdl" value="https://localhost:8443/webservice_proxy_security/HelloWorldWS?wsdl"/ --&amp;gt;&lt;br /&gt;23:            &amp;lt;property name="wsdl" value="internal://jboss.ws:context=webservice_proxy_security,endpoint=HelloWorldWS"/&amp;gt;&lt;br /&gt;24:            &amp;lt;property name="endpointUrl" value="https://localhost:8443/webservice_proxy_security/HelloWorldWS"/&amp;gt;&lt;br /&gt;25:            &amp;lt;property name="file" value="/META-INF/httpclient-8443.properties"/&amp;gt;&lt;br /&gt;26:          &amp;lt;/action&amp;gt;&lt;br /&gt;27:        &amp;lt;/actions&amp;gt;&lt;br /&gt;28:      &amp;lt;/service&amp;gt;&lt;br /&gt;29:    &amp;lt;/services&amp;gt;&lt;br /&gt;30:  &amp;lt;/jbossesb&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Lines 3-14 configure the &lt;a href="http://www.jboss.org/community/wiki/HTTPGateway"&gt;HTTPGateway&lt;/a&gt; for BASIC Auth and SSL support.  Line 24 overrides the endpointUrl.  This is an example of an HttpRouter property (Note: the SOAPProxy wraps usage of HttpRouter), a useful property when domain name matching is important for SSL certs.  Line 25 specifies a &lt;a href="http://anonsvn.jboss.org/repos/labs/labs/jbossesb/tags/JBESB_4_7/product/samples/quickstarts/webservice_proxy_security/httpclient-8443.properties"&gt;properties file&lt;/a&gt; for httpclient configuration.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;What's with the "internal" wsdl location?&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Line 22 (a "normal" http URL) is commented out and instead, on Line 23, you see an "internal" URL.  In &lt;a href="http://www.jboss.org/jbossesb/downloads/"&gt;JBossESB 4.7&lt;/a&gt;, the value can reference a location based on  five different schemes: http, https, file, classpath or internal (JBossWS jmx mbean object name).  Here are some examples:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) none repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0); word-wrap: normal;"&gt;http://localhost:8080/Quickstart_webservice_proxy_basic_ws/HelloWorldWS?wsdl&lt;br /&gt;https://localhost:8443/webservice_proxy_security/HelloWorldWS?wsdl&lt;br /&gt;file:///tmp/HelloWorldWS.wsdl&lt;br /&gt;classpath://META-INF/HelloWorldWS.wsdl&lt;br /&gt;internal://jboss.ws:context=Quickstart_webservice_proxy_basic_ws,endpoint=HelloWorldWS&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;br /&gt;I want to learn more...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Other quickstart samples available are &lt;a href="http://anonsvn.jboss.org/repos/labs/labs/jbossesb/tags/JBESB_4_7/product/samples/quickstarts/webservice_proxy_basic/"&gt;webservice_proxy_basic&lt;/a&gt;, &lt;a href="http://anonsvn.jboss.org/repos/labs/labs/jbossesb/tags/JBESB_4_7/product/samples/quickstarts/webservice_proxy_routed/"&gt;webservice_proxy_routed&lt;/a&gt; (an example using the ContentBasedRouter to route to one of two proxied endpoints) and &lt;a href="http://anonsvn.jboss.org/repos/labs/labs/jbossesb/tags/JBESB_4_7/product/samples/quickstarts/webservice_proxy_versioning/"&gt;webservice_proxy_versioning&lt;/a&gt; (an example showing support for old and new versions of the same endpoint via transformation).&lt;br /&gt;&lt;br /&gt;Of course, you are always welcome to ask questions in the &lt;a href="http://www.jboss.org/index.html?module=bb&amp;amp;op=viewforum&amp;amp;f=246"&gt;JBossESB project forum&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-1022433250724182539?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/1022433250724182539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=1022433250724182539' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/1022433250724182539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/1022433250724182539'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2009/11/proxying-soap-web-services-in-jbossesb.html' title='Proxying SOAP Web Services in JBossESB 4.7'/><author><name>David Ward ☠</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_3Inn8MOHmqk/SeO_6JG9gkI/AAAAAAAAAFA/g4IkWAMNUhs/s1600-R/david-xray.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3Inn8MOHmqk/SxPIAzqx3aI/AAAAAAAAAHE/GMW8tpwK3yk/s72-c/proxy.png' height='72' width='72'/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-9186463936198797354</id><published>2009-11-23T17:58:00.000-08:00</published><updated>2009-11-30T07:51:00.630-08:00</updated><title type='text'>MessageAlerts in JBossESB 4.7</title><content type='html'>&lt;b&gt;Is One of My Services or Actions Clogging Things Up?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;JBossESB 4.7 includes some great new features. In this post, I wanted to highlight a feature that can help answer the above question.&lt;br /&gt;&lt;br /&gt;The new feature feature is "MessageAlerts" (org.jboss.soa.esb.listeners.message.MessageAlerts). This feature enables you to collect fine grained information on the processing time or number of bytes that a specific service, or a specific action in a service requires to process a single message.&lt;br /&gt;&lt;br /&gt;You use MessageAlerts by defining processing time and byte total thresholds on a per service and/or action basis. When the service or action in question takes longer than the defined time threshold to process a message, a WARNING is written to the server log and made available in the JMX console. You define the thresholds with these properties:&lt;br /&gt;&lt;br /&gt;alertTimeThreshold="420"&lt;br /&gt;alertLengthThreshold="10"&lt;br /&gt;&lt;br /&gt;The time-related threshold is measured in milliseconds. The length-related threshold is measured in bytes.&lt;br /&gt;&lt;br /&gt;When would you use the byte total threshold? This can be useful if, for example, the service or action that you are watching performs transformations, and suddenly begins processing way more bytes than you're expecting that it should.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;An Example in a Quickstart&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The MessageAlerts feature is demonstrated in a quickstart named, appropriately enough, "messagealert." If you've ever run the "helloworld" quickstart, then this quickstart should be familiar. The only changes are the addition of the org.jboss.soa.esb.samples.quickstart.messagealerts.DelayAction action class (as you can guess by the name, this class introduces a delay to cause the alertTimeThreshold to be reached, and the changes in the jboss-esb.xml file listed below:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt;1:   &amp;lt;services&amp;gt;&lt;br /&gt;2:    &amp;lt;service&lt;br /&gt;3:     category="FirstServiceESB"&lt;br /&gt;4:      name="SimpleListener"&lt;br /&gt;5:      description="Hello World"&lt;br /&gt;6:      alertTimeThreshold="420"&lt;br /&gt;7:      alertLengthThreshold="10"&lt;br /&gt;8:      &amp;gt;&lt;br /&gt;9:     &amp;lt;listeners&amp;gt;&lt;br /&gt;10:      &amp;lt;jms-listener name="JMS-Gateway"&lt;br /&gt;11:       busidref="quickstartGwChannel"&lt;br /&gt;12:       is-gateway="true"&lt;br /&gt;13:      /&amp;gt;&lt;br /&gt;14:       &amp;lt;jms-listener name="helloWorld"&lt;br /&gt;15:        busidref="quickstartEsbChannel"&lt;br /&gt;16:      /&amp;gt;&lt;br /&gt;17:     &amp;lt;/listeners&amp;gt;&lt;br /&gt;18:     &amp;lt;actions mep="OneWay"&amp;gt;&lt;br /&gt;19:      &amp;lt;action name="action1"&lt;br /&gt;20:       class="org.jboss.soa.esb.samples.quickstart.messagealerts.MyJMSListenerAction"&lt;br /&gt;21:       process="displayMessage"&lt;br /&gt;22:      /&amp;gt;&lt;br /&gt;23:      &amp;lt;action name="action2" class="org.jboss.soa.esb.actions.SystemPrintln"&amp;gt;&lt;br /&gt;24:      &amp;lt;property name="printfull" value="false"/&amp;gt;&lt;br /&gt;25:     &amp;lt;/action&amp;gt;&lt;br /&gt;26:     &amp;lt;action name="action3"&lt;br /&gt;27:      class="org.jboss.soa.esb.samples.quickstart.messagealerts.DelayAction"&lt;br /&gt;28:      process="delayMessage"&lt;br /&gt;29:      alertTimeThreshold="30"&lt;br /&gt;30:      alertLengthThreshold="50"&amp;gt;&lt;br /&gt;31:     &amp;lt;/action&amp;gt;&lt;br /&gt;32:    &amp;lt;/actions&amp;gt;&lt;br /&gt;33:   &amp;lt;/service&amp;gt;&lt;br /&gt;34:  &amp;lt;/services&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The changes related to MessageAlerts are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lines 6-7: These set the service thresholds at 420 milliseconds in time and 10 bytes in length.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lines 29-30: And, these set the action thresholds at 30 milliseconds in time and 50 bytes in length.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;When we deploy and run the quickstart, the following is written to the server.log:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(204, 204, 204); padding: 0px; background: rgb(240, 240, 240) url(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif) repeat scroll 0% 0%; overflow: auto; font-family: arial; font-size: 12px; width: 99%; height: auto; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 0, 0); text-align: left; line-height: 20px;"&gt;&lt;code style="color: rgb(0, 0, 0);"&gt; 22:00:28,833 INFO [STDOUT] &amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&lt;br /&gt;22:00:28,837 INFO [STDOUT] Body: Message Alerts&lt;br /&gt;22:00:28,837 INFO [STDOUT] &amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&lt;br /&gt;22:00:28,850 INFO [STDOUT] Message structure:&lt;br /&gt;22:00:28,850 INFO [STDOUT] [Message Alerts].&lt;br /&gt;22:00:31,852 WARN [ServiceMessageCounter] jboss.esb:category=MessageCounter,deployment=Quickstart_messagealerts.esb,service-category=FirstServiceESB,service-name=SimpleListener service, action3 action alert time 3001 took longer than 30 ms&lt;br /&gt;22:00:31,853 WARN [ServiceMessageCounter] jboss.esb:category=MessageCounter,deployment=Quickstart_messagealerts.esb,service-category=FirstServiceESB,service-name=SimpleListener service, action3 action message size 2960 was larger than 50 bytes&lt;br /&gt;22:00:31,853 WARN [ServiceMessageCounter] jboss.esb:category=MessageCounter,deployment=Quickstart_messagealerts.esb,service-category=FirstServiceESB,service-name=SimpleListener service alert time 3007 took longer than 420 ms&lt;br /&gt;22:00:31,854 WARN [ServiceMessageCounter] jboss.esb:category=MessageCounter,deployment=Quickstart_messagealerts.esb,service-category=FirstServiceESB,service-name=SimpleListener service message size 2960 was larger than 10 bytes&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And, the same information is available in the JMX log under jboss.esb, service=MessageAlerts:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Wad47xG7w3A/Sws-uz5dxvI/AAAAAAAAA_c/wdclgpnnGuM/s1600/Screenshot-1.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/_Wad47xG7w3A/Sws-uz5dxvI/AAAAAAAAA_c/wdclgpnnGuM/s400/Screenshot-1.png" alt="" id="BLOGGER_PHOTO_ID_5407484751514552050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As you can see in this screenshot, you can reset the counters through the JMX console. (And, yes, as you can also see in this screenshot, I'm staying up way too late at night writing about this stuff.)&lt;br /&gt;&lt;br /&gt;You can also access the same information from the jboss.esb mbean directly:&lt;br /&gt;&lt;pre&gt;sh ./twiddle.sh get "jboss.esb:service=MessageAlerts"&lt;/pre&gt;&lt;br /&gt;And, for extra credit, you can access the MessageAlerts service programatically. To do this, first, we'll modify the quickstart's jboss-esb.xml file to move the action that prints information to the server log to happen after the delay (and therefore after the MessageAlerts have been generated).&lt;br /&gt;&lt;br /&gt;Then, we'll replace the code in MyJMSListenerAction.java with this:&lt;br /&gt;&lt;br /&gt;&lt;pre  style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"&gt;&lt;code style="color:#000000;word-wrap:normal;"&gt;1:   package org.jboss.soa.esb.samples.quickstart.messagealerts;  &lt;br /&gt;2:    &lt;br /&gt;3:   import org.jboss.soa.esb.actions.AbstractActionLifecycle;  &lt;br /&gt;4:   import org.jboss.soa.esb.helpers.ConfigTree;  &lt;br /&gt;5:   import org.jboss.soa.esb.message.Message;  &lt;br /&gt;6:    &lt;br /&gt;7:   import javax.management.ObjectName;  &lt;br /&gt;8:   import javax.management.MBeanServer;  &lt;br /&gt;9:   import javax.management.MalformedObjectNameException;  &lt;br /&gt;10:    &lt;br /&gt;11:   import org.jboss.mx.util.MBeanProxyExt;  &lt;br /&gt;12:   import org.jboss.mx.util.MBeanServerLocator;  &lt;br /&gt;13:   import org.jboss.soa.esb.actions.AbstractActionPipelineProcessor;  &lt;br /&gt;14:   import org.jboss.soa.esb.actions.ActionProcessingException;  &lt;br /&gt;15:    &lt;br /&gt;16:   import java.util.Vector;  &lt;br /&gt;17:    &lt;br /&gt;18:   public class MyJMSListenerAction extends AbstractActionLifecycle  &lt;br /&gt;19:   {  &lt;br /&gt;20:    &lt;br /&gt;21:   protected ConfigTree _config;  &lt;br /&gt;22:    &lt;br /&gt;23:   public MyJMSListenerAction(ConfigTree config) { _config = config; }  &lt;br /&gt;24:    &lt;br /&gt;25:   public Message displayMessage(Message message) throws Exception{  &lt;br /&gt;26:    &lt;br /&gt;27:   MBeanServer server = org.jboss.mx.util.MBeanServerLocator.locateJBoss();  &lt;br /&gt;28:   Vector theAlertsVector = (Vector)server.getAttribute(new ObjectName("jboss.esb:service=MessageAlerts"), "Alerts");  &lt;br /&gt;29:    &lt;br /&gt;30:   for (int i = 0; i &amp;lt; theAlertsVector.size(); i++ ) {  &lt;br /&gt;31:   System.out.println("******Data returned from MessageAlert[" + i + "] = " + theAlertsVector.elementAt(i) + "\n" );  &lt;br /&gt;32:   }  &lt;br /&gt;33:    &lt;br /&gt;34:   System.out.println("&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;");  &lt;br /&gt;35:   System.out.println("Body: " + message.getBody().get()) ;  &lt;br /&gt;36:   System.out.println("&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;&amp;amp;");  &lt;br /&gt;37:   return message;  &lt;br /&gt;38:   }  &lt;br /&gt;39:    &lt;br /&gt;40:  }  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Line 27: Locates the MBeanServer - this is easy as we are running in the same JVM as the server&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Line 28: Retrieves the Vector of MessageAlerts from the jboss.esb MessageAlerts service&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lines 30-33: and prints them out&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Closing Thoughts&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The ability to building your own services and custom actions with JBossESB is one characteristic of its overall flexibility. With MessageAlerts, you can more easily track the efficiency of those services and actions, at a fine grained level. The message alert feature makes it simple.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Acknowledgements&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Thanks to Tom Cunningham for his input to this post and his patient responses to my many questions!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-9186463936198797354?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/9186463936198797354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=9186463936198797354' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/9186463936198797354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/9186463936198797354'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2009/11/messagealerts-in-jbossesb-47.html' title='MessageAlerts in JBossESB 4.7'/><author><name>Len DiMaggio</name><uri>http://www.blogger.com/profile/07124585546929851174</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://1.bp.blogspot.com/_Wad47xG7w3A/Sc7b75epEEI/AAAAAAAAAQ4/F9-h0znUI7w/S220/Boston.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Wad47xG7w3A/Sws-uz5dxvI/AAAAAAAAA_c/wdclgpnnGuM/s72-c/Screenshot-1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-6357922506755877343</id><published>2009-10-02T06:05:00.000-07:00</published><updated>2009-10-02T06:07:45.002-07:00</updated><title type='text'>Content Based Routing in JBossESB Just Got Easier</title><content type='html'>One of the main tasks that the JBossESB performs is that of routing messages to the correct services. (As I never tire of telling people, in the context of the ESB, everything is either a message or a service. ;-) The ESB supports multiple types of message routing, including routing based on the content of the message itself. This Content Based Routing (CBR) was originally implemented in the ESB by means of using JBoss Drools.&lt;a href="#[1]"&gt;[1]&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;JBoss Drools is a complete enterprise platform for rules-based application development, workflow, administration, and event processing. It also provides an integration with JBossESB to support content based routing. You define the content based routing algorithm in a set of rules.&lt;br /&gt;&lt;br /&gt;But, Drools might be a larger tool than you may want to use for some routing tasks.&lt;br /&gt;&lt;br /&gt;Two additional (and simpler) approaches for content based routing were just added to the JBossESB project. (Note that these were added to the JBoss ESB project in trunk here: &lt;a href="http://anonsvn.jboss.org/repos/labs/labs/jbossesb/trunk"&gt;http://anonsvn.jboss.org/repos/labs/labs/jbossesb/trunk&lt;/a&gt; and should be in the next project release.) Let's take a look at these new approaches for content based routing as illustrated in the "jbos-esb.xml" file of the "fun_cbr" quickstart sample application:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;XPath Content Based Routing&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;To configure XPath content based routing you define a service like this:&lt;br /&gt;&lt;pre&gt;32  &amp;lt;service category="Fun_CBRServices_ESB" name="XPath_FunCBRService_ESB" description="ESB Listener - for the native clients" invmScope="GLOBAL"&gt;&lt;br /&gt;33      &amp;lt;listeners&amp;gt;&lt;br /&gt;34          &amp;lt;!-- Gateway --&amp;gt;&lt;br /&gt;35          &amp;lt;jms-listener name="TheGateway" busidref="xpathQuickstartGwChannel" is-gateway="true" /&amp;gt;&lt;br /&gt;36       &amp;lt;/listeners&amp;gt;&lt;br /&gt;37       &amp;lt;actions mep="OneWay"&amp;gt;&lt;br /&gt;38          &amp;lt;action class="org.jboss.soa.esb.actions.ContentBasedRouter" name="ContentBasedRouter"&amp;gt;&lt;br /&gt;39              &amp;lt;property name="cbrAlias" value="XPath"/&amp;gt;&lt;br /&gt;40              &amp;lt;property name="destinations"&amp;gt;&lt;br /&gt;41                  &amp;lt;namespace prefix="ord" uri="http://org.jboss.soa.esb/Order" /&amp;gt;&lt;br /&gt;42                  &amp;lt;route-to service-category="BlueTeam"  service-name="GoBlue"  expression="/ord:Order[@statusCode='0']" /&amp;gt;&lt;br /&gt;43                  &amp;lt;route-to service-category="RedTeam"   service-name="GoRed"   expression="/ord:Order[@statusCode='1']" /&amp;gt;&lt;br /&gt;44                  &amp;lt;route-to service-category="GreenTeam" service-name="GoGreen" expression="/ord:Order[@statusCode='2']" /&amp;gt;&lt;br /&gt;45               &amp;lt;/property&amp;gt;&lt;br /&gt;46          &amp;lt;/action&amp;gt;&lt;br /&gt;47      &amp;lt;/actions&amp;gt;&lt;br /&gt;48  &amp;lt;/service&amp;gt;&lt;br /&gt;&lt;/pre&gt;The "cbrAlias" property defined on line 39 indicates that one of the new approaches for content based routing is to be used. On line 41 the namespace is defined and lines 42-44 define the actual routes. Note that this is completely defined in the jboss-esb.xml file. No additional configuration files are needed.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Regex Content Based Routing&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;52  &amp;lt;service category="Fun_CBRServices_ESB" name="Regex_FunCBRService_ESB" description="ESB Listener - for the native clients" invmScope="GLOBAL"&amp;gt;&lt;br /&gt;53      &amp;lt;listeners&amp;gt;&lt;br /&gt;54          &amp;lt;!-- Gateway --&amp;gt;&lt;br /&gt;55          &amp;lt;jms-listener name="TheGateway" busidref="regexQuickstartGwChannel" is-gateway="true" /&amp;gt;&lt;br /&gt;56       &amp;lt;/listeners&amp;gt;&lt;br /&gt;57       &amp;lt;actions mep="OneWay"&amp;gt;&lt;br /&gt;58          &amp;lt;action class="org.jboss.soa.esb.actions.ContentBasedRouter" name="ContentBasedRouter"&amp;gt;&lt;br /&gt;59              &amp;lt;property name="cbrAlias" value="Regex"/&amp;gt;&lt;br /&gt;60              &amp;lt;property name="ruleSet" value="/regex-rules.properties"/&amp;gt;                  &lt;br /&gt;61              &amp;lt;property name="ruleReload" value="true"/&amp;gt;&lt;br /&gt;62              &amp;lt;property name="destinations"&amp;gt;&lt;br /&gt;63                  &amp;lt;route-to destination-name="blue"  service-category="BlueTeam"  service-name="GoBlue" /&amp;gt;&lt;br /&gt;64                  &amp;lt;route-to destination-name="red"   service-category="RedTeam"   service-name="GoRed" /&amp;gt;&lt;br /&gt;65                  &amp;lt;route-to destination-name="green" service-category="GreenTeam" service-name="GoGreen" /&amp;gt;&lt;br /&gt;66              &amp;lt;/property&amp;gt;&lt;br /&gt;67          &amp;lt;/action&amp;gt;&lt;br /&gt;68      &amp;lt;/actions&amp;gt;&lt;br /&gt;69  &amp;lt;/service&amp;gt;&lt;br /&gt;&lt;/pre&gt;Again, Line 59 defines the cbrAlias property and lines 63-65 define the actual paths. On line 60, we have a reference to the external file that contains the XPath expressions that will govern the routing. That file looks like this:&lt;br /&gt;&lt;pre&gt;1  blue=.* statusCode="0".*&lt;br /&gt;2  red=.* statusCode="1".*&lt;br /&gt;3  green=.* statusCode="2".*&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-style: italic;"&gt;It's important to note that any applications built with Drools-based content based routing will continue to function without needing any changes or migrations.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To sum it up, content based routing has always been a flexible way to route messages to services. With these changes to JBossESB, it's even easier to use.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;References&lt;/b&gt;&lt;br /&gt;&lt;a name="[1]"&gt;&lt;/a&gt;[1] &lt;a href="http://jboss-soa-p.blogspot.com/2009/07/when-content-knows-way-content-based.html"&gt;http://jboss-soa-p.blogspot.com/2009/07/when-content-knows-way-content-based.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-6357922506755877343?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/6357922506755877343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=6357922506755877343' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/6357922506755877343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/6357922506755877343'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2009/10/content-based-routing-in-jbossesb-just.html' title='Content Based Routing in JBossESB Just Got Easier'/><author><name>Len DiMaggio</name><uri>http://www.blogger.com/profile/07124585546929851174</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://1.bp.blogspot.com/_Wad47xG7w3A/Sc7b75epEEI/AAAAAAAAAQ4/F9-h0znUI7w/S220/Boston.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-4086478659950934496</id><published>2009-09-30T06:46:00.000-07:00</published><updated>2009-09-30T06:51:07.993-07:00</updated><title type='text'>JBoss Tools Editor for Smooks… Let us hear what you think…</title><content type='html'>&lt;div class="postcontent"&gt;&lt;p&gt;Of late, we've been making more of a push on the Eclipse Tooling for Smooks within JBoss Tools.  Prior to a few weeks ago, Dart Peng was “more or less” left to his own devices on this work, without much help from myself or anyone else.  More recently, Brian Fitzpatrick and I have been more actively contributing to the great work being done by Dart.&lt;/p&gt; &lt;p&gt;Brian has been blogging about this work &lt;a href="http://jbosstools.blogspot.com/2009/09/seeking-feedback-on-smooks.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/jbosstools.blogspot.com');"&gt;here on the JBoss Tools blog.&lt;/a&gt; Please take a look and contribute your throughs and ideas!!!&lt;/p&gt;&lt;p&gt;In time, this work will feed back into the ESB Configuration Editor, making it a lot easier to perform transformations (and other data manipulation processes) on the ESB.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-4086478659950934496?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/4086478659950934496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=4086478659950934496' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4086478659950934496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4086478659950934496'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2009/09/jboss-tools-editor-for-smooks-let-us.html' title='JBoss Tools Editor for Smooks… Let us hear what you think…'/><author><name>Tom Fennelly</name><uri>http://www.blogger.com/profile/14161465872732273475</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-3285231620214846530</id><published>2009-03-01T00:33:00.000-08:00</published><updated>2009-03-01T00:41:29.614-08:00</updated><title type='text'>Integrating jBPM + JBoss ESB + POP3</title><content type='html'>&lt;a href="http://architecture-journal.blogspot.com/2009/02/quick-tip-integrando-jbpm-jboss-esb.html"&gt;POP3 JCA Inflow example&lt;/a&gt;.  It's in Portuguese.  &lt;a href="http://translate.google.ie/translate?u=http%3A%2F%2Farchitecture-journal.blogspot.com%2F2009%2F02%2Fquick-tip-integrando-jbpm-jboss-esb.html&amp;amp;sl=pt&amp;amp;tl=en&amp;amp;hl=en&amp;amp;ie=UTF-8"&gt;Here it is translated to English.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-3285231620214846530?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/3285231620214846530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=3285231620214846530' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3285231620214846530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3285231620214846530'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2009/03/integrating-jbpm-jboss-esb-pop3.html' title='Integrating jBPM + JBoss ESB + POP3'/><author><name>Tom Fennelly</name><uri>http://www.blogger.com/profile/14161465872732273475</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-8036495191959895182</id><published>2009-02-26T04:17:00.000-08:00</published><updated>2009-02-26T04:27:20.185-08:00</updated><title type='text'>Smooks Persistence: Reusing your Hibernate, Ibatis and JPA resources to persist XML, EDI and more</title><content type='html'>Maurice Zeijen posted an very interesting blog on how to leverage existing Hibernate, JPA and Ibatis persistence resources to easily persist XML, EDI, CSV, JSON and more, using &lt;a href="http://www.smooks.org"&gt;Smooks&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This functionality should eventually make its way into the ESB.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.smooks.org/2009/02/26/smooks-persistence-part-1-the-introduction/"&gt;See the full blog here&lt;/a&gt;.  Don't forget to vote for it ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-8036495191959895182?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/8036495191959895182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=8036495191959895182' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/8036495191959895182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/8036495191959895182'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2009/02/smooks-persistence-reusing-your.html' title='Smooks Persistence: Reusing your Hibernate, Ibatis and JPA resources to persist XML, EDI and more'/><author><name>Tom Fennelly</name><uri>http://www.blogger.com/profile/14161465872732273475</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-2993847404485857916</id><published>2009-02-24T05:56:00.001-08:00</published><updated>2009-02-24T05:56:42.598-08:00</updated><title type='text'>Podcast on SOA Patterns</title><content type='html'>In case &lt;a href="http://jboss-soa-p.blogspot.com/2009/02/soa-patterns-podcast.html"&gt;you don't read the SOA Platform blog&lt;/a&gt; (why not?! ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-2993847404485857916?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/2993847404485857916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=2993847404485857916' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/2993847404485857916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/2993847404485857916'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2009/02/podcast-on-soa-patterns.html' title='Podcast on SOA Patterns'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-6934335356995757892</id><published>2009-02-16T00:38:00.001-08:00</published><updated>2009-02-16T00:40:55.505-08:00</updated><title type='text'>CICS integration with JBossESB</title><content type='html'>We've been working with &lt;a href="http://www.legsem.com/legstar/"&gt;LegStar to integrate CICS through JBossESB&lt;/a&gt;. &lt;a href="http://www.infoq.com/articles/legacy-integration"&gt;InfoQ has recently published an article on the subject&lt;/a&gt;, so check it out if you're interested in this situation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-6934335356995757892?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/6934335356995757892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=6934335356995757892' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/6934335356995757892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/6934335356995757892'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2009/02/cics-integration-with-jbossesb.html' title='CICS integration with JBossESB'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-5223938912343251088</id><published>2009-02-15T02:51:00.000-08:00</published><updated>2009-02-15T02:53:47.684-08:00</updated><title type='text'>JBossESB and Camel</title><content type='html'>Edgar has &lt;a href="http://www.jboss.org/feeds/post/combining_apachecamel_bsf_to_make_jboss_esb_polyglot"&gt;written a nice article on JBossESB 4.5 and Camel&lt;/a&gt;. If you haven't seen it already, then check it out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-5223938912343251088?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/5223938912343251088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=5223938912343251088' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/5223938912343251088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/5223938912343251088'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2009/02/jbossesb-and-camel.html' title='JBossESB and Camel'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-6545207013471146209</id><published>2009-01-18T12:22:00.001-08:00</published><updated>2009-01-18T12:23:54.130-08:00</updated><title type='text'>WSTF retrospective</title><content type='html'>I forgot to mention that we've been working with IBM and others for a while on the &lt;a href="http://www.wstf.org/"&gt;Web Services Test Forum&lt;/a&gt;. For more information &lt;a href="http://www.infoq.com/news/2008/12/wstf"&gt;take a look at the InfoQ article&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-6545207013471146209?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/6545207013471146209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=6545207013471146209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/6545207013471146209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/6545207013471146209'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2009/01/wstf-retrospective.html' title='WSTF retrospective'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-5911310228418674244</id><published>2009-01-18T12:18:00.000-08:00</published><updated>2009-01-18T12:21:50.374-08:00</updated><title type='text'>SOA Design Patterns</title><content type='html'>&lt;a href="http://jbossesb.blogspot.com/2007/12/soa-patterns.html"&gt;About a year ago I mentioned that we were helping Thomas Erl with his (then) latest book on SOA Design Patterns&lt;/a&gt;. Well &lt;a href="http://www.amazon.com/Design-Patterns-Prentice-Service-Oriented-Computing/dp/0136135161"&gt;the book has been published&lt;/a&gt;. For more information take a look at &lt;a href="http://jboss-soa-p.blogspot.com/2009/01/soa-design-patterns.html"&gt;the SOA Platform blog entry&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-5911310228418674244?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/5911310228418674244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=5911310228418674244' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/5911310228418674244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/5911310228418674244'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2009/01/soa-design-patterns.html' title='SOA Design Patterns'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-4077286845245237813</id><published>2008-11-26T04:06:00.000-08:00</published><updated>2008-11-26T04:07:15.336-08:00</updated><title type='text'>Smooks on InfoQ</title><content type='html'>Our very own Tom Fennelly has had a &lt;a href="http://www.infoq.com/news/2008/11/smooks-events"&gt;great article on Smooks published on InfoQ&lt;/a&gt;. Take a look.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-4077286845245237813?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/4077286845245237813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=4077286845245237813' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4077286845245237813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4077286845245237813'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/11/smooks-on-infoq.html' title='Smooks on InfoQ'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-9006476401673331072</id><published>2008-11-21T01:33:00.000-08:00</published><updated>2008-11-21T01:35:51.881-08:00</updated><title type='text'>Stonehenge</title><content type='html'>We just helped start &lt;a href="http://wiki.apache.org/incubator/StonehengeProposal"&gt;Apache Stonehenge&lt;/a&gt;. As &lt;a href="http://www.webservices.org/weblog/mark_little/web_services_interoperability_and_portability"&gt;I've said elsewhere&lt;/a&gt; several times, interoperability is very important for Web Services, so hopefully this will help the industry as a whole as well as our projects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-9006476401673331072?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/9006476401673331072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=9006476401673331072' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/9006476401673331072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/9006476401673331072'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/11/stonehenge.html' title='Stonehenge'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-1425905712301225791</id><published>2008-10-31T09:57:00.000-07:00</published><updated>2008-10-31T09:59:18.301-07:00</updated><title type='text'>SOA Platform 4.3 is released!</title><content type='html'>We're pleased to announce that &lt;a href="http://www.redhat.com/jboss/platforms/soa/"&gt;version 4.3 of our SOA Platform&lt;/a&gt; has just been released. We've made quite a few improvements since the &lt;a href="http://www.redhat.com/about/news/prarchive/2008/jboss_soa.html"&gt;first release&lt;/a&gt;, including &lt;a href="http://www.redhat.com/about/news/prarchive/2008/SOA_JON.html"&gt;closer integration with JON&lt;/a&gt; to provide runtime governance of services, improved Web Services support, better performance, reliability etc. SOA-P 4.3 GA is based on JBossESB 4.4 CP1, so you can grab the source from the repository. As always, give us feedback so we can improve it even more in subsequent releases!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-1425905712301225791?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/1425905712301225791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=1425905712301225791' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/1425905712301225791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/1425905712301225791'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/10/soa-platform-43-is-released.html' title='SOA Platform 4.3 is released!'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-228979502659425736</id><published>2008-10-24T03:41:00.000-07:00</published><updated>2008-10-24T03:46:25.530-07:00</updated><title type='text'>Wise as a JBoss project</title><content type='html'>&lt;a href="http://jbossesb.blogspot.com/2008/08/zero-code-web-services-addition.html"&gt;We've been working with the Wise project&lt;/a&gt; for a while and it's offered us some really nice capabilities. So it's with great pleasure that I can now announce that &lt;a href="http://jbosswise.blogspot.com/2008/10/wise-is-jbossorg-project.html"&gt;Wise has moved&lt;/a&gt; to &lt;a href="http://www.jboss.org/wise/"&gt;become a JBoss Project&lt;/a&gt;. Welcome to the entire Wise community! I'm sure we've all got great things ahead!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-228979502659425736?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/228979502659425736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=228979502659425736' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/228979502659425736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/228979502659425736'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/10/wise-as-jboss-project.html' title='Wise as a JBoss project'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-1680503599016518140</id><published>2008-10-15T15:59:00.000-07:00</published><updated>2008-10-15T16:19:18.805-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JBoss ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='demo'/><category scheme='http://www.blogger.com/atom/ns#' term='JBoss'/><category scheme='http://www.blogger.com/atom/ns#' term='jBPM'/><category scheme='http://www.blogger.com/atom/ns#' term='Smooks'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash recording'/><category scheme='http://www.blogger.com/atom/ns#' term='Drools'/><title type='text'>Evaluating &amp; Getting Started with JBoss ESB</title><content type='html'>I am personally a learn by example, learn by demonstration kind of person.  I prefer to see the technology running before I'm willing to invest time into downloading it, reading the documentation and trying it out. The following items offer a great introduction into the capabilities of the &lt;a href="http://www.jboss.org/jbossesb/"&gt;JBoss ESB&lt;/a&gt;. Please review them and if you have questions get after us in the &lt;a href="http://www.jboss.com/index.html?module=bb&amp;amp;op=viewforum&amp;amp;f=246"&gt;online forums&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;1) jBPM and ESB 4.2 Demo: &lt;a href="http://www.redhat.com/v/webcast/SOAdemo2/SOADemo2.html"&gt;http://www.redhat.com/v/webcast/SOAdemo2/SOADemo2.html&lt;/a&gt;&lt;br /&gt;A Flash-based recording of just the demonstration portion of the Apr 17th webinar.  This is your best starting point if you only have 17 minutes for an immersion into SOA the JBoss way.  This demo includes the Spring AOP trick of "eavesdropping" (aka wiretap) on the JPetstore so that the order is routed through the ESB and into a jBPM process which orchestrates the services &amp;amp; manages the human tasks.  Drools handles the business logic and Smooks takes care of the XML to POJO transformation.  We even show a bit of the JBoss Tools project which has an jboss-esb.xml editor.&lt;br /&gt;&lt;br /&gt;2) &lt;a href="https://jboss.webex.com/jboss/lsr.php?AT=pb&amp;amp;SP=EC&amp;amp;rID=34078347&amp;amp;rKey=181B401FE67CA585"&gt;ESB 4.4 and SOA Platform 4.3 - Deep Dive Webinar&lt;/a&gt;&lt;br /&gt;(Oct 2 2008)&lt;br /&gt;This presentation focuses on what's new and cool in the latest versions of JBoss ESB and has live demonstrations of:&lt;br /&gt;- multi-language scripting: a service created via JRuby, Jython, Beanshell, and Groovy&lt;br /&gt;- an Excel spreadsheet for service business logic (decision tables from Drools)&lt;br /&gt;- a declarative model for Web Services &amp;amp; XSD validations, including Visual Basic.NET consumption&lt;br /&gt;- a declarative model for service security based on JAAS&lt;br /&gt;- JBoss Operations Network (JON) management &amp;amp; monitoring tools  which now available at: &lt;a href="http://www.jboss.org/jopr"&gt;http://www.jboss.org/jopr&lt;/a&gt;&lt;br /&gt;Note: Some of these demonstrations require the use of trunk in the JBoss ESB SVN.&lt;br /&gt;&lt;br /&gt;3) &lt;a href="https://www.redhat.com/apps/webform.html?event_type=simple_form&amp;amp;eid=1361"&gt;ESB 4.2 &amp;amp; SOA Platform 4.2 - Deep Dive Webinar&lt;/a&gt;&lt;br /&gt;(Apr 17 2008)&lt;br /&gt;SOA: Serivce Oriented Agility - this session introduces the IT challenges that SOA and an ESB address and focuses on the demonstration of how jBPM, Drools &amp;amp; JBoss ESB can be used synergistically to create a service oriented and agile solution.  The demonstration portion is same as above, however, there is valuable content in the general presentation and Q&amp;amp;A session.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-1680503599016518140?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/1680503599016518140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=1680503599016518140' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/1680503599016518140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/1680503599016518140'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/10/evaluating-getting-started-with-jboss.html' title='Evaluating &amp; Getting Started with JBoss ESB'/><author><name>Burr Sutter</name><uri>http://www.blogger.com/profile/10931204415287849441</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_vCciYs1hHLM/SKuZnQZ2SII/AAAAAAAAAAQ/_aJq9JSd61Y/S220/Burr1.JPG'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-2384460972978638094</id><published>2008-09-24T03:54:00.000-07:00</published><updated>2008-09-24T03:56:32.209-07:00</updated><title type='text'>JBossESB customer visit</title><content type='html'>I've been spending a fair bit of time recently talking with and visiting customers. Last week it was Amsterdam where we had a really good couple of days. &lt;a href="http://www.schabell.org/2008/09/jboss-technical-development-manager.html"&gt;It was fun and informative to meet everyone&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-2384460972978638094?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/2384460972978638094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=2384460972978638094' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/2384460972978638094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/2384460972978638094'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/09/jbossesb-customer-visit.html' title='JBossESB customer visit'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-1486679648639072238</id><published>2008-08-11T06:52:00.000-07:00</published><updated>2008-08-11T06:56:22.705-07:00</updated><title type='text'>Zero-code Web Services addition</title><content type='html'>We've had Web Services support in JBossESB for a long time (relative to the age of the project), but it has often required users to code more than they may have liked. Well in recent months we've been working more and more with &lt;a href="http://www.javalinux.it/wordpress/?p=26"&gt;Stefano Maestri of the wise project&lt;/a&gt; to improve things. Stefano has just &lt;a href="http://www.javalinux.it/wordpress/?p=82"&gt;posted a blog entry on where things now stand with the latest ESB 4.4 release&lt;/a&gt;. Well worth taking a look at the posting as well as the ESB!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-1486679648639072238?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/1486679648639072238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=1486679648639072238' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/1486679648639072238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/1486679648639072238'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/08/zero-code-web-services-addition.html' title='Zero-code Web Services addition'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-3080824773964446050</id><published>2008-08-11T04:15:00.000-07:00</published><updated>2008-08-11T04:17:52.985-07:00</updated><title type='text'>JBossESB wins InfoWorld Bossie award</title><content type='html'>It's always nice to get recognition from others in the industry and particularly from &lt;a href="http://www.infoworld.com/"&gt;InfoWorld&lt;/a&gt;. So &lt;a href="http://weblog.infoworld.com/tcdaily/archives/2008/08/best_of_open_so_4.html"&gt;congratulations to everyone involved in the ESB and SOA Platform efforts&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-3080824773964446050?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/3080824773964446050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=3080824773964446050' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3080824773964446050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3080824773964446050'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/08/jbossesb-wins-infoworld-bossie-award.html' title='JBossESB wins InfoWorld Bossie award'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-3970519491907436403</id><published>2008-07-07T06:19:00.000-07:00</published><updated>2008-07-07T06:24:23.778-07:00</updated><title type='text'>Smooks released as one of the "Open-Source-Tools" in JavaMagazine</title><content type='html'>Not sure how "big" this German magazine is, but anyway... their latest edition includes &lt;a href="http://milyn.codehaus.org/Smooks"&gt;Smooks&lt;/a&gt; as one of the distributed "Open-Source-Tools".  &lt;a href="http://it-republik.de/jaxenter/java-magazin-ausgaben/Google-Android-000262.html"&gt;See article ("Leser-CD" tab)&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-3970519491907436403?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/3970519491907436403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=3970519491907436403' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3970519491907436403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3970519491907436403'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/07/smooks-released-as-one-of-open-source.html' title='Smooks released as one of the &quot;Open-Source-Tools&quot; in JavaMagazine'/><author><name>Tom Fennelly</name><uri>http://www.blogger.com/profile/14161465872732273475</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-1635814821055029907</id><published>2008-06-21T07:02:00.000-07:00</published><updated>2008-06-22T00:34:18.903-07:00</updated><title type='text'>Writing Integration Tests with the AbstractTestRunner</title><content type='html'>Writing integration tests around your ESB Services can be a bit of a pain in the head under the current 4.x codebase (5.0 will be fixing many of these issues).  A number of resources are managed statically.  This is "OK" under normal running conditions, but a major head wrecker when trying to write multiple isolatable tests i.e. tests where you can easily dump/create clean environments for each test, without one test magically screwing with another.&lt;br /&gt;&lt;br /&gt;A while ago I created the ESBConfigUtil test utility class (dumb name), which went some way towards making it a little easier to write tests, but was still a bit painfull.  The latest addition is the AbstractTestRunner class, which I think is a bit better again.  It wraps the ESBConfigUtil class, setting up the test env (ESB deployment, Registry, ESB properties ala the beloved PropertyManager), starting the ESB Controller, running the test and then shutting down the Controller and ensuring that the test env is returned to it's state from before the test run (or at least tries to ;-) ), which hopefully helps to avoid leakage between tests.&lt;br /&gt;&lt;br /&gt;The AbstractTestRunner tries to allow you to write Integration level tests more easily.  You can define a full ESB configuration and run it through the ESB Controller class, run tests (invoke endpoints etc).&lt;br /&gt;&lt;br /&gt;As an example from the InVM transport tests, we have the following ESB configuration named "in-listener-config-01.xml":&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;?xml version = "1.0" encoding = "UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;jbossesb xmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd"&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;services&amp;gt;&lt;br /&gt;      &amp;lt;service category="ServiceCat" name="ServiceName"&lt;br /&gt;             description="Test Service"&amp;gt;&lt;br /&gt;          &amp;lt;actions mep="RequestResponse"&amp;gt;&lt;br /&gt;              &amp;lt;action name="action"&lt;br /&gt;                class="org.jboss.soa.esb.mock.MockAction" /&amp;gt;&lt;br /&gt;          &amp;lt;/actions&amp;gt;&lt;br /&gt;      &amp;lt;/service&amp;gt;&lt;br /&gt;  &amp;lt;/services&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/jbossesb&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Writing some test code around this, with the configuration deployed in the ESB Controller (quite near to the full running env):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public void test_async() throws Exception {&lt;br /&gt;  AbstractTestRunner testRunner = new AbstractTestRunner() {&lt;br /&gt;      public void test() throws Exception {&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;            ServiceInvoker invoker =&lt;br /&gt;            new ServiceInvoker("ServiceCat", "ServiceName");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;            Message message = MessageFactory.getInstance().getMessage();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;            message.getBody().add("Hi there!");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;            invoker.deliverAsync(message);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;            sleep(50);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;            assertTrue(message == MockAction.message);&lt;/span&gt;&lt;br /&gt;      }&lt;br /&gt;  }.setServiceConfig("in-listener-config-01.xml");&lt;br /&gt;&lt;br /&gt;  testRunner.run();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;So as you can see, the test method creates an anonymous instance of the AbstractTestRunner class.  It implements the "test" method, in which the actual test code is placed.  The Service config file is set on the anonymous instance through the setServiceConfig method (the String param version of this method looks up the resource using getClass().getResourceAsStream()).  The ESB properties file can be set through the setEsbProperties method (supports the same mechanisms as the setServiceConfig method).  Both setServiceConfig and setEsbProperties methods return the instance of the anonymous inner class (i.e. "return this;"), so you can string the config calls together e.g.:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public void test_async() throws Exception {&lt;br /&gt;  AbstractTestRunner testRunner = new AbstractTestRunner() {&lt;br /&gt;      public void test() throws Exception {&lt;br /&gt;          .... test code....&lt;br /&gt;      }&lt;br /&gt;  }&lt;span style="color: rgb(255, 0, 0); font-style: italic;"&gt;.setEsbProperties("jbossesb-properties.xml")&lt;br /&gt;   .setServiceConfig("jboss-esb.xml");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  testRunner.run();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Of course, you need to call the run() method to run the actual test code.    You can do this as above, or you can just string it onto the end of the anonymous inner class:&lt;br /&gt;&lt;pre&gt;public void test_async() throws Exception {&lt;br /&gt;  AbstractTestRunner testRunner = new AbstractTestRunner() {&lt;br /&gt;      public void test() throws Exception {&lt;br /&gt;          .... test code....&lt;br /&gt;      }&lt;br /&gt;  }.setServiceConfig("jboss-esb.xml")&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;.run()&lt;/span&gt;;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Calling the run() method:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Parses the Service configuration, creating the Controller instance.&lt;/li&gt;&lt;li&gt;Installs the specified ESB properties (recording the currently installed properties)&lt;/li&gt;&lt;li&gt;Installs and configures the Registry.&lt;/li&gt;&lt;li&gt;Starts the Controller&lt;/li&gt;&lt;li&gt;Calls the "test()" method to run the test code.&lt;/li&gt;&lt;li&gt;Stops the Controller&lt;/li&gt;&lt;li&gt;Uninstalls the Registry.&lt;/li&gt;&lt;li&gt;Resets the ESB properties to their pre-test state.&lt;/li&gt;&lt;/ol&gt;You may ask why I didn't just implement a base TestCase class.  Well... it just ends up getting in the way when you're trying to write your own test code.  You end up having to be contious of what you're inheriting, making sure you call super.xxx() at the appropriate times etc.  You end up not being able to extend another TestCase base impl (if you need to do that).  Basically, as a solution it sucks for many of the same reasons that other inheritance based solutions suck!&lt;br /&gt;&lt;br /&gt;Would be great if people could try it in their tests so we can evolve it and fix any issues.  I hope it can make integration testing a bit easier in the 4.x codebase.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-1635814821055029907?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/1635814821055029907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=1635814821055029907' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/1635814821055029907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/1635814821055029907'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/06/writing-integration-tests-with.html' title='Writing Integration Tests with the AbstractTestRunner'/><author><name>Tom Fennelly</name><uri>http://www.blogger.com/profile/14161465872732273475</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-2402888118837868307</id><published>2008-06-18T07:25:00.000-07:00</published><updated>2008-06-18T07:50:17.203-07:00</updated><title type='text'>Complex Splitting, Enriching and Routing of Huge Messages</title><content type='html'>ESB Administrators sometimes have a requirement to &lt;span style="font-weight: bold;"&gt;split&lt;/span&gt; message payloads into smaller messages for routing to one or more Service Endpoints (based on content: &lt;span style="font-weight: bold;"&gt;Content Based Routing&lt;/span&gt;).  Add Endpoint based &lt;span style="font-weight: bold;"&gt;Transformation&lt;/span&gt;, Message &lt;span style="font-weight: bold;"&gt;Enrichment&lt;/span&gt; and the fact that these messages can be &lt;span style="font-weight: bold;"&gt;Huge&lt;/span&gt; in size (GBs)... you end up with some interesting problems that need solving!&lt;br /&gt;&lt;br /&gt;I've just added a new Quickstart to the 4.4 codebase that demonstrates one approach (set of approaches) to solving some of these issues with JBossESB.  &lt;a style="font-weight: bold;" href="http://milyn.codehaus.org/jbossesb/huge-split-route-qs/README.html"&gt;I uploaded the readme&lt;/a&gt;, so people can read the details (as well as &lt;a style="font-weight: bold;" href="http://milyn.codehaus.org/jbossesb/huge-split-route-qs/flash/huge-splitting-routing.html"&gt;look at the flash demo&lt;/a&gt;) without going to too much trouble.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-2402888118837868307?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/2402888118837868307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=2402888118837868307' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/2402888118837868307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/2402888118837868307'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/06/complex-splitting-enriching-and-routing.html' title='Complex Splitting, Enriching and Routing of Huge Messages'/><author><name>Tom Fennelly</name><uri>http://www.blogger.com/profile/14161465872732273475</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-6363215487968953978</id><published>2008-05-31T06:47:00.000-07:00</published><updated>2008-05-31T07:01:01.877-07:00</updated><title type='text'>JBossESB 4.3 is released</title><content type='html'>In case you hadn't noticed, &lt;a href="http://labs.jboss.com/jbossesb"&gt;the team&lt;/a&gt; &lt;a href="http://www.jboss.com/index.html?module=bb&amp;op=viewtopic&amp;t=136039"&gt;released JBossESB 4.3&lt;/a&gt;. This is the first community release since the &lt;a href="http://www.redhat.com/about/news/prarchive/2008/jboss_soa.html"&gt;SOA Platform came out&lt;/a&gt; and contains many of the great features available there, including InVM transport, Smooks 1.0 support, more BPM specific quickstarts, performance improvements, support for the SOA Software registry as a replacement for jUDDI and many many more. But most of all this version has had much more stress testing applied to it. So if you're using an earlier version of JBossESB then we recommend you give this release a try!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-6363215487968953978?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/6363215487968953978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=6363215487968953978' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/6363215487968953978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/6363215487968953978'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/05/jbossesb-43-is-released.html' title='JBossESB 4.3 is released'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-4442473337894736068</id><published>2008-05-14T08:08:00.000-07:00</published><updated>2008-05-14T08:09:06.880-07:00</updated><title type='text'>More CDL work</title><content type='html'>&lt;a href="http://www.jboss.com/index.html?module=bb&amp;op=viewtopic&amp;p=4150721#4150721"&gt;We've been making progress&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-4442473337894736068?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/4442473337894736068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=4442473337894736068' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4442473337894736068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4442473337894736068'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/05/more-cdl-work.html' title='More CDL work'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-7271913609493385537</id><published>2008-05-05T07:30:00.000-07:00</published><updated>2008-05-05T07:59:19.464-07:00</updated><title type='text'>Come meet us at JavaOne</title><content type='html'>As well as having a presence in the Pavilion, we're presenting at a couple of sessions this year. The first is a &lt;a href="https://www28.cplan.com/cc191/sessions_catalog.jsp?ilc=191-1&amp;ilg=english&amp;isort=&amp;isort_type=&amp;is=yes&amp;icriteria1=26861&amp;icriteria2=+&amp;icriteria9=&amp;icriteria8=&amp;icriteria3=Chappell"&gt;panel session around SCA/OpenCSA standardisation efforts&lt;/a&gt; and the second is a &lt;a href="https://www28.cplan.com/cc191/sessions_catalog.jsp?ilc=191-1&amp;ilg=english&amp;isort=&amp;isort_type=&amp;is=yes&amp;icriteria1=26861&amp;icriteria2=+&amp;icriteria9=&amp;icriteria8=&amp;icriteria3=Conner"&gt;BOF on OSGi and SOA&lt;/a&gt; (very relevant to our ESB 5.0 architecture). If you're around and just want to say 'hi', come on over.&lt;br /&gt;&lt;br /&gt;Something I forgot to mention earlier, but we were also represented on the &lt;a href="http://java.sun.com/javaone/sf/program_committee.jsp"&gt;Program Committee for JavaOne&lt;/a&gt; this year: a interesting experience and definitely something to repeat if possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-7271913609493385537?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/7271913609493385537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=7271913609493385537' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/7271913609493385537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/7271913609493385537'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/05/come-meet-us-at-javaone.html' title='Come meet us at JavaOne'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-5970188962470768345</id><published>2008-04-12T03:11:00.000-07:00</published><updated>2008-04-12T03:17:38.840-07:00</updated><title type='text'>Smooks improvements and futures</title><content type='html'>If you're a &lt;a href="http://labs.jboss.com/jbossesb"&gt;JBossESB&lt;/a&gt; user then you've probably used &lt;a href="http://milyn.codehaus.org/Smooks+Comparisons"&gt;Smooks&lt;/a&gt;, which is our default transformation engine. Unlike other ESBs that may only give you XSLT based transformations (perhaps as an afterthought to their architecture), Smooks provides much more than this, and transformation has been at the heart of our architecture since the start. Anyway, Mr Smooks (aka &lt;a href="http://www.jboss.org/jbossesb/team.html"&gt;Tom&lt;/a&gt;) has been &lt;a href="http://www.jboss.org/file-access/default/members/jbossesb/freezone/resources/presentations/Smooks_JBoss_R&amp;D.pdf"&gt;describing the future for Smooks and within our ESB&lt;/a&gt;. Definitely worth a read. It's nice to see that &lt;a href="http://apache-synapse.blogspot.com/2008/03/apache-synapse-wso2-esb-community-site.html"&gt;others&lt;/a&gt; are getting in on the act. What's that they say about imitation and flattery ;-)?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-5970188962470768345?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/5970188962470768345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=5970188962470768345' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/5970188962470768345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/5970188962470768345'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/04/smooks-improvements-and-futures.html' title='Smooks improvements and futures'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-1568487655334829716</id><published>2008-04-11T06:26:00.000-07:00</published><updated>2008-04-11T07:00:28.124-07:00</updated><title type='text'>Cloud Computing and the ESB</title><content type='html'>Whether you call it &lt;a href="http://en.wikipedia.org/wiki/Cloud_computing"&gt;Cloud Computing&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Grid_computing"&gt;Grid&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Utility_computing"&gt;utility computing&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Ubiquitous_computing"&gt;ubiquitous computing&lt;/a&gt;, or just &lt;a href="http://citeseer.ist.psu.edu/panzieri94view.html"&gt;large scale distributed systems&lt;/a&gt;, computing devices are everywhere. These days I have a mobile phone that is more powerful (processor and memory) than the laptop I had 10 years ago. I suspect my fridge is more powerful than my old &lt;a href="http://en.wikipedia.org/wiki/BBC_Micro"&gt;BBC Model B computer&lt;/a&gt;! Having spent a lot of time &lt;a href="http://markclittle.blogspot.com/2007/12/rest-soap-ws-and-soa-oh-my.html"&gt;working in large-scale distributed systems&lt;/a&gt;, the basic requirements are pretty similar: develop objects/services, publish, locate and use. Doing this in a transport agnostic manner is very important as well: how many services running on a mobile phone support JMS? But as a service developer do I really need to tie my service to a specific transport? That breaks reusability: the service logic (excluding transport) should be useable in a variety of different deployments, assuming its dependencies on 3rd party bindings are present (e.g., no good deploying a service on a mobile phone if it needs a local Oracle instance to execute!)&lt;br /&gt;&lt;br /&gt;What you need to support cloud computing (for want of a better term) is an infrastructure that allows you to develop your services without having to worry about where they will be deployed. Furthermore, if you can compose services from other services and (re-)deploy them dynamically as your requirements change, that would be a benefit. Many service deployments need to change over time, if for no other reason than machines may fail or performance improvements mean that you want to move a service from one machine to another. Or you may need to &lt;a href="http://citeseer.ist.psu.edu/little94replica.html"&gt;deploy more (or less) service instances over time to improve availability&lt;/a&gt;. Interestingly some of this &lt;a href="http://labs.jboss.com/soag"&gt;overlaps with governance&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You also need to be able to cope with dynamic routing (service locations change and you want to route inflight messages or messages sent to the old address, to the new location). Transformations of data are pretty important too: sending Gigabytes of data to my services that has been deployed on the mobile phone might get a bit costly, but maybe my infrastructure can prune that information while it is inflight and only send a synopsis (or some portion of it that is sufficient for the service do do meaningful work).&lt;br /&gt;&lt;br /&gt;Ultimately the service deployments and how they are related to the devices that are available to the infrastructure should be handled automatically by the infrastructure, with the capability to override this or provide hints as to more appropriate deployment choices (e.g., "please don't deploy this service on a mobile phone!") The infrastructure then becomes responsible for managing those services, guaranteeing specific &lt;a href="http://en.wikipedia.org/wiki/Service_level_agreement"&gt;SLAs&lt;/a&gt; (so it may mean migrating a service from one device to another, for example, to maintain a level of performance or availability), pulling in more devices or distributing more instances of the service across multiple devices, again to maintain &lt;a href="http://www.w3.org/2002/ws/policy/"&gt;policies and SLAs&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Overall the infrastructure and the way it supports development of services assists in the realisation of loosely coupled, non-brittle applications. By this point you may see where I'm going with this. In my opinion a good infrastructure for cloud computing is also a good infrastructure for &lt;a href="http://en.wikipedia.org/wiki/Service-oriented_architecture"&gt;SOA&lt;/a&gt;, i.e., an &lt;a href="http://en.wikipedia.org/wiki/Service_Oriented_Infrastructure"&gt;SOI&lt;/a&gt;. In our case, that would be &lt;a href="http://labs.jboss.com/jbossesb"&gt;JBossESB&lt;/a&gt; as it continues to evolve and improve. Stay tuned!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-1568487655334829716?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/1568487655334829716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=1568487655334829716' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/1568487655334829716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/1568487655334829716'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/04/cloud-computing-and-esb.html' title='Cloud Computing and the ESB'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-3177128915858315201</id><published>2008-02-19T07:10:00.000-08:00</published><updated>2008-02-19T07:18:01.266-08:00</updated><title type='text'>JBossWorld 2008 update</title><content type='html'>Lots of activity at &lt;a href="http://www.jbossworld.com/"&gt;JBossWorld 2008&lt;/a&gt;! As you can find elsewhere, this was the biggest JBW ever and all of the presentations I attended were packed. The ESB/SOA Platform related presentations will be uploaded soon and we'll cross post links here as soon as possible. But in the meantime you may be interested in &lt;a href="http://www.press.redhat.com/2008/02/14/the-jboss-soa-platform-has-arrived/#more-250"&gt;another announcement about the SOA Platform&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-3177128915858315201?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/3177128915858315201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=3177128915858315201' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3177128915858315201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3177128915858315201'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/02/jbossworld-2008-update.html' title='JBossWorld 2008 update'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-4883261998249010733</id><published>2008-02-15T06:58:00.000-08:00</published><updated>2008-02-15T07:05:48.802-08:00</updated><title type='text'>SOA-P now available</title><content type='html'>Yesterday at &lt;a href="http://www.jbossworld.com/"&gt;JBoss World&lt;/a&gt; the &lt;a href="http://www.jboss.com/resources/soa?intcmp=1004"&gt;availability of the JBoss Enterprise SOA Platform&lt;/a&gt; was officially announced. I don't know how long this webcast is going to be available but a recording can be found &lt;a href="http://www-waa-akam.thomson-webcast.net/us/dispatching/?event_id=bdf49869b3f3f1f7a5725b5f7560279c&amp;amp;portal_id=af9b227bf07c733390c2738ee0330646"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-4883261998249010733?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/4883261998249010733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=4883261998249010733' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4883261998249010733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4883261998249010733'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/02/soa-p-now-available.html' title='SOA-P now available'/><author><name>Kurt Stam</name><uri>http://www.blogger.com/profile/07418191492358888029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://3.bp.blogspot.com/_fAUX2tnEInU/SoGKASmOx3I/AAAAAAAAAGE/HGxLbl1Doro/S220/kurtstam.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-1418296604200005338</id><published>2008-02-03T13:36:00.000-08:00</published><updated>2008-02-03T13:37:43.828-08:00</updated><title type='text'>SOA Patterns Announcement</title><content type='html'>We just &lt;a href="http://www.press.redhat.com/2008/01/30/red-hat-supports-international-soa-patterns-project/"&gt;announced the patterns work&lt;/a&gt;. Definitely worth a look.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-1418296604200005338?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/1418296604200005338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=1418296604200005338' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/1418296604200005338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/1418296604200005338'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/02/soa-patterns-announcement.html' title='SOA Patterns Announcement'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-3498224557923151651</id><published>2008-01-29T20:26:00.000-08:00</published><updated>2008-01-29T20:50:39.813-08:00</updated><title type='text'>SOA + BPM = Killer Combination</title><content type='html'>&lt;a href="http://jbossesb.blogspot.com/2008/01/service-orchestration-using-jbpm.html"&gt;Kurt's recent posting&lt;/a&gt; prompted me to put down here what I've been putting off for a while: my thoughts on BPM and SOA. Hopefully it's apparent to everyone that BPM != SOA: they solve different problems. However, that does not mean they cannot compliment each other. The &lt;a href="http://jbossesb.blogspot.com/2008/01/service-orchestration-using-jbpm.html"&gt;recent work on combining jBPM with JBossESB&lt;/a&gt; should illustrate that, but let's go further.&lt;br /&gt;&lt;br /&gt;One of the key aspects of SOA is about agility: the ability to react more quickly to changes in the way IT systems need to be deployed and used, as well as being able to leverage existing IT investments. At this level agility is something that is definitely a concern of T-Shirt And Sandle Man, i.e., IT folks and not Men In Suits, i.e., business folks, which is primarily where BPM resides. Where BPM works well is in ensuring that business goals and efficiently aligned with how they are translated into processes, making those processes more reliable, faster and compliant with the businesses policies and practices. Fairly obviously, for business folks, these are just as important as IT agility.&lt;br /&gt;&lt;br /&gt;SOA and BPM do not compete with one another: they are natural compliments. A good combination of SOI (Service Oriented Infrastructure) and BPM will make it natural to orchestrate services (or more likely &lt;i&gt;tasks&lt;/i&gt;) as second nature within the deployment and not as some bolt-on which is there simply for compliance reasons. I think the combination of SOA and BPM is a "killer app" because:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;br /&gt;BPM promotes a model-based approach to task definitions, which, if used right, should ensure that what the business wants is what they get. Importantly it's defined by the business folks and not by the infrastructure. It encourages a top-down approach to service orchestration and requirements: you don't develop what you don't need. I know this sounds pretty obvious, but you'd be surprised!&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://jbossesb.blogspot.com/2008/01/tooling-and-governance.html"&gt;BPM and tooling are natural allies, as they are with SOA&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Remember that SOA is not a product: it does not come in a shrink-wrapped box. So you shouldn't think that it is simply &lt;a href="http://labs.jboss.com/jbossesb"&gt;an ESB&lt;/a&gt; or some other technology. &lt;i&gt;It is not purely a technology driven initiative&lt;/i&gt;. A good SOI will allow the right people in an organisation to take ownership of the components (technology and business) that are important to them. This is one of the reasons why loosely coupled systems work. SOA does not belong to a single group of people (e.g., the typical developer), but to the business as a whole. That's why SOA+BPM work so well together: it is a natural fit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-3498224557923151651?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/3498224557923151651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=3498224557923151651' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3498224557923151651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3498224557923151651'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/01/soa-bpm-killer-combination.html' title='SOA + BPM = Killer Combination'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-8352462579007497587</id><published>2008-01-25T14:43:00.000-08:00</published><updated>2008-01-29T06:23:53.180-08:00</updated><title type='text'>Service Orchestration using jBPM</title><content type='html'>Service Orchestration is the arrangement of business processes. Traditionally BPEL is used to execute SOAP based WebServices, and in the Guide 'Service Orchestration' you can obtain more details on how to use ActiveBPEL with JBossESB. However, if you want to orchestrate JBossESB services regardless of their end point type, then it makes more sense to use jBPM. Figure 1 shows an order process in jBPM Designer view which is part of &lt;a href="http://www.jboss.com/products/devstudio"&gt;JBoss Developer Studio&lt;/a&gt;. In this post we will describe what it takes for you to start using jBPM for Service Orchestration.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_fAUX2tnEInU/R54QveDre7I/AAAAAAAAABI/GuL81Dm7Gt8/s1600-h/service-orchestration.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_fAUX2tnEInU/R54QveDre7I/AAAAAAAAABI/GuL81Dm7Gt8/s320/service-orchestration.jpg" alt="" id="BLOGGER_PHOTO_ID_5160580630721559474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Figure 1. 'OrderProcess' Service Orchestration using jBPM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1. Create the Process Definition&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To create the process definition from Figure 1 you drag in components from the left menu bar. To start you'd drag in a Start node, followed by a regular 'node' type, which we gave the name 'Intake Order'. You can now connect the two boxes by selecting a 'transition', and by first clicking on the start node and then on the Intake Order node. Next we need to tell jBPM which JBossESB service backs this node. This is done by attaching a special 'EsbActionHandler' action to the node and configuring it to go out to the service 'InTakeService'. For now you will need to click on the 'source' tab to drop into the XML representation of this node (see Figure 2).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_fAUX2tnEInU/R54fGODre8I/AAAAAAAAABQ/09Y-m05pjAM/s1600-h/jbpm-jbossesb-source.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_fAUX2tnEInU/R54fGODre8I/AAAAAAAAABQ/09Y-m05pjAM/s320/jbpm-jbossesb-source.jpg" alt="" id="BLOGGER_PHOTO_ID_5160596414726372290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Figure 2. XML Source of the 'OrderProcess' Service Orchestration&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In this case the configuration for the Intake Order the XML looks like&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://www.osconsulting.org/code-fragments/jbpm-jbossesb-node.html" class="source_code" style="width: 100%; height: 60em;" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;The first two subelements esbServiceName and esbCategoryName specifiy the name of the service, where the other two elements: bpmToEsbVars and EsbtoBpmVars specify which variables should be carried from jBPM to the ESB Message and back respectively. Koen Aers has been working on a special &lt;a href="http://koentsje.blogspot.com/2008/01/esb-service-node-in-jbpm-jpdl-gpd-312.html"&gt;EsbServiceNode&lt;/a&gt; so all the configuration can be done in design view.&lt;br /&gt;&lt;br /&gt;Creation of the rest of the process definition goes in a similar fashion, ending with an 'End' node, which when reached will terminate the process.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2. Deployment&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;JBossESB deploys the jBPM core engine in a jbpm.esb archive. This jbpm.esb archive contains the jBPM core engine as well as the configuration and the jbpm-console. To deploy the process click on the 'deployment' tab in the IDE, selecting the files you wish to deploy and clicking on the 'Deploy Process Archive' button.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_fAUX2tnEInU/R54gwODre9I/AAAAAAAAABY/HwZYR5e5V1o/s1600-h/jbpm-jbossesb-deployment.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_fAUX2tnEInU/R54gwODre9I/AAAAAAAAABY/HwZYR5e5V1o/s320/jbpm-jbossesb-deployment.jpg" alt="" id="BLOGGER_PHOTO_ID_5160598235792505810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Figure 3. Deployment of the 'OrderProcess' Service Orchestration&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Besides deploying the process definition we also need to deploy the services themselves. Your services are deployed in a yourservices.esb archive. For deployment order you need to specify a depends 'jboss.esb:deployment=jbpm.esb' in the &lt;a href="http://anonsvn.labs.jboss.com/labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/samples/quickstarts/bpm_orchestration4/deployment.xml"&gt;deployment.xml&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Note that deployment of process definitions and esb archives is hot and does not require a server restart.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 3. Starting and Running the process&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There a multiple ways to start an instance of the process that was deployed in step 2. For instance you can start one from your own code, the jbpm-console, but perhaps the easiest way is to start on using an out-of-the-box service. For instance when your store front receives the order you can create an EsbMessage with the invoice and drop it on the 'StartProcess' service.&lt;br /&gt;You can define a StartProcess service (one for each process definition) in the jboss-esb.xml in yourservices.esb. For instance it can look like&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://www.osconsulting.org/code-fragments/jbpm-jbossesb-xml.html" class="source_code" style="width: 100%; height: 38em;" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;where we use the 'StartProcessInstanceCommand' to invoke a new process instance of the type 'OrderProcess' and with the invocation we insert a business key (invoice ID) and the invoice itself into the jBPM process instance context. Now when a message hits this service a new instance of the shipping process is created and we can look at its state using the jbpm-console (by default running on http://localhost:8080/jbpm-console)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_fAUX2tnEInU/R54q2uDre-I/AAAAAAAAABg/EppYHHpm43o/s1600-h/jbpm-console.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_fAUX2tnEInU/R54q2uDre-I/AAAAAAAAABg/EppYHHpm43o/s400/jbpm-console.jpg" alt="" id="BLOGGER_PHOTO_ID_5160609342577933282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Figure 4. State of an instance of the 'OrderProcess' Service Orchestration&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In Figure 4 the 'Review Order' process is highlighted because the process is waiting for a human to review the order. So here we now have integrated human work flow, see Figure 5!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_fAUX2tnEInU/R54sWeDre_I/AAAAAAAAABo/y2bpwirBATA/s1600-h/jbpm-human-workflow.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_fAUX2tnEInU/R54sWeDre_I/AAAAAAAAABo/y2bpwirBATA/s400/jbpm-human-workflow.jpg" alt="" id="BLOGGER_PHOTO_ID_5160610987550407666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Figure 5. 'Review Order' Human Work Flow Integration&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;We demonstrated that it is a three step process to use jBPM for Service Orchestration and how to integrate it with Human Work Flow. To get more details you can read the &lt;a href="http://anonsvn.labs.jboss.com/labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/docs/services/jBPMIntegrationGuide.pdf"&gt;jBPMIntegrationGuide&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Have fun,&lt;br /&gt;&lt;br /&gt;--Kurt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-8352462579007497587?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/8352462579007497587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=8352462579007497587' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/8352462579007497587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/8352462579007497587'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/01/service-orchestration-using-jbpm.html' title='Service Orchestration using jBPM'/><author><name>Kurt Stam</name><uri>http://www.blogger.com/profile/07418191492358888029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://3.bp.blogspot.com/_fAUX2tnEInU/SoGKASmOx3I/AAAAAAAAAGE/HGxLbl1Doro/S220/kurtstam.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_fAUX2tnEInU/R54QveDre7I/AAAAAAAAABI/GuL81Dm7Gt8/s72-c/service-orchestration.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-7078170652987103212</id><published>2008-01-18T01:16:00.000-08:00</published><updated>2008-01-18T01:17:26.358-08:00</updated><title type='text'>JBoss DNA</title><content type='html'>Related to &lt;a href="http://jbossesb.blogspot.com/2008/01/tooling-and-governance.html"&gt;our governance story&lt;/a&gt;, you should definitely take a look at the new &lt;a href="http://labs.jboss.com/dna"&gt;JBoss DNA project&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-7078170652987103212?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/7078170652987103212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=7078170652987103212' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/7078170652987103212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/7078170652987103212'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/01/jboss-dna.html' title='JBoss DNA'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-5066067037922823408</id><published>2008-01-17T03:39:00.000-08:00</published><updated>2008-01-17T06:28:20.630-08:00</updated><title type='text'>Tooling and governance</title><content type='html'>All good SOA platforms need a good SOA governance solution. Governance covers a number of factors and interacts at different levels of the SOA architecture. For example, there are tooling requirements (displaying the important information, customizing the view on the data, etc.) and infrastructure support (for enforcing SLAs, checking when they are [about to be] violated, etc.) The best governance implementations will perform well across these levels. However, you shouldn't be persuaded just by the gloss of a governance solution: &lt;a href="http://www.goenglish.com/1601.asp"&gt;don't judge a book by its cover&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So far we've been concentrating on the low-level infrastructure support for governance, both with &lt;a href="http://www.jboss.com/products/jbosson"&gt;JON&lt;/a&gt; and more native support within the ESB and other projects. Plus, &lt;a href="http://labs.jboss.com/file-access/default/members/jbossesb/freezone/resources/project/JBossESBArchitecture.pdf"&gt;from the start&lt;/a&gt; we've made the &lt;a href="labs.jboss.com/jbossesb/docs/ 4.2GA/manuals/html/services/Registry.html"&gt;registry (UDDI in our case)&lt;/a&gt; a central component &lt;a href="http://labs.jboss.com/jbossesb/"&gt;within the ESB&lt;/a&gt;. Plus, the &lt;a href="http://labs.jboss.com/drools/"&gt;Drools team&lt;/a&gt; have been making waves with their &lt;a href="http://blog.athico.com/2007/10/drools-brms-version-two-design-and.html"&gt;BRMS implementation&lt;/a&gt;, which is important in governance too. And of course there's the tried and tested &lt;a href="http://docs.jboss.com/jbpm/v3/gpd/installation.html"&gt;jBPM Graphical Process Designer&lt;/a&gt; (not directly related to governance, but definitely to tooling) and our friends from &lt;a href="http://www.redhat.com/metamatrix/"&gt;MetaMatrix&lt;/a&gt;. However, what we haven't been able to do until now is discuss where we are going (both with in-house development as well as with partners).&lt;br /&gt;&lt;br /&gt;As well as tools from the individual projects within the SOA Platform, here is a brief synopsis of  architectural requirements on SOA-P specific tooling and governance. I don't want to go into details about how these tools (and the necessary supporting infrastructure) are implemented. Depending upon the role of the user or component (more in another posting) it makes more sense for some of them to be Eclipse based, whereas others will be Web console based. There will be some tools that ideally would have representations in both arenas. It's important to realise that some of the capabilities I'm going to mention will have to be duplicated across different tooling environments. For instance, sometimes what a sys admin needs to do is also what a developer needs to do (e.g., inspect a service contract). We won't require the sys admin to have to fire up the developer tool in order to do that. And vice versa.&lt;br /&gt;&lt;br /&gt;Governance of SOA infrastructures is critically important. If any of you have tried to manage distributed systems in a local area before, you'll understand how difficult that can often be. Imagine expanding that so it covers different business domains where you (the developer or deployer) do not control all of the underlying infrastructure and cannot work on the assumption that people are trustworthy. With SOA governance, there is a runtime component that executes to ensure things like SLAs are maintained, but there is also a tooling component (runtime for management and design time).&lt;br /&gt;&lt;br /&gt;With the JBoss governance/tooling effort, you'll be able to graphically display:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;br /&gt;MTTF/MTTR information on behalf of specific nodes and services on those nodes. Also for all nodes and services that are deployed.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;throughput for services.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;time taken to process specific types of messages (e.g., how long to do transformations, how long to do transformations on behalf of user X).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;number of requests services during the lifetime of the service/node (in general, it is always important to distinguish between services and the nodes on which they execute).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;number of faults (service/node) in a given duration.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;information about where messages are being received.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;information about where messages are being sent (responses as well as faults).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;potential dependency tracking data. This can be used to determine sources of common failure. &lt;a href="http://ieeexplore.ieee.org/Xplore/login.jsp?url=/iel2/944/7202/00289936.pdf?tp=&amp;isnumber=&amp;arnumber=289936"&gt;Can also be used when deciding whether or not (and where) to migrate services, for improved availability or performance&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;what versions of services exist within a specific process (VM).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Includes sending probe messages that can test availability and performance on request. However, this functionality needs to be duplicated into the design-time tooling.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Note, you can do some of this with the current releases!&lt;br /&gt;&lt;br /&gt;All of this information may be obtained periodically from a central (though more realistically a federated) data store or direct from the services themselves. However, both sys admins and developers (more of them later) will need to be able to connect to services (and composites) and inspect their governance criteria, e.g., when was the last time they violated a contract, why and under what input messages/state, at will: the dynamic factor is incredibly important. This information needs to be made available across individual services as well as the entire SOA-P deployment.&lt;br /&gt;&lt;br /&gt;Going back to what I mentioned earlier about governance. We're working on a separate and dedicated governance console that is used to receive alarms/warnings when contracts/SLAs are violated or close to being violated. Obviously the console is only one such destination for these alerts: sys admin inboxes are just as important. However, that's where the infrastructure comes into play: remember that &lt;a href="http://labs.jboss.com/portal/jbossesb/resources/presentations/JBossESBoverview.pdf"&gt;JBossESB has a very flexible architecture&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Traditional management tooling (e.g., via JMX) would include:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;start/stop a service.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;suspend/resume a service.&lt;li&gt;&lt;br /&gt;&lt;li&gt; add/update restriction lists for services. This limits the list of receivers that a service considers valid and will process messages from. A similar list of destinations for responses will exist. This plays into the role/relationship concept because although a developer may not consider the issue of security (maybe can't, given that services could be deployed into environments that did not exist when the developer was building the service), the sys admin (or service container admin) will have to.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;migrate services (and potentially dependent services).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;inspect service contract.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;update service definition.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;attach and tune specific service parameters.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Design time tooling includes:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;defining the service definition/contract, which includes specifying what message types it allows. This is tied into the service implementation in order that the ESB infrastructure can verify incoming messages against this contract for validity. Part of the contract will also include security and role information which will define who can interact with the service (may be fine grained based on time of day, specific message type, etc.) Policies are attached at this level on a per service or per operation basis (if not defined on an operation basis, the service level policy is taken if defined).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;policy definition/construction, tracking and enforcement. Not just part of the development tool, but also an integral part of the underlying ESB infrastructure. Policies need to be shared so that other developers can utilise them in their own service construction. Typically these will be stored in the repository.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;service construction from other services, i.e., composite services. This has an input on SLA and on governance enforcement. In some cases a physical instance of the service may not exist either and the infrastructure becomes responsible for imposing the abstraction of a service by directing interactions accordingly.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;inspecting the registry and repository during design time to locate and inspect desired services for composition within applications. Also ties into runtime management so that the user can inspect all running services. This would also tie into our graphical process flow tool, by allowing a drag-and-drop approach to application construction.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;service development then into service deployment. The tool will allow the user to view a list of available nodes and processes. The availability, performance etc. of those nodes will also be displayed (more tooling and infrastructure support). Then you can drag a service implementation on to the node and deploy it, either dynamically or statically. This ties into the runtime management tool that allows the user to view deployed services on nodes (see previously).&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Service implementation tool:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;from the client perspective you go to the registry and select the right service based on requirements (functional as well as non-functional). The associated contract defines the message format, as mentioned earlier. The tool will either auto-generate an appropriate stub for the client code or provide a way of tying state variables (from the application code, or incoming messages etc.) in to the outbound invocations on the service. Fairly obviously we cannot prevent developers from ignoring the design-time tools and coding their applications without that support, which is really where the need for stubs comes in. At the tooling level, we're really looking at defining client tasks that the developer writes and defines the output instance variables that are hooked into the service's input variables. As far as the client tool is concerned, we are simply tying together these variables. Under the cover, the tool generates the right set of service-specific messages. The ESB infrastructure sends and receives and dispatches accordingly. Capabilities such as security and transactions may be exposed to the client.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;from the service developer perspective, we are defining services as compositions of tasks, actions, dispatchers etc. In the graphical designer we specify the input variables that are required for each operation type (defined as specific messages). This also plays into the contract definition effort mentioned earlier, since the message formats accepted by a service are implicitly defined by the requirements on input state variables.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;there's a separate discussion to be had about the term "task". &lt;a href="http://csdl.computer.org/redirectDL.jsp?path=proceedings/edoc/2001/1345/00/13450082abs.htm"&gt;The OPENflow&lt;/a&gt; work that &lt;a href="http://www.cs.ncl.ac.uk/research/pubs/inproceedings/papers/150.pdf"&gt;originated within Arjuna&lt;/a&gt; can help here.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://jbossesb.blogspot.com/2008/01/making-soa-science-and-not-art.html"&gt;WS-CDL tooling&lt;/a&gt; here as well.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;the need to be able to deploy services into a virtual environment to allow it to be tested without affecting a running system. A service has to be able to be deployed in a test mode. What this means is that at a minimum the service is not available to arbitrary users. Test services should also not be deployed into a running process/container that is being used by other (non-test) services and applications in case they cause it to fail and, worst case scenario, take the entire process with them.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Some things that I have not had a chance to write up yet include roles and relationships between roles, and (related) security and ACLs. Task definitions (lots of notes on that). Diagrams illustrating the kinds of things I want to see. So expect more later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-5066067037922823408?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/5066067037922823408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=5066067037922823408' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/5066067037922823408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/5066067037922823408'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/01/tooling-and-governance.html' title='Tooling and governance'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-3362761961264260136</id><published>2008-01-14T01:44:00.001-08:00</published><updated>2008-01-14T01:44:49.641-08:00</updated><title type='text'>JBossESB in the press</title><content type='html'>&lt;a href="http://blogs.ittoolbox.com/eai/business/archives/open-source-and-commercial-soa-software-20973"&gt;This got lost&lt;/a&gt; in the end of year celebrations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-3362761961264260136?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/3362761961264260136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=3362761961264260136' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3362761961264260136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3362761961264260136'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/01/jbossesb-in-press.html' title='JBossESB in the press'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-7664161912271307401</id><published>2008-01-09T05:08:00.000-08:00</published><updated>2008-01-09T08:27:13.601-08:00</updated><title type='text'>Making SOA a science and not an art</title><content type='html'>Over 5 years ago, around the time &lt;a href="http://msdn.microsoft.com/msdnmag/issues/05/03/BPEL4WS/"&gt;BPEL4WS&lt;/a&gt; came out, &lt;a href="http://www.infoq.com/news/2007/11/wscomposition"&gt;WSCI was released&lt;/a&gt;. Because this was just at the peak of the IBM/MSFT versus everyone else wars the uneducated observer saw this as yet another attempt by Oracle et al to fight the beast. However, &lt;a href="http://schneider.blogspot.com/2007/01/hattrick-software-choreography.html"&gt;WSCI was a far different type of animal&lt;/a&gt;. It went to W3C under the guise of the WS-Choreography group and eventually &lt;a href="http://www.w3.org/TR/ws-cdl-10/"&gt;WS-CDL was born&lt;/a&gt;. WS-CDL is one of those standards that I've been observing from a far: I was involved at the periphery in the early years of &lt;a href="http://www.ibm.com/developerworks/webservices/library/ws-comproto/"&gt;WS-T&lt;/a&gt; and &lt;a href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=ws-caf"&gt;OASIS WS-CAF&lt;/a&gt;, because of the influence of transactions (and context), but apart from being on the mailing list I've had no further input. But WS-CDL is also one of the nicest, most powerful and most under-rated standards around. So although I've been watching from a far, I've also been waiting for the right moment to use its power in whatever way makes sense.&lt;br /&gt;&lt;br /&gt;In &lt;a href="http://www.arjuna.com"&gt;Arjuna&lt;/a&gt; there were limited opportunities for this. I tried with a few of our engagements, but the "Why do I want this when there's BPEL?" question kept coming up. As a result in some ways WS-CDL is also one of the most frustrating standards: you really want to shake the people who ask those questions and force them to read up on WS-CDL rather than believe the anti-publicity. I also wish that some of the bigger players involved in its development had done a lot more. Oh well, such is life in the standards world.&lt;br /&gt;&lt;br /&gt;However, once I joined &lt;a href="http://www.jboss.com"&gt;JBoss&lt;/a&gt; and was put in charge of the JBossESB development, things started to change. Here was a great opportunity! Here was a distributed system that was under development, would use Web Services and SOA at its heart, would be about large scale (size of participants and physical locality) and where you simply did not control all of the infrastructure over which applications ran.&lt;br /&gt;&lt;br /&gt;Now many people in our industry ignore formal methods or pay lip service to them, believing they are only of use to theoreticians. Unfortunately until that changes Computer Science will always be a "soft" science: more an art than anything. That's not a good thing because it limits efficiency. In a local application (everything on one machine) you can get away with cutting some corners. But in a distributed system, particularly one that needs to be fault tolerant, it's worse. For example, how do you prove the correctness of a system when you cannot reason about the ways in which the individual components (or services) will act given specific expected (or unexpected) stimuli? Put another way, how can you ensure that the system behaves as expected and continues to do so as it executes, especially if it has non-deterministic properties? As the complexity of your application increases, this problem approaches being NP-complete.&lt;br /&gt;&lt;br /&gt;Rather than just throwing together an "architecture" diagram and developing services in relative isolation, and trusting to luck (yes, that's often how these things are developed in the real world), we decided that something better had to exist for our customers. Now there are formal ways of doing this using PetriNets, for example. WS-CDL uses Pi-Calculus to help define the structure of your services and composite application; you can then define the flow of messages between them, building up a powerful way in which to reason effectively about the resultant. On paper the end result is something that can be shown to be provably correct. And this is not some static, developer-time process either. Because these "contracts" between services work in terms of messages and endpoints, you can (in theory) develop runtime monitoring that enhances your governance solution and is (again) provably correct: not only can you reason successfully about your distributed system when it is developed and deployed initially, but you can continue to do so as it executes. A good governance solution could tie into this and be triggered when the contract is violated, either warning users or preventing the system from making forward progress (always a good thing if a mission-critical environment is involved).&lt;br /&gt;&lt;br /&gt;Now this is complex stuff. It's not something I would like to have to develop from scratch. Fortunately for JBoss (now &lt;a href="http://www.redhat.com"&gt;Red Hat&lt;/a&gt;), there's a company that develops software that is based on WS-CDL: &lt;a href="http://www.hattricksoftware.com/"&gt;Hattrick Software&lt;/a&gt;, principle sponsors of the &lt;a href="http://www.pi4tech.org/tiki-index.php"&gt;Pi4 Technologies Foundation&lt;/a&gt;. Fortunately again, one of the key authors of the standard (my friend/colleague &lt;a href="http://www.hattricksoftware.com/team.html"&gt;Steve Ross-Talbot&lt;/a&gt;) is both CTO of Hattrick Software and Chair of the Pi4 Technologies Foundation. Steve has been &lt;a href="http://pi4tech.blogspot.com/2007/11/another-cdl-tool-suite-is-born.html"&gt;evangelizing WS-CDL&lt;/a&gt; for years, pushing hard against those doors that have "Closed: Using BPEL. Go Away." signs on them. We're starting to see the light as users see the deficiencies of BPEL (the term "Use the right tool for the right job" keeps coming to mind) and look for solutions. But it's been a long, slow process. But when like minds come together, sometimes "something wonderful" can happen. People at Hattrick have been working with us at Red Hat for several months, to integrate their product (which is open source and lets you develop scenarios to test out your deployments and then monitor them for correctness once they go live) with JBossESB and the SOA Platform. This work is almost complete and it will offer a significant advantage to both companies customers.&lt;br /&gt;&lt;br /&gt;I can't really go into enough detail here to show how good this combination is, but here are a few example images. The example scenario is a distributed auction, with participants including a seller and several buyers. With the WS-CDL tooling you can define your scenarios (the interactions between parties) like this &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-GaREVF19nE/R4TxAv79NQI/AAAAAAAAAAU/An5rdquNBBM/s1600-h/SOA-Blueprint-Modeller.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_-GaREVF19nE/R4TxAv79NQI/AAAAAAAAAAU/An5rdquNBBM/s320/SOA-Blueprint-Modeller.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5153508868788925698" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can then use the tool to define the roles and relationships for your application:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-GaREVF19nE/R4T1b_79NSI/AAAAAAAAAAk/h26UxCjZtV4/s1600-h/RolesRelationships.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_-GaREVF19nE/R4T1b_79NSI/AAAAAAAAAAk/h26UxCjZtV4/s400/RolesRelationships.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5153513734986872098" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And then you can dive down into very specific interactions such as credit checking:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-GaREVF19nE/R4TyQ_79NRI/AAAAAAAAAAc/qhH9CzBY72I/s1600-h/FailedCreditCheck.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_-GaREVF19nE/R4TyQ_79NRI/AAAAAAAAAAc/qhH9CzBY72I/s400/FailedCreditCheck.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5153510247473427730" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Or winning the auction:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-GaREVF19nE/R4T1vP79NTI/AAAAAAAAAAs/rpzBjbJLKjc/s1600-h/WinningBid.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_-GaREVF19nE/R4T1vP79NTI/AAAAAAAAAAs/rpzBjbJLKjc/s400/WinningBid.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5153514065699353906" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We're hoping to offer a free download of the Hattrick Software for the SOA Platform in the new year, and maybe even for the ESB. Since it's all Eclipse based, it should be relatively straightforward to tie this into our overall tooling strategy as well, providing a uniform approach to system management and governance. But even without this, what this combination offers is very important: you can now develop your applications and services and prove they work before deployment. Furthermore, in the SOA world of service re-use, where you probably didn't develop everything, a suitable WS-CDL related contract for each service should allow developers to re-use services in a more formal manner and prove a priori that the composite application is still correct, rather than doing things in the ad hoc manner that currently pervades the industry.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-7664161912271307401?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/7664161912271307401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=7664161912271307401' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/7664161912271307401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/7664161912271307401'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2008/01/making-soa-science-and-not-art.html' title='Making SOA a science and not an art'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-GaREVF19nE/R4TxAv79NQI/AAAAAAAAAAU/An5rdquNBBM/s72-c/SOA-Blueprint-Modeller.gif' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-5381965867582512011</id><published>2007-12-19T08:54:00.000-08:00</published><updated>2007-12-19T09:00:03.423-08:00</updated><title type='text'>SOA Patterns</title><content type='html'>I'm in the middle of writing a book on SOA and ESB with &lt;a href="http://www.thomaserl.com/"&gt;Thomas Erl&lt;/a&gt;. One of the things to come out of that collaboration was the &lt;a href="http://www.redhat.com/about/news/prarchive/2007/soa.html"&gt;donation of the SOA Modeler&lt;/a&gt; (that should be going into our repository soon). Another is the fact that Thomas is working on a &lt;a href="http://www.soapatterns.org/"&gt;new book around SOA Design Patterns&lt;/a&gt; and I've been contributing some of them along with my other co-authors on the SOA/ESB book. This should be an excellent source of SOA knowledge. The site has all of the current material and a form for providing feedback. If you're interested in SOA and patterns then you should definitely check it out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-5381965867582512011?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/5381965867582512011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=5381965867582512011' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/5381965867582512011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/5381965867582512011'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/12/soa-patterns.html' title='SOA Patterns'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-1855468516694811482</id><published>2007-12-13T04:04:00.000-08:00</published><updated>2007-12-13T04:07:09.164-08:00</updated><title type='text'>JBoss Innovation Awards</title><content type='html'>Submit for the JBoss Innovation Awards: &lt;a href="http://www.jbossworld.com/jbia"&gt;www.jbossworld.com/jbia&lt;/a&gt;. Enter your JBoss use case in one of eight categories. Each category winner gets a free Complete Conference Pass. If you've already paid for your pass, you will be reimbursed. And, one case will be selected from all of the category winners as the Innovator of the Year. The Innovator of the Year will receive a $1000 stipend for team-building or reward for team involved in the winning innovation project, as well as 3 free passes to a future JBoss World or Red Hat Summit 2008 conference. Simply fill out the form. Deadline to submit is December 14th!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-1855468516694811482?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/1855468516694811482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=1855468516694811482' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/1855468516694811482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/1855468516694811482'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/12/jboss-innovation-awards.html' title='JBoss Innovation Awards'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-5149038459250512656</id><published>2007-12-13T04:01:00.000-08:00</published><updated>2007-12-13T04:02:47.906-08:00</updated><title type='text'>JavaPolis update</title><content type='html'>Just back from JavaPolis, where &lt;a href="http://labs.jboss.com/file-access/default/members/jbossesb/freezone/resources/presentations/JavaPolis200714-09-24.pdf"&gt;I spoke in front of about 400 people on the SOA Platform and JBossESB&lt;/a&gt;. It went down very well with the audience and yet again I found out that there are quite a lot of people going into production with the ESB. Very cool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-5149038459250512656?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/5149038459250512656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=5149038459250512656' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/5149038459250512656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/5149038459250512656'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/12/javapolis-update.html' title='JavaPolis update'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-83431962414677390</id><published>2007-12-10T00:09:00.000-08:00</published><updated>2007-12-10T00:14:11.521-08:00</updated><title type='text'>JavaPolis</title><content type='html'>I'm off to &lt;a href="http://www.javapolis.com/"&gt;JavaPolis&lt;/a&gt; tomorrow to present on &lt;a href="http://www.javapolis.com/confluence/display/JP07/SOA+Development+using+JBossESB"&gt;SOA and JBossESB&lt;/a&gt;. I hope to be able to pepper the talk with some indications of what we'll be working on in 2008 for the &lt;a href="http://www.webservices.org/categories/enterprise/esb/jboss_expands_open_source_soa_platform_with_enterprise_service_bus/(go)/Articles"&gt;SOA Platform&lt;/a&gt;. Once it's uploaded, I'll post a link to the presentation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-83431962414677390?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/83431962414677390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=83431962414677390' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/83431962414677390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/83431962414677390'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/12/javapolis.html' title='JavaPolis'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-4350209206705102112</id><published>2007-12-08T00:57:00.000-08:00</published><updated>2007-12-08T01:00:30.850-08:00</updated><title type='text'>Transactions in a Service Oriented Architecture</title><content type='html'>If you want to see some of the things we have in mind for future releases, then you may want to check out &lt;a href="http://markclittle.blogspot.com/2007/12/large-scale-distributed-transactions.html"&gt;this interesting cross post about the evolution of transaction processing and how it has been shaped by Web Services and SOA&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-4350209206705102112?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/4350209206705102112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=4350209206705102112' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4350209206705102112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4350209206705102112'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/12/transactions-in-service-oriented.html' title='Transactions in a Service Oriented Architecture'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-8201085539308534417</id><published>2007-12-07T11:15:00.000-08:00</published><updated>2007-12-07T11:22:42.915-08:00</updated><title type='text'>Help required ...</title><content type='html'>We're getting closer to releasing the JBoss SOA Platform, which is based on &lt;a href="http://labs.jboss.com/downloading/?projectId=jbossesb&amp;url=/jbossesb/downloads/4.2.1GA/binary/jbossesb-4.2.1GA.zip"&gt;JBossESB 4.2.1GA&lt;/a&gt;, with patches. If you haven't already, it would be really useful if people could try to download the ESB and kick the tyres so we can as much feedback as possible. If you want to try the bleeding edge, check out and build the &lt;a href="http://anonsvn.labs.jboss.com/labs/jbossesb/branches/JBESB_4_2_1_GA_CP/"&gt;Cumulative Patch&lt;/a&gt; for 4.2.1. If you find anything to report, let us know through the &lt;a href="http://www.jboss.com/index.html?module=bb&amp;op=viewforum&amp;f=246"&gt;forum&lt;/a&gt;. Thanks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-8201085539308534417?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/8201085539308534417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=8201085539308534417' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/8201085539308534417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/8201085539308534417'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/12/help-required.html' title='Help required ...'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-4555810807930013192</id><published>2007-12-07T10:39:00.001-08:00</published><updated>2007-12-07T10:40:12.046-08:00</updated><title type='text'>Did we ever ...</title><content type='html'>I'm not sure if we ever cross linked &lt;a href="http://labs.jboss.com/community/newsletters/2007/september/esb_qa.html"&gt;Burr's overview of JBossESB 4.2&lt;/a&gt; and it's quicker to type this entry than look through the back posts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-4555810807930013192?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/4555810807930013192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=4555810807930013192' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4555810807930013192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4555810807930013192'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/12/did-we-ever.html' title='Did we ever ...'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-4024476451262253675</id><published>2007-11-28T06:06:00.000-08:00</published><updated>2007-11-28T06:59:28.655-08:00</updated><title type='text'>Swedish Railways and JBossESB</title><content type='html'>In May 2006, &lt;a href="http://www.jboss.com/customers/index"&gt;Swedish Railroads (SJ)&lt;/a&gt; was looking to upgrade its internal software delivery system in order to provide a shared platform for all IT systems. The integration of the IT systems is essential for SJ as it uses a diverse range of applications ranging from HR to sales, which need to be accessed across a range of interfaces, from PCs to PDAs. Within SJ, a new department was established with the task of building an integration platform and delivering new services for the business to operate on the platform. Swedish Railways is the national railway operator in Sweden. The company has around 350 stations, carrying 70,000 passengers per day. The company employs approximately 3200 staff and has a turnover of approximately $1 billion.&lt;br /&gt;&lt;br /&gt;SJ put the contract out to tender, receiving proposals from many of the large SOA/ESB vendors, including JBoss. After extensive trial period &lt;a href="http://milyn.codehaus.org/Swedish+Railway+%28SJ%29"&gt;SJ selected JBoss middleware solutions for its integration platform&lt;/a&gt;, due to its satisfaction with the product, its use of open standards and the impressive performance when compared to the other solutions.&lt;br /&gt;&lt;br /&gt;Working with &lt;a href="http://jbossgroup.com/partners/partners_syst_int"&gt;Redpill&lt;/a&gt;, the JBoss-based Integration Platform was launched in January 2007. The first major project, in May 2007, was the creation of a ticket auction system to sell unsold tickets on &lt;a href="http://www.tradera.com/Tag-c3-3401"&gt;Tradera.com&lt;/a&gt;, the Swedish auction website owned by Ebay Inc. Using the ESB, any tickets which have not been sold by SJ with 2 days of departure are automatically transferred to the Tradera system, where they are available for auction until 6 hours before departure. On the 4th of October 2007 SJ went live with JBossESB! &lt;a href="http://www.redpill.se/nyheter/losning_baserad_pa_oppen_kallkod_bakom_sjs_nya_biljettauktioner.html"&gt;SJ's CEO did a live demo at a press conference to announce the release&lt;/a&gt;. The news was reported by every major paper and news channels, so this is a great success for SR, Redpill and JBossESB.&lt;br /&gt;&lt;br /&gt;As the first test of the new SJ Integration Platform, the Tradera.com integration project based on JBossESB was a resounding success, and completed within only 4 months. SJ is now able to sell thousands more tickets per week, which previously went unsold. The entire process is automated, with the details of the unsold tickets being passed directly to the Tradera system.&lt;br /&gt;&lt;br /&gt;Now that the Integration Platform is up and running, SJ plans to deliver a new project every 2 months. The upcoming projects come from both internal and external demand, for projects which could either be consolidating existing systems or creating new products.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-4024476451262253675?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/4024476451262253675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=4024476451262253675' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4024476451262253675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4024476451262253675'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/11/swedish-railways-and-jbossesb.html' title='Swedish Railways and JBossESB'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-738716325320244458</id><published>2007-11-22T05:24:00.000-08:00</published><updated>2007-11-22T05:34:42.601-08:00</updated><title type='text'>A satisfied JBossESB user</title><content type='html'>I meant to reference &lt;a href="http://www.axiombg.com/blog/2007/10/to-esb-or-not-to-esb.html"&gt;this&lt;/a&gt; a few weeks back. It's always nice to get feedback from users who are deploying JBossESB in the field. I spoke with Igor about his application and why he chose JBossESB and this is what he had to say:&lt;br /&gt;&lt;br /&gt;"&lt;i&gt;I designed a complete framework for a health/wellness startup. It provides health and wellnes services to individuals and corporations/partners via the web and mobile phones. All requests from users go through a business process manager, which in turn orchestrates the process by invoking appropriate services via JBoss ESB. In some instances the logic routes the request to a local Spring managed POJO to execute the service. The same POJOs are actually handling requests via ESB. I created what I called SpringJbossEsbActionProxy to actually grab appropriate Spring managed POJO instead of instantiating a new service class for every invocation.&lt;br /&gt;&lt;br /&gt;Though I am not a JBossESB expert, but I am happy I decided to use the product and will recommend it to my future clients.&lt;/i&gt;"&lt;br /&gt;&lt;br /&gt;Thanks for the blog entry Igor. If there are any others out there like this, let us know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-738716325320244458?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/738716325320244458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=738716325320244458' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/738716325320244458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/738716325320244458'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/11/satisfied-jbossesb-user.html' title='A satisfied JBossESB user'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-4123327537250926762</id><published>2007-11-01T09:02:00.000-07:00</published><updated>2007-11-01T09:08:28.335-07:00</updated><title type='text'>JBossESB 4.2.1 GA is out!</title><content type='html'>The &lt;a href="http://labs.jboss.com/jbossesb"&gt;JBossESB&lt;/a&gt; team have done it again and released another great update to JBossESB. Although this release is primarily to catch bugs and improvements to reliability and performance, there are a few new features that you may find interesting. Take a look: it's well worth it.&lt;br /&gt;&lt;br /&gt;Congratulations to the whole team!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-4123327537250926762?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/4123327537250926762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=4123327537250926762' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4123327537250926762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4123327537250926762'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/11/jbossesb-421-ga-is-out.html' title='JBossESB 4.2.1 GA is out!'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-314794295048265476</id><published>2007-10-19T09:24:00.001-07:00</published><updated>2007-10-19T09:24:50.630-07:00</updated><title type='text'>Interesting article</title><content type='html'>&lt;a href="http://www.alignjournal.com/index.cfm?section=article&amp;aid=458"&gt;Worth a look&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-314794295048265476?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/314794295048265476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=314794295048265476' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/314794295048265476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/314794295048265476'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/10/interesting-article.html' title='Interesting article'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-6391746996807634291</id><published>2007-09-08T16:49:00.001-07:00</published><updated>2007-09-08T17:01:35.202-07:00</updated><title type='text'>JBossESB 4.2 GA released</title><content type='html'>In case &lt;a href="http://www.jboss.com/index.html?module=bb&amp;op=viewtopic&amp;t=117911"&gt;this has gone unnoticed&lt;/a&gt;, the team just released JBossESB 4.2 GA. This is a significant milestone for Red Hat, as something very close to this release will be the basis of the up coming SOA Platform. Furthermore, 4.2 GA is a huge leap on from our last GA, 4.0, which was over 6 months ago! Some of the things you'll find in there have been blogged about already by the team (and expect more blog entries as soon as I can persuade them to write up a few!), but you'll find:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://jbossesb.blogspot.com/2007/08/service-clustering.html"&gt;New clustering and fail-over capabilities&lt;/a&gt; (thanks to Kurt).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Much better fault handling and reliability (thanks to Kevin).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Built-in monitoring and management (thanks to TomC).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Yet more transport support, including OracleAQ.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://jbossesb.blogspot.com/2007/07/introducing-jaxb-annotations-on.html"&gt;Web Services through JBossWS&lt;/a&gt; (thanks to TomF).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Some very nice integration with jBPM (Kurt) and &lt;a href="http://jbossesb.blogspot.com/2007/07/webservices-and-ws-bpel-process.html"&gt;WS-BPEL&lt;/a&gt; (TomF).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://jbossesb.blogspot.com/2007/05/dive-deep-into-jboss-esb.html"&gt;More examples&lt;/a&gt; (thanks to Burr and the team)!&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Although we're not selling support for this version (that will come once the SOA Platform is released), we are running an Early Adopter Program. If you want to participate, or just want more details, let me know.&lt;br /&gt;&lt;br /&gt;So if you haven't already, I'd encourage you to go take a look and give us feedback (as usual). Congratulations to Kevin and the entire JBossESB team, which definitely includes our fantastic community developers!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-6391746996807634291?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/6391746996807634291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=6391746996807634291' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/6391746996807634291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/6391746996807634291'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/09/jbossesb-42-ga-released.html' title='JBossESB 4.2 GA released'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-3852866029248030066</id><published>2007-08-23T08:00:00.000-07:00</published><updated>2007-08-23T08:07:30.264-07:00</updated><title type='text'>Service Clustering</title><content type='html'>In mission critical systems it is important to design with redundancy in mind. JBossESB 4.2.GA will be the first version with build-in fail-over, load balancing and delayed message redelivery to help you build a robust architecture. When using SOA it is implied that the Service has become the building unit. JBossESB allows you to distribute service instances across many nodes. Each node can be a virtual or physical machine running one or more instances of JBossESB. In this &lt;a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossESBStatelessServiceClustering"&gt;article&lt;/a&gt; it is shown how you can go about setting up Distributed Services, Protocol Clustering, Fail-over, Load Balancing and Message Redelivery.&lt;br /&gt;&lt;br /&gt;--Kurt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-3852866029248030066?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/3852866029248030066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=3852866029248030066' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3852866029248030066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3852866029248030066'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/08/service-clustering.html' title='Service Clustering'/><author><name>Kurt Stam</name><uri>http://www.blogger.com/profile/07418191492358888029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://3.bp.blogspot.com/_fAUX2tnEInU/SoGKASmOx3I/AAAAAAAAAGE/HGxLbl1Doro/S220/kurtstam.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-5922546829791512404</id><published>2007-08-04T00:24:00.000-07:00</published><updated>2007-08-04T00:36:16.910-07:00</updated><title type='text'>Services, services, services</title><content type='html'>A &lt;a href="https://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=9086530130079846012"&gt;really good discussion&lt;/a&gt; to a &lt;a href="http://jbossesb.blogspot.com/2007/08/how-to-design-new-services-best.html"&gt;nice post from Kurt&lt;/a&gt; on where to start with service development. The advice differs from what &lt;a href="http://jbossesb.blogspot.com/2007/07/where-to-start-with-services.html"&gt;I said in an earlier post&lt;/a&gt;, but as you'll see from the comments to Kurt's post, they're not mutually incompatible. Taken together, they represent the top-down and bottom-up development approach I mentioned:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;i&gt;top-down (business logic development)&lt;/i&gt;: do as Kurt suggests and develop your business logic using whatever tools and methodologies you think are appropriate. From a high level perspective, this is as critical to your success as ever.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;i&gt;bottom-up (service development)&lt;/i&gt;: do as I suggest and think about the contract you want your service to expose and how that would map into message exchanges (content, sync versus async etc.); try to keep it as agnostic to the backend business logic implementation as possible (e.g., don't go exposing individual objects on to the bus). The service is your route into SOA: get it right and you'll be able to leverage all of the benefits the industry keeps pushing.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;You can develop these two aspects sequentially or concurrently (even by different teams, which allows each team to concentrate on the right skill sets needed for each role). This is an aspect of what's traditionally called &lt;i&gt;the service lifecycle&lt;/i&gt; part of governance. It isn't easy to get it right first time without appropriate tools and patterns. Plus experience helps a lot here: even with tools/patterns, you'll find it easier to do the more you do it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-5922546829791512404?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/5922546829791512404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=5922546829791512404' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/5922546829791512404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/5922546829791512404'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/08/services-services-services.html' title='Services, services, services'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-9086530130079846012</id><published>2007-08-02T08:59:00.000-07:00</published><updated>2007-08-02T15:49:26.995-07:00</updated><title type='text'>How to design new services? Best practices.</title><content type='html'>If you have existing applications out there that need integration, then the problem space is fairly well understood. But what if you you are building a NEW application? Here is a question I received:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;We have a big project here. It doesn't involve integrating existing software, but does involve a lot of parts that I think could best be written as web services so that they can be reused by other parts of the business, etc. Is it good to break up a project into services or is SOA better when you are trying to integrate things that aren't meant to go together or stuff that has remote components, etc. Basically, what I'm saying, is that I could put all this stuff into nicely organized java code, or I could break it out into services, and I don't know which to do.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I think the answer is that you should keep on writing your application like you always did. Write a tiered application, and make sure the business logic ends up in the (stateless) middle tier. Now this middle tier will exist of EJBs or POJOs. Next you will have to do two things:&lt;br /&gt;&lt;br /&gt;1. Turn them into a service.&lt;br /&gt;2. Register the service with the ESB.&lt;br /&gt;&lt;br /&gt;There are multiple ways to go about achieving the above:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;EJB&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Use EJB annotations to turn your POJO into an EJB. You can now register the EJB with the ESB by writing a custom action which calls the EJB. This is demonstrated in the &lt;a href="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/samples/quickstarts/business_service/"&gt;bussines_service&lt;/a&gt; quickstart. The action receives a message, some objects can be pulled out and used to send to the EJB. The return value of the EJB can be used to update the message. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;WebService&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Add JSR-181 annotations to bring up a WebService. Now if you do this using JBossWS something cool happens. If the ESB runs on the same instance it auto-discovers these services and registers them with the ESB. Now can can send a soap message to a gateway and the ESB will forward this message to your WebService. So, for example, you can now send SOAP messages in a file to an ftp server. See the &lt;a href="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/samples/quickstarts/webservice_producer/"&gt;webservice_producer&lt;/a&gt; quickstart.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Seam&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you have used seam to build your app, you can take take a look at Michael Yuan's write up called "&lt;a href="http://www.michaelyuan.com/blog/2007/07/31/seam-and-soa/"&gt;Seam-and-SOA&lt;/a&gt;" when he attended a JBESB training earlier this week. Also we have an integration example with the Seam DVD store that Burr created. Be on the lookout for this to become a quickstart too.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Spring POJO&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Use Spring annotations to turn your POJO into a Spring enabled POJO. Now write a custom action to call the bean. See the &lt;a href="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/samples/quickstarts/spring_aop/"&gt;Spring_OAP&lt;/a&gt; quickstart.&lt;br /&gt;&lt;br /&gt;I hope this demonstrates the pattern. To be clear on why you should take the extra step to register your service to an ESB, this is to obtain capabilities like routing to multiple destinations, content-based-routing, message transformation, service orchestration (jBPM or BPEL), service-human workflow integration (jBPM), bringing up services over different protocols (ftp, file, etc). I guess that list is pretty well documented on the &lt;a href="http://labs.jboss.com/jbossesb/"&gt;project page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;--Kurt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-9086530130079846012?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/9086530130079846012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=9086530130079846012' title='48 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/9086530130079846012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/9086530130079846012'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/08/how-to-design-new-services-best.html' title='How to design new services? Best practices.'/><author><name>Kurt Stam</name><uri>http://www.blogger.com/profile/07418191492358888029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://3.bp.blogspot.com/_fAUX2tnEInU/SoGKASmOx3I/AAAAAAAAAGE/HGxLbl1Doro/S220/kurtstam.jpg'/></author><thr:total>48</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-2604303283668811385</id><published>2007-07-30T13:34:00.000-07:00</published><updated>2007-07-30T13:51:09.292-07:00</updated><title type='text'>Where to start with services</title><content type='html'>If you ask 100 people what they mean by SOA applications you'll probably get 100 different answers. However, there are some common requirements:&lt;br /&gt;&lt;br /&gt;i) they should scale from several to hundreds and thousands of participants/services.&lt;br /&gt;ii) they should be loosely coupled, so that changes of service implementation at either end of an interaction can occur in relative isolation without breaking the system.&lt;br /&gt;iii) they need to be highly available.&lt;br /&gt;iv) they need to be able to cope with interactions that span the globe and have connectivity characteristics like the traditional Web (i.e., poor).&lt;br /&gt;v) asynchronous (request-request) invocations should be as natural as synchronous request-response.&lt;br /&gt;&lt;br /&gt;Scalability and availability are possible with other technologies, such as CORBA. Although (ii) and (iv) can certainly be catered for in those technologies as well, the default paradigm is one based on an implementation choice: objects. Objects have well defined interfaces and although they can change, the languages used to implement them typically place restrictions on the type of changes that can occur. Now although it is true that certain OO architectures, such as CORBA, allow for a loosely coupled, weakly types interaction pattern (e.g., DII/DSI in the case of CORBA), that is not typically the way in which applications are constructed and hence tool support in this area is poor.&lt;br /&gt;&lt;br /&gt;There is no objective way in which to approach the question of whether SOAs can be catered for in traditional environments. The answer is obviously yes, because no new language has been invented for SOAs and current tools are used to develop them. However, the real question is what is the best paradigm in which to consider an SOA that allows it to address all 5 points above.&lt;br /&gt;&lt;br /&gt;Concentrating on the message and making it the central tenant of the architecture is the key to addressing the 5 points. How this is mapped onto a logical architecture (objects, procedures, etc.) and ultimately onto a physical implementation (objects, methods, state, etc.) is not important. The fact is that many different implementations and sub-architectures could be used. So what is the fundamental concept or mind-set in which to work when considering SOA?&lt;br /&gt;&lt;br /&gt;The answer is that this is not about request-response, request-request, asynchrony etc. but it's about events. The fundamental SOA is a unitary event bus which is triggered by receipt of a message: a service registers with this bus to be informed when messages arrive. Next up the chain is a demultiplexing event handler (dispatcher), that allows for sub-services (sub-components) to register for sub-documents (sub-messages) that may be logically or physically embedded in the initially received message. This is an entirely recursive architecture.&lt;br /&gt;&lt;br /&gt;JBossESB does not impose restrictions on what constitutes a service. The ideal SOA infrastructure encourages a loosely coupled interaction pattern between clients and services, where the message is of critical importance and implementation specific details are hidden behind an abstract interface. This allows for the implementations to change without requiring clients/users to change. Only changes to the message definitions necessitate updates to the clients.&lt;br /&gt;&lt;br /&gt;As such, JBossESB uses a message driven pattern for service definitions and structures: clients send Messages to services and the basic service interface is essentially a single doWork method that operates on the Message received. Internally a service is structured from one or more Actions, that can be chained together to process incoming the incoming Message. What an Action does is implementation dependent, e.g., update a database table entry, or call an EJB.&lt;br /&gt;&lt;br /&gt;When developing your services, you first need to determine the conceptual interface/contract that it exposes to users/consumers. This contract should be defined in terms of Messages, e.g., what the payload looks like, what type of response Message will be generated (if any) etc.&lt;br /&gt;&lt;br /&gt;Clients can then use the service as long as they do so according to the published contract. How your service processes the Message and performs the work necessary, is an implementation choice. It could be done within a single Action, or within multiple Actions. There will be the usual trade-offs to make, e.g., manageability versus re-useability.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-2604303283668811385?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/2604303283668811385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=2604303283668811385' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/2604303283668811385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/2604303283668811385'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/07/where-to-start-with-services.html' title='Where to start with services'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-4706217206285060472</id><published>2007-07-28T07:10:00.000-07:00</published><updated>2007-07-28T08:16:46.720-07:00</updated><title type='text'>Hello World</title><content type='html'>How do you get going with JBossESB? If you need a place to start take a look at the &lt;a href="http://wiki.jboss.org/wiki/attach?page=ESBGettingStarted%2Fhelloworld.swf"&gt;Hello World demo&lt;/a&gt;. It is a five minute introduction in which you learn&lt;br /&gt;&lt;ul&gt;&lt;li&gt;how to start and stop JBossESB in debug mode from within the JBossIDE,&lt;br /&gt;&lt;/li&gt;&lt;li&gt;how to deploy your first service: Hello World!&lt;/li&gt;&lt;/ul&gt;The Hello World Service is actually one of the &lt;a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossESBQuickStart"&gt;QuickStarts&lt;/a&gt; in the provided samples. The prerequisites are &lt;a href="http://labs.jboss.com/jbosside/download/index.html"&gt;JBossIDE (2.0 beta2)&lt;/a&gt;, and &lt;a href="http://labs.jboss.com/jbossesb/downloads/4.2MR3/binary/jbossesb-server-4.2MR3.zip"&gt;JBossESB-server-4.2MR3&lt;/a&gt;. Both of which can be downloaded from &lt;a href="http://labs.jboss.com/projects/"&gt;jboss.org.&lt;/a&gt; The &lt;a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=ESBGettingStarted"&gt;wiki&lt;/a&gt; provides a good start, and please help us keep it up to date. Our project has lot of contributors, the number of features is growing rapidly and there is nothing like accurate up-to-date documentation. You're invited!&lt;br /&gt;&lt;br /&gt;--Kurt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-4706217206285060472?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/4706217206285060472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=4706217206285060472' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4706217206285060472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4706217206285060472'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/07/hello-world.html' title='Hello World'/><author><name>Kurt Stam</name><uri>http://www.blogger.com/profile/07418191492358888029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://3.bp.blogspot.com/_fAUX2tnEInU/SoGKASmOx3I/AAAAAAAAAGE/HGxLbl1Doro/S220/kurtstam.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-4494059759629442436</id><published>2007-07-04T10:28:00.000-07:00</published><updated>2007-07-05T01:47:58.172-07:00</updated><title type='text'>"Introducing" JAXB Annotations on Unannotated Java Typesets</title><content type='html'>Over the past few weeks we worked on migrating the &lt;a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=SOAPProcessor"&gt;SOAPProcessor&lt;/a&gt; (formerly known as "JBossWSAdapter") up to the JBossWS 2.0.x codebase.  This was important for us because we wanted to get away from our dependency on a non-public JBossWS 1.x API.  JBossWS has introduced a new SPI into the 2.x codebase.  Changing the JBossESB SOAPProcessor action component to depend on this public SPI was a no-brainer.&lt;br /&gt;&lt;br /&gt;However, the native SOAP stack in JBossWS 2.x depends on &lt;a href="https://jaxb.dev.java.net/"&gt;JAXB&lt;/a&gt; for SOAP&lt;-&gt;Java binding.  This raised an issue for us because JAXB is 100% driven by annotations on the Java binding classes.  If your Webservice Java bindings are not JAXB annotated, JAXB will not marshal/unmarshal SOAP&lt;-&gt;Java properly (&lt;a href="http://forums.java.net/jive/thread.jspa?threadID=27591&amp;tstart=30"&gt;see JAXB forum post&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;A classic JBossESB usecase is one where the ESB is used to expose a Webservice interface for an existing Java based Service that doesn't already expose a Webservice interface.  In this situation, you can use the ESB to define a "wrapper webservice" that maps calls to the target Service (we'll be automating this in a future release).  In this situation you'll also want to use the Java types that define the target Service, when defining the "wrapper webservice" e.g. use an EJB's remote interface, without modification, to define a JSR 181 wrapper service.&lt;br /&gt;&lt;br /&gt;So, in the usecase outlined above, the Java types that define the target Service are obviously not going to be JAXB annotated (or at least they typically will not be).  At this point, using JAXB (and therefore JBossWS 2.x) is no longer an option, since JAXB will not work against an unannotated interface.&lt;br /&gt;&lt;br /&gt;The JAXB RI API supports setting a &lt;a href="https://jaxb-architecture-document.dev.java.net/nonav/doc/com/sun/xml/bind/v2/model/annotation/RuntimeInlineAnnotationReader.html"&gt;RuntimeInlineAnnotationReader&lt;/a&gt; during &lt;a href="https://jaxb.dev.java.net/nonav/2.1.3/docs/api/javax/xml/bind/JAXBContext.html"&gt;JAXBContext &lt;/a&gt;creation.  We've used this feature to support "Introduction" of the JAXB annotations, from an XML configuration, for interfaces that are not JAXB annotated.  It works by creating dynamic proxies for the annotations as they are requested by JAXB RI, with the dynamic proxies being fed via an XML configuration.  See "&lt;a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=JAXBIntroductions"&gt;JAXB Annotation Introductions&lt;/a&gt;" for more details.&lt;br /&gt;&lt;br /&gt;Having done this, and having talked with the JBossWS guys, it would appear as though users of JAXB are not the only ones that run into trouble as a result of not having an alternative to a purely annotation driven configuration model (JSR 181 being another example that Thomas Diesler and Hieko Braun have pointed out).  Is there room for a general purpose mechanism that can be used to manually "Introduce" annotations in situations like this?  Obviously you could suggest that implementations should just support 2 configuration models - internal (annotations) and external (something else - fed by XML, or whatever).  But surely a single underlying configuration/metadata "access" mechanism (the &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/package-summary.html"&gt;Annotations API&lt;/a&gt;) is preferable.&lt;br /&gt;&lt;br /&gt;The Annotation Reader approach (ala &lt;a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=JAXBIntroductions"&gt;JAXB Introductions&lt;/a&gt;) seems to offer something along these lines, but it would be nice if it could be done without requiring the annotation reader i.e. it would be nice if we could introduce annotations directly on the &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/package-summary.html"&gt;Annotations API&lt;/a&gt; (AOP style).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-4494059759629442436?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/4494059759629442436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=4494059759629442436' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4494059759629442436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4494059759629442436'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/07/introducing-jaxb-annotations-on.html' title='&quot;Introducing&quot; JAXB Annotations on Unannotated Java Typesets'/><author><name>Tom Fennelly</name><uri>http://www.blogger.com/profile/14161465872732273475</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-1193178396790702571</id><published>2007-07-04T10:01:00.000-07:00</published><updated>2007-07-04T11:15:16.043-07:00</updated><title type='text'>Webservices and WS-BPEL Process Orchestration - A Follow Up</title><content type='html'>We've done quite a bit of work in the Webservice/SOAP area since I posted &lt;a href="http://jbossesb.blogspot.com/2007/05/webservices-and-ws-bpel-process.html"&gt;Webservices and WS-BPEL Process Orchestration&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Since then we've added the SOAPProcessor (SOAP onto the bus) action to complement the SOAPClient action (SOAP off the bus).  Check out the &lt;a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=WebservicesSupport"&gt;Webservices/SOAP components&lt;/a&gt; and let us know what you think.&lt;br /&gt;&lt;br /&gt;We had some fun upgrading to JBossWS 2.0 after we ran into issues with JAXB and how it doesn't allow us to use Java bindings that are not JAXB annotated.  More on that in another blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-1193178396790702571?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/1193178396790702571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=1193178396790702571' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/1193178396790702571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/1193178396790702571'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/07/webservices-and-ws-bpel-process.html' title='Webservices and WS-BPEL Process Orchestration - A Follow Up'/><author><name>Tom Fennelly</name><uri>http://www.blogger.com/profile/14161465872732273475</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-3973271238845924338</id><published>2007-05-29T09:16:00.000-07:00</published><updated>2007-05-30T02:02:01.982-07:00</updated><title type='text'>Webservices and WS-BPEL Process Orchestration</title><content type='html'>&lt;p style="margin-bottom: 0cm;"&gt;We've just added some functionality to the ESB in support of making invocations on external Webservice Endpoints from within the ESB.  This functionality is available right now &lt;a href="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/"&gt;from SVN &lt;/a&gt;and will be officially released in the 4.2GA release (July '07).&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0cm;"&gt;The main feature is the ability to construct SOAP requests and consume SOAP responses without having to generate proxy code.  All that's required is configuration of the “SOAPClient” action class, specifying the location of the Endpoint WSDL and the name of the operation to be invoked.&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;Get all the details about the SOAPClient action &lt;a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=ExternalWebserviceConsumption"&gt;from the WIKI&lt;/a&gt;.&lt;/p&gt;  &lt;p style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;This functionality is very important because it supports SOAP &lt;u&gt;unaware&lt;/u&gt; endpoints making invocations on SOAP endpoints.  This is only half of the new Webservices functionality being added for 4.2GA.  We're also adding functionality to support exposing Webservice interfaces for Webservice &lt;u&gt;unaware&lt;/u&gt; endpoints.  Milestone Release 2 (MR2) of JBossESB 4.2 prototyped this functionality in the JBossWSAdapter action class.  We are about to rework and enhance parts of that prototype for the GA release.  More on this later.&lt;br /&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;With both of these pieces of functionality in place for 4.2GA, not only do we have strong support for Webservices in general, but we also open the door to supporting WS-BPEL style orchestration of Webservice &lt;u&gt;unaware&lt;/u&gt; Services through the ESB.  To this end, JBoss has partnered with &lt;a href="http://www.active-endpoints.com/"&gt;Active Endpoints&lt;/a&gt;.  Active Endpoints have developed a 1st Class WS-BPEL Engine called &lt;a href="http://www.active-endpoints.com/"&gt;ActiveBPEL&lt;/a&gt;.&lt;/p&gt;  &lt;p style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;To see how well JBossESB and ActiveBPEL work together, see the &lt;a href="http://labs.jboss.com/jbossesb/resources/tutorials/bpel-demos/bpel-demos.html"&gt;flash demos available on the ESB labs pages&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/8048607794005651608-3973271238845924338?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/3973271238845924338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=3973271238845924338' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3973271238845924338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3973271238845924338'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/05/webservices-and-ws-bpel-process.html' title='Webservices and WS-BPEL Process Orchestration'/><author><name>Tom Fennelly</name><uri>http://www.blogger.com/profile/14161465872732273475</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-655732447567539258</id><published>2007-05-17T05:37:00.000-07:00</published><updated>2007-05-17T06:09:51.590-07:00</updated><title type='text'>Dive Deep into JBoss ESB</title><content type='html'>Yesterday Burr hosted a great &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;webinar&lt;/span&gt; called "Dive Deep into &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;JBossESB&lt;/span&gt;". In typical Burr style he was able to transfer an incredible amount of information. He started of with an overview of all the currently available features in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;JBossESB&lt;/span&gt; tying them to real world scenarios, while sketching out how you would convert your &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;existing&lt;/span&gt; applications to get them to play nicely using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;SOA&lt;/span&gt;. The demos showed how easy this really has become. I do have to say that the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;webinar&lt;/span&gt; platform was tough on displaying the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;jboss&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;esb&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;xml&lt;/span&gt; file. It would flash by too quickly, but the good thing is that all these demos are part of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;JBossESB&lt;/span&gt; download, so you can pick them apart and replay them on your own pace. I thought the demos themselves worked very well to demonstrate the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_10"&gt;capabilities&lt;/span&gt;, and they all went off flawlessly. The best demo by far was the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;jBPM&lt;/span&gt; integration demo where he moved a few arrows in the flowchart editor and having the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_12"&gt;message flow&lt;/span&gt; be altered. Great visual!&lt;br /&gt;&lt;br /&gt;The questions showed that people really understood the presentation as well as the product, and almost half the people hung around for another 45 minutes to interact with the team to get their questions answered. If we ended up not answering your question, then please take them to the &lt;a href="http://www.jboss.com/index.html?module=bb&amp;op=viewforum&amp;amp;f=246"&gt;forum&lt;/a&gt;, and we'll try to &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_13"&gt;answer&lt;/span&gt; it there. The slides have been attached to the &lt;a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossESB"&gt;wiki &lt;/a&gt;, see the link under the 'Presentations' header. If you missed it, there is another session next week May 22&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;nd&lt;/span&gt;. You can sign up at the same place in the wiki. A recording of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;webinar&lt;/span&gt; will be available next week. Don't &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_16"&gt;hesitate&lt;/span&gt; to give us any feedback right here in the blog.&lt;br /&gt;&lt;br /&gt;I hope you enjoyed it as much as I did :).&lt;br /&gt;&lt;br /&gt;--Kurt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a class="external" href="http://wiki.jboss.org/wiki/attach?page=JBossESBDocumentation%2FMay_ESB_Deep_Dive_v2.pdf"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-655732447567539258?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/655732447567539258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=655732447567539258' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/655732447567539258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/655732447567539258'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/05/dive-deep-into-jboss-esb.html' title='Dive Deep into JBoss ESB'/><author><name>Kurt Stam</name><uri>http://www.blogger.com/profile/07418191492358888029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://3.bp.blogspot.com/_fAUX2tnEInU/SoGKASmOx3I/AAAAAAAAAGE/HGxLbl1Doro/S220/kurtstam.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-516020210626781565</id><published>2007-05-17T05:03:00.000-07:00</published><updated>2007-05-17T05:04:17.813-07:00</updated><title type='text'>JBI 2.0</title><content type='html'>I was asked to give a BOF at JavaOne around JBI 2.0. &lt;a href="http://blogs.jboss.com/blog/mlittle/?permalink=Red_Hat_and_JBI_2_0.txt"&gt;Here's what I had to say&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-516020210626781565?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/516020210626781565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=516020210626781565' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/516020210626781565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/516020210626781565'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/05/jbi-20.html' title='JBI 2.0'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-5350689867377896747</id><published>2007-05-08T07:17:00.000-07:00</published><updated>2007-05-08T07:23:17.321-07:00</updated><title type='text'>JBossESB 4.2 MR2 released</title><content type='html'>&lt;a href="http://labs.jboss.com/jbossesb"&gt;We've&lt;/a&gt; just released &lt;a href="http://labs.jboss.com/jbossesb/downloads"&gt;Milestone Release 2 of JBossESB 4.2&lt;/a&gt;. This is quite a significant update for us with a number of significant changes that the team will blog about later, including:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;WS-BPEL support: now have your BPEL processes exposed through JBossESB.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Web Services support through JBossWS integration.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;More integration with EPRs for messages, such that faults and replies can be routed via the message header information.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Support for Oracle AQ as one of the JMS transports.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Some cool new quickstarts.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Closer jBPM integration.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;If you haven't taken a look at JBossESB yet, then I'd encourage you to do so now and give us feedback. This is a community development effort, so come and get involved however you can.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-5350689867377896747?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/5350689867377896747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=5350689867377896747' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/5350689867377896747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/5350689867377896747'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/05/jbossesb-42-mr2-released.html' title='JBossESB 4.2 MR2 released'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-4824378246014010614</id><published>2007-03-28T05:37:00.000-07:00</published><updated>2007-03-28T07:46:40.771-07:00</updated><title type='text'>XSLT via Smooks - Comparisons</title><content type='html'>As you may already know, JBoss ESB uses &lt;a href="http://milyn.codehaus.org/Smooks"&gt;Smooks&lt;/a&gt; to perform message transformation.  One of the design goals of Smooks is to support fragment based transformations i.e. targeting transformation logic at a fragment of an XML message/document as opposed to the whole message. The good thing about this approach is that it not only means you can perform more componentization of your transformation logic, but it also means (often more importantly) that you can easily mix and match different types of transformation logic (XSLT, Java, Groovy, StringTemplate etc) within the context of a single message transformation. This is a very powerful feature. From a purely XSLT perspective, this also means you can have functionality equivalent to XSLT Extensions (Xalan Extensions), but maintain portability across XSL Processors.&lt;br /&gt;&lt;br /&gt;I recently performed some performance profiling of Smooks based XSL transforms, comparing them against standalone XSLT.  This was done in order to get a better idea of the overhead incurred by using Smooks to perform XSL based transforms.  I'll attempt to answer the question of why you'd bother applying XSLT via Smooks in future blog.&lt;br /&gt;&lt;br /&gt;The comparisons were run on a Dell Latitude D820 (2GHz Dual Core), 2 GB of RAM, running Windows XP, running jdk1.5.0_10.&lt;br /&gt;&lt;br /&gt;For this round of comparisons (I hope to do more some time in the future):&lt;br /&gt;&lt;ol&gt;&lt;li&gt;I selected a very simple message format (an &lt;order&gt; with multiple &lt;order-items&gt;), as well as a very simple set of XML to XML transformations to be performed on that message.  I wanted to keep it simple in order to keep the resulting XSLTs as simple as possible.  This way I hope I can get a "worse case scenario" re the overhead incurred while using Smooks to perform XSL transforms.  The tests are available &lt;a class="moz-txt-link-freetext" href="http://svn.codehaus.org/milyn/trunk/smooks-cartridges/perfcomp/"&gt;here&lt;/a&gt;.&lt;/order-items&gt;&lt;/order&gt;&lt;/li&gt;&lt;li&gt;I compared the number of messages transformed in a 6hr time period.&lt;/li&gt;&lt;li&gt;I compared the results produced by using the following XSLT processors: Sun XSLTC (JDK 1.5), Xalan 2.7.0, Saxon 8.7.&lt;/li&gt;&lt;li&gt;I compared the results produced by a DOM Source and Result for  XSLT Standalone versus a DOM Source and Result on Smooks.&lt;/li&gt;&lt;li&gt;I compared the results produced by streaming both the Source and Result for  XSLT Standalone versus a DOM Source and Result on Smooks (Smooks only supports DOM based XSLT).&lt;/li&gt;&lt;li&gt;I tested against 10 input messages ranging in size from 20K to 200K.  That is, 10 threads running concurrently, continually transforming, each pausing for 10ms between iterations.&lt;/li&gt;&lt;li&gt;The message bytes were read and buffered in memory so as to avoid File IO variabilities.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;During the timed test runs, I didn't compare the transformation output against the expected output.  However, I did perform preliminary test runs on all processors and verified that the output produced across the board was consistent.  The one exception to this was Xalan 2.7.0, which has a concurrency bug that results in the transformed output not being consistent when the XSL is not applied in a synchronized fashion.  I still ran the tests against Xalan unsynchronized, so as to get an idea of how it would perform, assuming the absence of this bug.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;  The test results (listed below) clearly show that streaming XML into an XSL processor makes a huge difference in terms of throughput.  The fact that streaming is faster did not surprise me, but the extent of the difference did.  In some cases the whole process (taking the input stream, transforming it and producing the output stream) was up to 4 times faster than the poorest performing alternative (taking the input stream, paring it to a DOM, transforming the DOM to a DOM using the XSL Transformer and finally serializing the resulting DOM to the output stream).&lt;br /&gt;&lt;br /&gt;In summary, the performance figures are as follows....&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;DOM based XSLT Vs Smooks based XSLT (also DOM based)&lt;/span&gt;:&lt;br /&gt;&lt;table style="width: 382px; height: 272px;" border="1"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr bgcolor="grey"&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="color: rgb(255, 255, 255);"&gt;Total Bytes - XSLT&lt;/td&gt;&lt;td style="color: rgb(255, 255, 255);"&gt;Total Bytes - Smooks/XSLT&lt;/td&gt;&lt;td style="color: rgb(255, 255, 255);"&gt;Smooks Relative Performance&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="color: rgb(255, 255, 255);" bgcolor="grey"&gt;Sun XSLTC&lt;/td&gt;&lt;td&gt;70953094656&lt;/td&gt;&lt;td&gt;59952608928&lt;/td&gt;&lt;td&gt;84.50%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="color: rgb(255, 255, 255);" bgcolor="grey"&gt;Saxon 8.7&lt;/td&gt;&lt;td&gt;31988047248&lt;/td&gt;&lt;td&gt;29874631032&lt;/td&gt;&lt;td&gt;93.39%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="color: rgb(255, 255, 255);" bgcolor="grey"&gt;Xalan 2.7.0&lt;/td&gt;&lt;td&gt;40090038120&lt;/td&gt;&lt;td&gt;38571310512&lt;/td&gt;&lt;td&gt;96.21%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;a href="http://milyn.codehaus.org/smooks-xslt-performance/DOM-Comparisons.png"&gt;(full details)&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Stream based XSLT Vs Smooks based XSLT (DOM based)&lt;/span&gt;:&lt;br /&gt;&lt;table style="width: 381px; height: 272px;" border="1"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr bgcolor="grey"&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="color: rgb(255, 255, 255);"&gt;Total Bytes - XSLT&lt;/td&gt;&lt;td style="color: rgb(255, 255, 255);"&gt;Total Bytes - Smooks/XSLT&lt;/td&gt;&lt;td style="color: rgb(255, 255, 255);"&gt;Smooks Relative Performance&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="color: rgb(255, 255, 255);" bgcolor="grey"&gt;Sun XSLTC&lt;/td&gt;&lt;td&gt;223776189216&lt;/td&gt;&lt;td&gt;59952608928&lt;/td&gt;&lt;td&gt;26.79%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="color: rgb(255, 255, 255);" bgcolor="grey"&gt;Saxon 8.7&lt;/td&gt;&lt;td&gt;146482894440&lt;/td&gt;&lt;td&gt;29874631032&lt;/td&gt;&lt;td&gt;20.39%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="color: rgb(255, 255, 255);" bgcolor="grey"&gt;Xalan 2.7.0&lt;/td&gt;&lt;td&gt;86316614136&lt;/td&gt;&lt;td&gt;38571310512&lt;/td&gt;&lt;td&gt;44.69%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;a href="http://milyn.codehaus.org/smooks-xslt-performance/Streamed-Comparisons.png"&gt;(full details)&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;To understand what this means for JBoss ESB Transformation, you first need to understand what it means for Smooks.  At the top of this blog I mentioned how Smooks implements a fragment based approach to message transformations (including some of advantages of that approach).   The down side to this fragment based approach is that Smooks currently supports this via a DOM based model.&lt;br /&gt;&lt;br /&gt;So what does all this mean for JBoss ESB Transformation.  Well, because JBoss ESB Transformation relies on Smooks to manage and apply transformation logic (including XSL transforms), it means that JBoss ESB cannot currently avail of the performance advantages offered by streaming messages into an XSL Processor.  So, for a transformation where you don't need to features offered by Smooks (fragment based transforms etc) and you want to implement the transformation in XSLT, the performance hit is quite significant.&lt;br /&gt;&lt;br /&gt;Luckily, this is not all that difficult to work around for JBoss ESB because we can simply implement a native XSLT ActionProcessor that can apply XSLTs using streaming.  This is just a couple of lines of code - no big deal.  From a Smooks perspective, there's a little bit more involved, but I don't think all that much.  In short, Smooks could simply check the resources targeted at the message exchange in question, and if there's only one, which is targeted at the "docroot" fragment, and it's a stream supporting resource, then stream it - no need to DOM'ify.  This would enable JBoss ESB to have the best of both worlds again... stream based XSLT + management and exchange based selection of transformation resources (via Smooks).  We'll keep this for another blog :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-4824378246014010614?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/4824378246014010614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=4824378246014010614' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4824378246014010614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/4824378246014010614'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/03/as-you-may-already-know-jboss-esb-uses.html' title='XSLT via Smooks - Comparisons'/><author><name>Tom Fennelly</name><uri>http://www.blogger.com/profile/14161465872732273475</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-3557035271856876176</id><published>2007-03-24T07:32:00.000-07:00</published><updated>2007-03-25T10:24:46.677-07:00</updated><title type='text'>JBossESB 4.2 Milestone Release 1 is out!</title><content type='html'>We've just released &lt;a href="http://labs.jboss.com/portal/jbossesb/downloads"&gt;MR1 for the 4.2 version of JBossESB&lt;/a&gt;. It's surprising how much work we've managed to cram into the time between the &lt;a href="http://blogs.jboss.com/blog/mlittle/2007/02/05/JBossESB_4_0_GA_released.txt"&gt;4.0 GA release&lt;/a&gt; and this! We've increased the developer community size yet again (we're averaging 1 new contributor a week) and &lt;a href="http://blogs.jboss.com/blog/bburke/"&gt;Bill Burke&lt;/a&gt; has begun to get involved too. Welcome Bill!&lt;br /&gt;&lt;br /&gt;There have been quite a few changes between 4.0 GA and 4.2 MR1, including: &lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://labs.jboss.com/portal/jbossjbpm"&gt;jBPM integration&lt;/a&gt;: you can now invoke a service, use an ESB action to start a new process and signal a process, all from within the ESB.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Groovy scripts can be embedded within the ESB via the action framework.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Configure your ESB graphically, &lt;a href="http://www.jboss.com/index.html?module=bb&amp;op=viewtopic&amp;t=103170"&gt;via a community donated editor&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Scoped deployments within the same ESB server; &lt;a href="http://jbossesb.blogspot.com/2007/03/esb-archive-does-not-end-in-ar.html"&gt;see Kurt's earlier posting&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://labs.jboss.com/portal/jbossmessaging"&gt;JBoss Messaging 1.2.0GA&lt;/a&gt; is now the recommended JMS implementation, both for standalone and embedded operation.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;We've improved the performance of the ESB, particularly if you use JMS as your transport.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;There's now a Dead Letter Queue for the CBR; if it can't route your message then at least it can be persisted for later offline management.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;There's more to come too as we move towards JBossESB 4.2 and 5.0. Hopefully this will give you a flavour of what's to come. Over the next few days, members of the team will post a few entries here on different topics of interest around our ESB. If there's anything specific you'd like to see an entry on, just let us know and we'll try to accommodate you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-3557035271856876176?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/3557035271856876176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=3557035271856876176' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3557035271856876176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3557035271856876176'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/03/jbossesb-42-milestone-release-1-is-out.html' title='JBossESB 4.2 Milestone Release 1 is out!'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-3242054796139871739</id><published>2007-03-22T15:47:00.000-07:00</published><updated>2007-03-22T16:53:20.111-07:00</updated><title type='text'>The esb archive does not end in ar.</title><content type='html'>After jar, war, ear, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;sar&lt;/span&gt; and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;har&lt;/span&gt; we now have a new type of archive called &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;esb&lt;/span&gt;! An &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;esb&lt;/span&gt; archive is one of the new features of our upcoming release and it packages up both your configuration and your custom code (action classes) in one neat package. The structure of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;esb&lt;/span&gt; archive looks like:&lt;code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;pre style="margin-left: 1.5in;"&gt;├───META-INF&lt;br /&gt;│   └───&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;jboss&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;esb&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;xml&lt;/span&gt;&lt;br /&gt;│   └───MANIFEST.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;MF&lt;/span&gt;&lt;br /&gt;├─── classes&lt;java&gt;&lt;br /&gt;├─── queue-service.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;xml&lt;/span&gt;&lt;queue-service.xml&gt;&lt;br /&gt;&lt;/queue-service.xml&gt;&lt;/java&gt;&lt;a href="javascript:void(0)" onclick="return false;" tabindex="7"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;java&gt;&lt;queue-service.xml&gt;&lt;br /&gt;&lt;/queue-service.xml&gt;&lt;/java&gt;&lt;/pre&gt;What used to be called &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;jbossesb&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;xml&lt;/span&gt; is now called  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;jboss&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;esb&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;xml&lt;/span&gt; and it lives in the META-INF directory of the archive together with the MANIFEST.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;MF&lt;/span&gt;. Your custom action classes go in the root of the archive and optionally you can add a queue-service.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;xml&lt;/span&gt; definition to bring up any Queues or Topics that are specific to this &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;ESB&lt;/span&gt; package.&lt;br /&gt;&lt;br /&gt;All the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;ESB&lt;/span&gt; libraries and property files are now consolidated into one &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;jbossesb&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;sar&lt;/span&gt; archive and you can simply deploy the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;esb&lt;/span&gt; archives to the deploy directory. Yes archives (plural), you can deploy multiples of them!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-3242054796139871739?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/3242054796139871739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=3242054796139871739' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3242054796139871739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3242054796139871739'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/03/esb-archive-does-not-end-in-ar.html' title='The esb archive does not end in ar.'/><author><name>Kurt Stam</name><uri>http://www.blogger.com/profile/07418191492358888029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://3.bp.blogspot.com/_fAUX2tnEInU/SoGKASmOx3I/AAAAAAAAAGE/HGxLbl1Doro/S220/kurtstam.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-646674130554894373</id><published>2007-03-05T09:12:00.000-08:00</published><updated>2007-03-05T10:04:51.120-08:00</updated><title type='text'>W3C Workshop Day 2</title><content type='html'>The second day of the &lt;a href="http://www.w3.org/2007/01/wos-ec-program.html"&gt;workshop&lt;/a&gt; was even more interesting then the second one. The theme of this day was "Separate or Together? (i.e. one Web or two?)". The "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;mashup&lt;/span&gt;" technology has demonstrated you can offer up a  Service on the Web and people can use it their applications just fine. Think of the Google maps - Greg's List integration alone. What does this mean for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;WebServices&lt;/span&gt;?  Should the W3C create a REST &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;Description&lt;/span&gt; language (e.g. standardize &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;WADL&lt;/span&gt;)? &lt;a href="http://www.w3.org/2007/01/wos-papers/coactus"&gt;Mark Baker&lt;/a&gt; went as far as saying we don't really need &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;WebServices&lt;/span&gt; at all, but I think the general consensus was that some form of integration of the two world would be a better alternative. Both technologies have their own strengths, but it would be nice of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;WebService&lt;/span&gt; technology would still 'work' on the Web. In other words &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;WebService&lt;/span&gt; should at least support the HTTP/GET, and the URI should be identifying address.&lt;br /&gt;&lt;br /&gt;This brought up a nice discussion on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;EPRs&lt;/span&gt;, which was interesting for me, since &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;JBossESB&lt;/span&gt; is using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;EPRs&lt;/span&gt;. &lt;a href="http://www.w3.org/2007/02/wos-ec-slides/ibm.ppt"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;EPRs&lt;/span&gt; look a lot like &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;URIs&lt;/span&gt;&lt;/a&gt;, but they can contain more information, and they are not &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_12"&gt;identifiers&lt;/span&gt; like &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;URIs&lt;/span&gt; are. In fact an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;EPR&lt;/span&gt; should be able to "fall back" to a URI is its simplest form, in a manner that is consistent with REST. Let's learn from the Web and try to make the Web and Web Services live in Harmony. Both architectures are in use and the market place will determine where these technologies develop. Maybe use the URI part of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;EPR&lt;/span&gt; as identifier. The Web has taught us the power of the URI. Let's see what &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;WADL&lt;/span&gt; can do for REST.&lt;br /&gt;&lt;br /&gt;Finally I wanted to mention a &lt;a href="http://www.w3.org/2007/02/wos-ec-slides/booth.ppt"&gt;presentation by David Booth&lt;/a&gt; on Resource Description Framework (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;RDF&lt;/span&gt;). His point is that to (automated) service interaction is hindered by non-consistent data naming ('&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;babelonization&lt;/span&gt;'). And &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;RDF&lt;/span&gt; provides a framework to describe a piece of data in a standardized manner such that data integration can be automated. Such a framework would reduce the complexity of service integration dramatically. Maybe something our &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;Smooks&lt;/span&gt; engine can take advantage off by generating transformations on the fly.&lt;br /&gt;&lt;br /&gt;It looks like time and the marketplace will tell if and how the two Webs will converge.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-646674130554894373?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/646674130554894373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=646674130554894373' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/646674130554894373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/646674130554894373'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/03/w3c-workshop-day-2.html' title='W3C Workshop Day 2'/><author><name>Kurt Stam</name><uri>http://www.blogger.com/profile/07418191492358888029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://3.bp.blogspot.com/_fAUX2tnEInU/SoGKASmOx3I/AAAAAAAAAGE/HGxLbl1Doro/S220/kurtstam.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-7382734157740139537</id><published>2007-03-02T08:31:00.000-08:00</published><updated>2007-03-02T11:31:17.216-08:00</updated><title type='text'>W3C Workshop Day 1</title><content type='html'>Well last Tuesday I was at a &lt;a href="http://www.w3.org/2007/01/wos-ec-program.html"&gt;workshop&lt;/a&gt; of the W3C. A first for me, and I enjoyed it a lot, after I got the acronyms down that is. I loved having the wikipedia at my fingertips I have to say!&lt;br /&gt;&lt;br /&gt;The first day was titled "What's missing from the picture - new stuff to consider".  The gist of that day was that some people fully embraced Web Services with SOAP and WSDL. The speed of development is great, and there are a great number of extension standards to make Web Services into first class Services. I actually &lt;a href="http://www.w3.org/2007/02/wos-ec-slides/redhat.ppt"&gt;presented&lt;/a&gt; a &lt;a href="http://www.w3.org/2007/01/wos-papers/redhat"&gt;paper&lt;/a&gt; by Mark to push towards a general context standard in Web Services.&lt;br /&gt;&lt;br /&gt;However other voices were calling to "Stop making standards and let's make things work". This quote is from Paul Downey from BT and it resonated with a lot of other people in the meeting. Basically vendors are still working out some interoperability issues and there are no 'best practices' available on how to really use SOAP with all it's WS-* extensions. They were calling on the w3c to provide somekind of test suite and knowledge base. In my humble opinion I see a huge oppertunity for the Open Source community to jump in here, and for the JBossESB in particular.  I think we should lead the way to bring WS-* to the developer community. JBoss has always been very much in touch with the developers, and I think there is an opportunity for the JBossESB team to show how these standards can be used to right way.&lt;br /&gt;&lt;br /&gt;Well I'd love to hear what you think.  Stay tuned for what happened on day 2 of the workshop!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-7382734157740139537?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/7382734157740139537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=7382734157740139537' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/7382734157740139537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/7382734157740139537'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/03/w3c-workshop-day-1.html' title='W3C Workshop Day 1'/><author><name>Kurt Stam</name><uri>http://www.blogger.com/profile/07418191492358888029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://3.bp.blogspot.com/_fAUX2tnEInU/SoGKASmOx3I/AAAAAAAAAGE/HGxLbl1Doro/S220/kurtstam.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-3915835164953266448</id><published>2007-02-27T12:51:00.000-08:00</published><updated>2007-02-27T13:27:31.229-08:00</updated><title type='text'>CORBA with angle brackets?</title><content type='html'>After many years of relative success &lt;a href="http://www.omg.org/"&gt;CORBA&lt;/a&gt; gave way to Web Services. Showing my age, I was at the first OMG meeting where &lt;a href="http://www.stylusstudio.com/xmldev/200009/post00140.html"&gt;SOAP was introduced&lt;/a&gt; and at the time it was generally accepted as &lt;i&gt;a cool way of getting past the firewall&lt;/i&gt; and not a lot more. There was no &lt;a href="http://www.w3.org/TR/ws-arch/"&gt;Web Services architecture&lt;/a&gt; and certainly no grand plans along the lines of &lt;a href="http://www.javaolympus.com/J2SE/NETWORKING/CORBA/CORBAArchitecture.jsp"&gt;the CORBA architecture&lt;/a&gt;. At that time most people were worried about &lt;a href="http://data.uta.edu/~ramesh/cse5306/DCOMComparison.ppt"&gt;CORBA versus DCOM&lt;/a&gt; or &lt;a href="http://www.orbzone.org/?p=50"&gt;CORBA versus J2EE&lt;/a&gt;, and not whether XML over HTTP would become a serious challenger in the &lt;a href="http://en.wikipedia.org/wiki/Enterprise_Application_Integration"&gt;EAI space&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;However, over the years &lt;a href="http://en.wikipedia.org/wiki/Service-oriented_architecture"&gt;SOA&lt;/a&gt; has become more widely accepted and Web Services as the preferred implementation choice. The loosely coupled, long duration nature of inter-organisation interactions suits SOA well and the amount of vendor support for Web Services (&lt;a href="http://www.webservices.org/index.php/weblog/mark_little/soap_for_the_masses"&gt;as well as using HTTP&lt;/a&gt;) makes them a natural fit. The weaknesses of the CORBA and DCOM &lt;a href="http://en.wikipedia.org/wiki/Distributed_object"&gt;distributed object models&lt;/a&gt; have been well reported over the years (and firewall vendors didn't help) and both SOA and Web Services &lt;a href="http://www.pacificspirit.com/blog/2004/01/12/web_services_or_distributed_objects"&gt;proponents have talked about&lt;/a&gt; &lt;a href="allthingsdistributed "&gt;not falling into the same pitfalls&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So it is with some surprise that&lt;a href="http://markclittle.blogspot.com/2007/02/nooooooooooo.html"&gt;I came&lt;/a&gt; across &lt;a href="http://www.w3.org/2007/02/27-wsec-minutes.html#ActionSummary"&gt;this&lt;/a&gt; from the &lt;a href="http://www.w3.org"&gt;W3C TAG&lt;/a&gt;. I don't have a problem with defining state in Web applications, but &lt;a href="http://www.webservices.org/index.php/weblog/mark_little/next_stop_the_twilight_zone"&gt;it's got to be done right&lt;/a&gt; or we will &lt;a href="http://www.w3.org/2007/01/wos-papers/redhat"&gt;revert to the closely-coupled nature of the past&lt;/a&gt;. It's nice to see &lt;a href="http://www.pacificspirit.com/blog/"&gt;Dave saying&lt;/a&gt; that his company's application server uses &lt;a href="http://www.w3.org/TR/2005/CR-ws-addr-core-20050817/"&gt;WS-Addressing&lt;/a&gt; and yet is scalable and fault tolerant, but that doesn't address the point &lt;a href="http://www.arjuna.com/news/press/2004-12-13-ContextInterop-PR.pdf"&gt;we've&lt;/a&gt; been making: &lt;a href="http://blogs.iona.com/newcomer/archives/000442.html"&gt;the general notion of context&lt;/a&gt; is a better approach. It is more scalable and much better suited to loosely coupled interactions. That's why &lt;a href="http://labs.jboss.com/jbossesb"&gt;JBossESB&lt;/a&gt; has had the notion of context at its core from the start.&lt;br /&gt;&lt;br /&gt;Sure, you &lt;i&gt;can&lt;/i&gt; use a tightly coupled interaction pattern like &lt;a href="http://www.omg.org/news/meetings/workshops/RT_2006_Workshop_CD/08-1-Staamann.pdf"&gt;object keys&lt;/a&gt; in your favourite application server or ESB, but that doesn't necessarily make it right. What it does do is make it more complex from implementation, management, scalability, fault tolerance and flexibility perspectives. You may be convinced by your favourite sales person today, but without a suitable loosely coupled architecture at the heart of your SOA infrastructure or ESB, you may repent at leisure!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-3915835164953266448?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/3915835164953266448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=3915835164953266448' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3915835164953266448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/3915835164953266448'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/02/corba-with-angle-brackets.html' title='CORBA with angle brackets?'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-8432187696298698833</id><published>2007-02-25T14:50:00.000-08:00</published><updated>2007-02-25T15:01:18.105-08:00</updated><title type='text'>JBossESB, Web Services, Context and W3C</title><content type='html'>Back in December, &lt;a href="http://markclittle.blogspot.com/2007/01/submit-paper.html"&gt;I was asked&lt;/a&gt; to be on the program committee for the &lt;a href="http://www.w3.org/2006/10/wos-ec-cfp.html#Scope"&gt;W3C Web of Services for Enterprise Computing&lt;/a&gt; workshop. There were &lt;a href="http://www.w3.org/2007/01/wos-ec-program.html"&gt;some great submissions&lt;/a&gt; on a variety of topics, one of which is on &lt;a href="http://www.w3.org/2007/01/wos-papers/redhat"&gt;the need for a general context approach&lt;/a&gt; for Web Services. Unfortunately plans change and I can't attend the workshop, but &lt;a href="http://www.blogger.com/profile/07418191492358888029"&gt;Kurt&lt;/a&gt; has agreed to stand in. Hopefully he'll post a summary of the workshop here, because I think it'll be a great gathering of the various Web Services clans. Furthermore, I'm sure it will influence some of the work we have ahead of us in the JBossESB project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-8432187696298698833?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/8432187696298698833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=8432187696298698833' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/8432187696298698833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/8432187696298698833'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/02/jbossesb-web-services-context-and-w3c.html' title='JBossESB, Web Services, Context and W3C'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8048607794005651608.post-7445524091969413984</id><published>2007-02-19T13:48:00.000-08:00</published><updated>2007-02-19T13:49:40.232-08:00</updated><title type='text'>Welcome</title><content type='html'>Welcome to the &lt;a href="http://labs.jboss.com/jbossesb"&gt;JBossESB&lt;/a&gt; blog site. The team will be updating this regularly with articles and view on ESB, SOA and our product. Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8048607794005651608-7445524091969413984?l=jbossesb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jbossesb.blogspot.com/feeds/7445524091969413984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8048607794005651608&amp;postID=7445524091969413984' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/7445524091969413984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8048607794005651608/posts/default/7445524091969413984'/><link rel='alternate' type='text/html' href='http://jbossesb.blogspot.com/2007/02/welcome.html' title='Welcome'/><author><name>Mark Little</name><uri>http://www.blogger.com/profile/15072917010265365428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry></feed>
