<?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-7850628466108183059</id><updated>2012-03-13T12:16:15.698-07:00</updated><category term='CXF'/><category term='hermesjms'/><category term='amqp'/><category term='macos'/><category term='orioles'/><category term='erlang'/><category term='snow leopard'/><category term='web-console'/><category term='soa'/><category term='maven'/><category term='camel'/><category term='events'/><category term='mina'/><category term='open source'/><category term='linkedin'/><category term='upgrade'/><category term='baltimore'/><category term='openspan'/><category term='shortcut'/><category term='hackathon'/><category term='mouse'/><category term='message'/><category term='inbox'/><category term='keyboard'/><category term='video'/><category term='eclipse'/><category term='priority'/><category term='upm'/><category term='veterans'/><category term='training'/><category term='laptop'/><category term='safari'/><category term='ipanema'/><category term='san diego'/><category term='cep'/><category term='sonic'/><category term='java'/><category term='mysql'/><category term='camelone'/><category term='webservices'/><category term='tracking'/><category term='kaazing'/><category term='order'/><category term='camel-jms'/><category term='groups'/><category term='fusesource'/><category term='cloud'/><category term='composite destinations'/><category term='filter'/><category term='oracle'/><category term='camel-jetty'/><category term='split'/><category term='socket'/><category term='activemq'/><category term='integration'/><category term='ms-sql server'/><category term='mac'/><category term='dropbox'/><category term='broker'/><category term='snmp'/><category term='jms'/><category term='automation'/><category term='notification'/><category term='eip'/><category term='studio'/><category term='servicemix'/><category term='camel-cxf'/><category term='tour'/><category term='virtual destinations'/><category term='consumer'/><category term='fuseide'/><category term='Xcode'/><category term='GrowlMail'/><category term='flexibility'/><category term='apple'/><category term='messaging'/><category term='websockets'/><category term='Finder'/><category term='mail.app'/><category term='plugin'/><category term='camel-mina'/><category term='rabbitmq'/><category term='image'/><category term='code-based'/><category term='aggregator'/><category term='letterbox'/><category term='file'/><category term='database'/><category term='apache'/><category term='hackday'/><category term='JMSXGroupID'/><category term='camel-jdbc'/><category term='splitter'/><category term='sao paulo'/><category term='gettingstarted'/><category term='Alfred'/><category term='brazil'/><category term='exclusive'/><category term='sql'/><category term='dictionary'/><category term='coffee'/><category term='rio de janeiro'/><category term='TruePreview'/><category term='Alfred.app'/><category term='run'/><category term='progress'/><category term='gmail'/><title type='text'>The Message</title><subtitle type='html'>Thoughts about what I think it's interesting...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>49</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-5685299664440645026</id><published>2012-03-08T23:01:00.000-08:00</published><updated>2012-03-08T23:01:03.987-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rabbitmq'/><category scheme='http://www.blogger.com/atom/ns#' term='amqp'/><category scheme='http://www.blogger.com/atom/ns#' term='erlang'/><category scheme='http://www.blogger.com/atom/ns#' term='messaging'/><category scheme='http://www.blogger.com/atom/ns#' term='kaazing'/><title type='text'>How to Setup RabbitMQ Message Broker with Kaazing WebSocket Gateway - AMQP Edition</title><content type='html'>If you want to try the &lt;a href="http://kaazing.com/products/amqp-edition" target="_blank"&gt;Kaazing WebSocket Gateway - AMQP Edition&lt;/a&gt; with &lt;a href="http://www.rabbitmq.com/download.html" target="_blank"&gt;RabbitMQ&lt;/a&gt;, take a look on the following steps...&lt;br /&gt;&lt;br /&gt;If you are trying this setup on a Mac, make sure you have Erlang already installed otherwise have a look on my previous post on &lt;a href="http://marcelojabali.blogspot.com/2012/03/installing-erlang-on-mac-os-x-snow.html" target="_blank"&gt;How to Install Erlang on Mac OS X Snow Leopard&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Install RabbitMQ&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;- Download RabbitMQ from &lt;a href="http://www.rabbitmq.com/download.html"&gt;http://www.rabbitmq.com/download.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Extract the file to the desired directory&lt;br /&gt;&lt;br /&gt;- Navigate to RabbitMQ installation directory and run the following command:&lt;br /&gt;&lt;br /&gt;$ sbin/rabbitmq-server&lt;br /&gt;&lt;br /&gt;If RabbitMQ is started correctly you should see a message similar to the following:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Activating RabbitMQ plugins ...&lt;br /&gt;&lt;br /&gt;********************************************************************************&lt;br /&gt;********************************************************************************&lt;br /&gt;&lt;br /&gt;0 plugins activated:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;+---+ &amp;nbsp; +---+&lt;br /&gt;| &amp;nbsp; | &amp;nbsp; | &amp;nbsp; |&lt;br /&gt;| &amp;nbsp; | &amp;nbsp; | &amp;nbsp; |&lt;br /&gt;| &amp;nbsp; | &amp;nbsp; | &amp;nbsp; |&lt;br /&gt;| &amp;nbsp; +---+ &amp;nbsp; +-------+&lt;br /&gt;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;| RabbitMQ &amp;nbsp;+---+ &amp;nbsp; |&lt;br /&gt;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | &amp;nbsp; | &amp;nbsp; |&lt;br /&gt;| &amp;nbsp; v2.7.1 &amp;nbsp;+---+ &amp;nbsp; |&lt;br /&gt;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&lt;br /&gt;+-------------------+&lt;br /&gt;AMQP 0-9-1 / 0-9 / 0-8&lt;br /&gt;Copyright (C) 2007-2011 VMware, Inc.&lt;br /&gt;Licensed under the MPL. &amp;nbsp;See http://www.rabbitmq.com/&lt;br /&gt;&lt;br /&gt;node &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : rabbit@yoda&lt;br /&gt;app descriptor : /Applications/Kaazing/kaazing-websocket-gateway-amqp-3.2.0/rabbitmq_server-2.7.1/sbin/../ebin/rabbit.app&lt;br /&gt;home dir &amp;nbsp; &amp;nbsp; &amp;nbsp; : /Users/Marcelo&lt;br /&gt;config file(s) : (none)&lt;br /&gt;cookie hash &amp;nbsp; &amp;nbsp;: AYkkciNJ6lsr2dyADBN8ww==&lt;br /&gt;log &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: /Applications/Kaazing/kaazing-websocket-gateway-amqp-3.2.0/rabbitmq_server-2.7.1/work/rabbitmq/rabbit@yoda.log&lt;br /&gt;sasl log &amp;nbsp; &amp;nbsp; &amp;nbsp; : /Applications/Kaazing/kaazing-websocket-gateway-amqp-3.2.0/rabbitmq_server-2.7.1/work/rabbitmq/rabbit@yoda-sasl.log&lt;br /&gt;database dir &amp;nbsp; : /Applications/Kaazing/kaazing-websocket-gateway-amqp-3.2.0/rabbitmq_server-2.7.1/work/rabbitmq/mnesia/rabbit@yoda&lt;br /&gt;erlang version : 5.9&lt;br /&gt;&lt;br /&gt;-- rabbit boot start&lt;br /&gt;starting file handle cache server &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...done&lt;br /&gt;starting worker pool &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;...done&lt;br /&gt;starting database &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...done&lt;br /&gt;starting codec correctness check &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;...done&lt;br /&gt;-- external infrastructure ready&lt;br /&gt;starting plugin registry &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;...done&lt;br /&gt;starting auth mechanism cr-demo &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...done&lt;br /&gt;starting auth mechanism amqplain &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;...done&lt;br /&gt;starting auth mechanism plain &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...done&lt;br /&gt;starting statistics event manage &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;...done&lt;br /&gt;starting logging server &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...done&lt;br /&gt;starting exchange type direct &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...done&lt;br /&gt;starting exchange type fanout &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...done&lt;br /&gt;starting exchange type headers &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;...done&lt;br /&gt;starting exchange type topic &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;...done&lt;br /&gt;-- kernel ready&lt;br /&gt;starting alarm handler &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;...done&lt;br /&gt;starting node monitor &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...done&lt;br /&gt;starting cluster delegate &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...done&lt;br /&gt;starting guid generator &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...done&lt;br /&gt;starting memory monitor &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...done&lt;br /&gt;-- core initialized&lt;br /&gt;starting empty DB check &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...done&lt;br /&gt;starting exchange, queue and binding recovery &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...done&lt;br /&gt;starting mirror queue slave sup &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...done&lt;br /&gt;starting adding mirrors to queues &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...done&lt;br /&gt;-- message delivery logic ready&lt;br /&gt;starting error log relay &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;...done&lt;br /&gt;starting networking &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...done&lt;br /&gt;starting direct_client &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;...done&lt;br /&gt;starting notify cluster nodes &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...done&lt;br /&gt;&lt;br /&gt;broker running&amp;nbsp;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Install and Run Kaazing WebSocket Gateway - AMQP Edition&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;- Download and install Kaazing WebSocket Gateway - AMQP Edition&lt;br /&gt;&lt;br /&gt;- Navigate to the Kaazing WebSocket Gateway installation directory and start it using the following command:&lt;br /&gt;&lt;br /&gt;$ bin/gateway.start&lt;br /&gt;&lt;br /&gt;Open your web browser of choice and navigate to http://localhost:8001 then select DEMOS on top menu.&lt;br /&gt;&lt;br /&gt;At this point, you should be able to run any of the demos available using RabbitMQ as the backend messaging system.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-5685299664440645026?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/5685299664440645026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2012/03/how-to-setup-rabbitmq-message-broker.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/5685299664440645026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/5685299664440645026'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2012/03/how-to-setup-rabbitmq-message-broker.html' title='How to Setup RabbitMQ Message Broker with Kaazing WebSocket Gateway - AMQP Edition'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-416137221655406513</id><published>2012-03-05T16:42:00.000-08:00</published><updated>2012-03-05T16:44:56.979-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='websockets'/><category scheme='http://www.blogger.com/atom/ns#' term='amqp'/><category scheme='http://www.blogger.com/atom/ns#' term='macos'/><category scheme='http://www.blogger.com/atom/ns#' term='erlang'/><category scheme='http://www.blogger.com/atom/ns#' term='Xcode'/><category scheme='http://www.blogger.com/atom/ns#' term='snow leopard'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><category scheme='http://www.blogger.com/atom/ns#' term='kaazing'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Installing Erlang on Mac OS X Snow Leopard</title><content type='html'>I'm working with a customer who is using the &lt;a href="http://kaazing.com/products/amqp-edition" target="_blank"&gt;Kaazing WebSocket Gateway - AMQP Edition&lt;/a&gt; with &lt;a href="http://www.rabbitmq.com/" target="_blank"&gt;RabbitMQ&lt;/a&gt; and while his install was pretty straightforward on Windows 7 I thought the same would be applicable to my case (a Mac user). Well, to summarize the process, it was quite of a challenge to get everything working, not from the complexity perspective but for the number of steps involved in the process to get the environment running starting from the point that &lt;a href="http://www.rabbitmq.com/" target="_blank"&gt;RabbitMQ&lt;/a&gt; depends on &lt;a href="http://www.erlang.org/" target="_blank"&gt;Erlang&lt;/a&gt; to run. So, that was the first step... Installing Erlang on &lt;a href="http://www.apple.com/macosx/" target="_blank"&gt;Mac OS X&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here are the steps I had to take:&lt;br /&gt;&lt;br /&gt;- Download and install &lt;a href="https://developer.apple.com/technologies/mac/#xcode" target="_blank"&gt;Apple Xcode&lt;/a&gt; 4.3 from Apple's AppStore (yeah, you read it right!)&lt;br /&gt;&lt;br /&gt;- The tricky part here was to enable Command Line Tools which is not selected by default in Xcode. To do that, go to Xcode Preferences --&amp;gt; Downloads --&amp;gt; Components and install Command Line Tools. It's just another 170MB over the already downloaded 1.35GB of Xcode :)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-NzERO9kRS8M/T1VbzZLkfnI/AAAAAAAAAKQ/CqDVePus7hU/s1600/xcode.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="183" src="http://3.bp.blogspot.com/-NzERO9kRS8M/T1VbzZLkfnI/AAAAAAAAAKQ/CqDVePus7hU/s400/xcode.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;- Download Erlang latest release from&amp;nbsp;&lt;a href="http://www.erlang.org/download.html" target="_blank"&gt;http://www.erlang.org/download.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Extract the Erlang package (i.e. tar -xvf otp_src_R15B.tar) and navigate into the recently created directory&lt;br /&gt;&lt;br /&gt;- Run ./configure&lt;br /&gt;&lt;br /&gt;- Run ./make&lt;br /&gt;&lt;br /&gt;- Run sudo make install&lt;br /&gt;&lt;br /&gt;Hope this help you to get your project going...&lt;br /&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/7850628466108183059-416137221655406513?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/416137221655406513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2012/03/installing-erlang-on-mac-os-x-snow.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/416137221655406513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/416137221655406513'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2012/03/installing-erlang-on-mac-os-x-snow.html' title='Installing Erlang on Mac OS X Snow Leopard'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-NzERO9kRS8M/T1VbzZLkfnI/AAAAAAAAAKQ/CqDVePus7hU/s72-c/xcode.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-2054721104898518676</id><published>2012-02-27T08:55:00.001-08:00</published><updated>2012-02-27T08:55:03.987-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='websockets'/><category scheme='http://www.blogger.com/atom/ns#' term='jms'/><category scheme='http://www.blogger.com/atom/ns#' term='kaazing'/><title type='text'>Quick Start with the Kaazing WebSocket Gateway in Less Than 6 Minutes</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; line-height: 24px; margin-bottom: 24px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;One of my colleagues at &lt;a href="http://www.kaazing.com/" target="_blank"&gt;Kaazing&lt;/a&gt; just recorded a very nice tutorial on how to get started with the &lt;a href="http://kaazing.com/products/kaazing-websocket-gateway" target="_blank"&gt;Kaazing WebSocket Gateway&lt;/a&gt; using the extreme powerful &lt;a href="http://kaazing.com/products/jms-edition" target="_blank"&gt;JMS Edition&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; line-height: 24px; margin-bottom: 24px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;div style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; line-height: 24px; margin-bottom: 24px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;It only takes a few minutes to download, install, start up, and try out the &lt;a href="http://kaazing.com/download.html" target="_blank"&gt;Kaazing WebSocket Gateway&lt;/a&gt;. So, it's really worth it...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;You can take a peek here:&amp;nbsp;&lt;a href="http://vimeo.com/36919680" target="_blank"&gt;http://vimeo.com/36919680&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; line-height: 24px; margin-bottom: 24px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Enjoy...&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-2054721104898518676?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/2054721104898518676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2012/02/quick-start-with-kaazing-websocket.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/2054721104898518676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/2054721104898518676'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2012/02/quick-start-with-kaazing-websocket.html' title='Quick Start with the Kaazing WebSocket Gateway in Less Than 6 Minutes'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-8380323538506246206</id><published>2012-02-27T08:51:00.000-08:00</published><updated>2012-02-27T08:53:50.981-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='websockets'/><category scheme='http://www.blogger.com/atom/ns#' term='kaazing'/><title type='text'>Moving On...</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Well, it has been a while since I updated this blog and there are many reasons just to say that I wasn't motivated enough to write anything lately. Some personal issues as well as another job change associated with a short vacation contributed to the delay but the good part is that I'm back and really happy with how the year is shaping up.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;It seems to be that all personal stuff is sorted out and I also have decided to join &lt;a href="http://kaazing.com/" target="_blank"&gt;Kaazing&lt;/a&gt; as a Solutions Architect. &lt;a href="http://kaazing.com/" target="_blank"&gt;Kaazing&lt;/a&gt;&amp;nbsp;is the first Enterprise-grade Web Communications Platform leveraging &lt;a href="http://websocket.org/" target="_blank"&gt;HTML5 WebSockets&lt;/a&gt;&amp;nbsp;designed for real-time, massive scalability and providing reliability necessary for companies to deploy those kind of solutions over the web.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;If you're not familiar with HTML5 and WebSockets and I'd recommend you to take a look on the following presentation available at &lt;span class="Apple-style-span" style="background-color: white; border-color: initial; border-style: initial; line-height: 15px; outline-color: initial; outline-width: initial;"&gt;&lt;u&gt;&lt;a href="http://www.infoq.com/presentations/WebSockets-The-Web-Communication-Revolution" style="color: #006699;" target="_blank"&gt;http://www.infoq.com/presentations/WebSockets-The-Web-Communication-Revolution&lt;/a&gt;.&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; border-color: initial; border-style: initial; font-family: Arial, Helvetica, sans-serif; line-height: 15px; outline-color: initial; outline-width: initial;"&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; line-height: 15px;"&gt;Stay tuned for more...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, 'Nimbus Sans L', sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="line-height: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-8380323538506246206?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/8380323538506246206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2012/02/moving-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/8380323538506246206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/8380323538506246206'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2012/02/moving-on.html' title='Moving On...'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-2043307518299981668</id><published>2011-12-27T11:55:00.000-08:00</published><updated>2011-12-27T11:55:00.895-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='gettingstarted'/><category scheme='http://www.blogger.com/atom/ns#' term='camel-cxf'/><category scheme='http://www.blogger.com/atom/ns#' term='aggregator'/><category scheme='http://www.blogger.com/atom/ns#' term='camel-jms'/><category scheme='http://www.blogger.com/atom/ns#' term='fusesource'/><category scheme='http://www.blogger.com/atom/ns#' term='activemq'/><category scheme='http://www.blogger.com/atom/ns#' term='camel'/><category scheme='http://www.blogger.com/atom/ns#' term='splitter'/><category scheme='http://www.blogger.com/atom/ns#' term='eip'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='webservices'/><title type='text'>Getting Started with Apache Camel (Video)</title><content type='html'>&lt;div style="text-align: justify;"&gt;In this video demonstration, published on the &lt;a href="http://www.youtube.com/user/FuseSource" target="_blank"&gt;FuseSource YouTube channel&lt;/a&gt;, you're going to see how to get started with &lt;a href="http://camel.apache.org/" target="_blank"&gt;Apache Camel&lt;/a&gt; (&lt;a href="http://fusesource.com/products/enterprise-camel/" target="_blank"&gt;FUSE Mediation Router&lt;/a&gt;) on a real world scenario working with a Composed &lt;a href="http://camel.apache.org/eip" target="_blank"&gt;Enterprise Integration Pattern &lt;/a&gt;(&lt;a href="http://fusesource.com/docs/router/2.8/eip/front.html" target="_blank"&gt;FUSE EIP&lt;/a&gt;).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The video demonstration talks about a Book Shop example application that receives a message from a JMS source, in this case &lt;a href="http://activemq.apache.org/" target="_blank"&gt;Apache ActiveMQ&lt;/a&gt; / &lt;a href="http://fusesource.com/products/enterprise-activemq/" target="_blank"&gt;FUSE Message Broker&lt;/a&gt; and then &lt;a href="http://camel.apache.org/splitter.html" target="_blank"&gt;split the message&lt;/a&gt; according to number of orders available in the message, then based on the &lt;a href="http://camel.apache.org/content-based-routing-on-camel.html" target="_blank"&gt;content the message is going to be routed&lt;/a&gt; to different &lt;a href="http://camel.apache.org/cxf.html" target="_blank"&gt;web services endpoints&lt;/a&gt; (provided by &lt;a href="http://cxf.apache.org/" target="_blank"&gt;Apache CXF&lt;/a&gt; / &lt;a href="http://fusesource.com/products/enterprise-cxf/" target="_blank"&gt;FUSE Services Framework&lt;/a&gt;), after that the requests to the web services are then aggregated through the &lt;a href="http://camel.apache.org/aggregator.html" target="_blank"&gt;Apache Camel aggregator component&lt;/a&gt; and finally the resulting message is sent to a response JMS queue.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://1.gvt0.com/vi/TQUsb8Dokak/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/TQUsb8Dokak&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/TQUsb8Dokak&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;Enjoy the ride...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-2043307518299981668?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/2043307518299981668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/12/getting-started-with-apache-camel-video.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/2043307518299981668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/2043307518299981668'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/12/getting-started-with-apache-camel-video.html' title='Getting Started with Apache Camel (Video)'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-5996603428304800504</id><published>2011-11-30T22:47:00.001-08:00</published><updated>2011-12-01T17:23:49.813-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='activemq'/><category scheme='http://www.blogger.com/atom/ns#' term='integration'/><category scheme='http://www.blogger.com/atom/ns#' term='jms'/><category scheme='http://www.blogger.com/atom/ns#' term='broker'/><category scheme='http://www.blogger.com/atom/ns#' term='fusesource'/><category scheme='http://www.blogger.com/atom/ns#' term='flexibility'/><category scheme='http://www.blogger.com/atom/ns#' term='composite destinations'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='message'/><category scheme='http://www.blogger.com/atom/ns#' term='virtual destinations'/><title type='text'>Virtual and Composite Destinations with Apache ActiveMQ</title><content type='html'>&lt;a href="http://activemq.apache.org/" target="_blank"&gt;Apache ActiveMQ&lt;/a&gt; / &lt;a href="http://fusesource.com/products/enterprise-activemq/" target="_blank"&gt;FUSE Message Broker&lt;/a&gt; has a feature called &lt;a href="http://fusesource.com/docs/broker/5.5/prod_intro/FMBProdIntroFlexibility.html#d0e1609" target="_blank"&gt;Virtual Destinations&lt;/a&gt; that are logical destinations (queues or topics) mapped to one or more physical destinations.&lt;br /&gt;&lt;br /&gt;There are many benefits for using &lt;a href="http://activemq.apache.org/virtual-destinations.html" target="_blank"&gt;Virtual Destinations&lt;/a&gt; with ActiveMQ but basically you can forward messages from one JMS destination to many destinations (mixing queues and topics if you want), route messages to target destinations based on message headers (a.k.a broker-based message routing) and create highly-available load-balanced durable subscribers.&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/-ZcYJxv-jBKg/TtgeQ_H9o7I/AAAAAAAAAKA/29kP16_qGAI/s1600/07-Virtual-Destinations.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-ZcYJxv-jBKg/TtgeQ_H9o7I/AAAAAAAAAKA/29kP16_qGAI/s1600/07-Virtual-Destinations.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;As an example, looking in the diagram above, you can have a Virtual Destination called &lt;i&gt;q1&lt;/i&gt;, where applications will send messages to as they do to any other regular queue, and then the message will get propagated to a real physical queue called &lt;i&gt;q1&lt;/i&gt;, to a real queue physical queue called &lt;i&gt;Q2&lt;/i&gt; and also to a topic called &lt;i&gt;T1&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;The example above is called &lt;a href="http://activemq.apache.org/composite-destinations.html" target="_blank"&gt;Composite Destinations&lt;/a&gt; and the idea behind it is to map a Virtual Destinations to a hard-wired collection of physical destinations. From the JMS client application perspective there is nothing you'll need to change since all the configuration happens at the broker level.&lt;br /&gt;&lt;br /&gt;So, let's look on what need to be done to work with Virtual and Composite Destinations with ActiveMQ.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-0G9B0IKIbBA/Ttggnn47UrI/AAAAAAAAAKI/aDzH7QtUwLI/s1600/07-Virtual-Destinations-2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="148" src="http://2.bp.blogspot.com/-0G9B0IKIbBA/Ttggnn47UrI/AAAAAAAAAKI/aDzH7QtUwLI/s400/07-Virtual-Destinations-2.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;The diagram above represents the idea of having producer P sending messages to a queue called &lt;i&gt;CompositeQueue.q &lt;/i&gt;(it doesn't have to be called that way).&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;That queue is rooting messages to a topic called &lt;i&gt;Topic.a&lt;/i&gt; and a queue called &lt;i&gt;Queue.b&lt;/i&gt;.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;All of the required configuration is done in the ActiveMQ XML configuration file. Below, there is snippet of the broker configuration file where the above example is configured.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="line-height: 14px;"&gt;&lt;!--StartFragment--&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; font-family: Arial; margin-bottom: 0pt; margin-left: 0.3in; margin-top: 6pt; text-align: left; text-indent: -0.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&amp;lt;broker...&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; font-family: Arial; margin-bottom: 0pt; margin-left: 0.3in; margin-top: 6pt; text-align: left; text-indent: -0.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;destinationInterceptors&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; font-family: Arial; margin-bottom: 0pt; margin-left: 0.3in; margin-top: 6pt; text-align: left; text-indent: -0.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;virtualDestinationInterceptor&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; font-family: Arial; margin-bottom: 0pt; margin-left: 0.3in; margin-top: 6pt; text-align: left; text-indent: -0.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;virtualDestinations&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; font-family: Arial; margin-bottom: 0pt; margin-left: 0.3in; margin-top: 6pt; text-align: left; text-indent: -0.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'; font-weight: bold;"&gt;compositeQueue&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;name=&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;“&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'; font-weight: bold;"&gt;CompositeQueue.q&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;"&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; font-family: Arial; margin-bottom: 0pt; margin-left: 0.3in; margin-top: 6pt; text-align: left; text-indent: -0.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'; font-weight: bold;"&gt;forwardTo&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; font-family: Arial; margin-bottom: 0pt; margin-left: 0.3in; margin-top: 6pt; text-align: left; text-indent: -0.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'; font-weight: bold;"&gt;topic&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;physicalName&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;=&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;“&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'; font-weight: bold;"&gt;Topic.a&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;"/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; font-family: Arial; margin-bottom: 0pt; margin-left: 0.3in; margin-top: 6pt; text-align: left; text-indent: -0.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'; font-weight: bold;"&gt;queue&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;physicalName&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;=&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;“&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'; font-weight: bold;"&gt;Queue.b&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;"/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; font-family: Arial; margin-bottom: 0pt; margin-left: 0.3in; margin-top: 6pt; text-align: left; text-indent: -0.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'; font-weight: bold;"&gt;forwardTo&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; font-family: Arial; margin-bottom: 0pt; margin-left: 0.3in; margin-top: 6pt; text-align: left; text-indent: -0.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'; font-weight: bold;"&gt;compositeQueue&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; font-family: Arial; margin-bottom: 0pt; margin-left: 0.3in; margin-top: 6pt; text-align: left; text-indent: -0.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;virtualDestinations&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; font-family: Arial; margin-bottom: 0pt; margin-left: 0.3in; margin-top: 6pt; text-align: left; text-indent: -0.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;virtualDestinationInterceptor&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; font-family: Arial; margin-bottom: 0pt; margin-left: 0.3in; margin-top: 6pt; text-align: left; text-indent: -0.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;destinationInterceptors&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; font-family: Arial; margin-bottom: 0pt; margin-left: 0.3in; margin-top: 6pt; text-align: left; text-indent: -0.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&amp;lt;/broker&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;The interesting thing here is that you can mix queues and topics without making any changes in the client code and this is not part of the JMS specification.&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;You can also extend that to use composite topics pretty much on the same way… Below you'll find a similar broker configuration to use Virtual Topics:&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;!--StartFragment--&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: .3in; margin-top: 6.0pt; mso-line-break-override: restrictions; punctuation-wrap: simple; text-align: left; text-indent: -.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&amp;lt;broker...&amp;gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: .3in; margin-top: 6.0pt; mso-line-break-override: restrictions; punctuation-wrap: simple; text-align: left; text-indent: -.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;destinationInterceptors&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: .3in; margin-top: 6.0pt; mso-line-break-override: restrictions; punctuation-wrap: simple; text-align: left; text-indent: -.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;virtualDestinationInterceptor&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: .3in; margin-top: 6.0pt; mso-line-break-override: restrictions; punctuation-wrap: simple; text-align: left; text-indent: -.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;virtualDestinations&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: .3in; margin-top: 6.0pt; mso-line-break-override: restrictions; punctuation-wrap: simple; text-align: left; text-indent: -.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: #00dfca; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'; font-weight: bold;"&gt;virtualTopic&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;name=&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;“&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'; font-weight: bold;"&gt;VirtualTopic.A&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;"/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: .3in; margin-top: 6.0pt; mso-line-break-override: restrictions; punctuation-wrap: simple; text-align: left; text-indent: -.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'; font-weight: bold;"&gt;forwardTo&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: .3in; margin-top: 6.0pt; mso-line-break-override: restrictions; punctuation-wrap: simple; text-align: left; text-indent: -.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'; font-weight: bold;"&gt;queue&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;physicalName&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;="&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'; font-weight: bold;"&gt;FOO&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;"/&amp;gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: .3in; margin-top: 6.0pt; mso-line-break-override: restrictions; punctuation-wrap: simple; text-align: left; text-indent: -.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'; font-weight: bold;"&gt;topic&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;physicalName&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;="&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'; font-weight: bold;"&gt;BAR&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;"/&amp;gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: .3in; margin-top: 6.0pt; mso-line-break-override: restrictions; punctuation-wrap: simple; text-align: left; text-indent: -.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'; font-weight: bold;"&gt;forwardTo&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: .3in; margin-top: 6.0pt; mso-line-break-override: restrictions; punctuation-wrap: simple; text-align: left; text-indent: -.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'; font-weight: bold;"&gt;virtualDestinations&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: .3in; margin-top: 6.0pt; mso-line-break-override: restrictions; punctuation-wrap: simple; text-align: left; text-indent: -.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;virtualDestinationInterceptor&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: .3in; margin-top: 6.0pt; mso-line-break-override: restrictions; punctuation-wrap: simple; text-align: left; text-indent: -.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;destinationInterceptors&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: .3in; margin-top: 6.0pt; mso-line-break-override: restrictions; punctuation-wrap: simple; text-align: left; text-indent: -.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&amp;nbsp; &amp;lt;/broker&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: .3in; margin-top: 6.0pt; mso-line-break-override: restrictions; punctuation-wrap: simple; text-align: left; text-indent: -.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: .3in; margin-top: 6.0pt; mso-line-break-override: restrictions; punctuation-wrap: simple; text-align: left; text-indent: -.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;So, with a simple change in the ActiveMQ broker configuration you can dramatically change the way&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: .3in; margin-top: 6.0pt; mso-line-break-override: restrictions; punctuation-wrap: simple; text-align: left; text-indent: -.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;the system works and extend it to your needs without changing the client application.&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: .3in; margin-top: 6.0pt; mso-line-break-override: restrictions; punctuation-wrap: simple; text-align: left; text-indent: -.3in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;!--EndFragment--&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-5996603428304800504?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/5996603428304800504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/11/virtual-and-composite-destinations-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/5996603428304800504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/5996603428304800504'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/11/virtual-and-composite-destinations-with.html' title='Virtual and Composite Destinations with Apache ActiveMQ'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-ZcYJxv-jBKg/TtgeQ_H9o7I/AAAAAAAAAKA/29kP16_qGAI/s72-c/07-Virtual-Destinations.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-1995308607882212101</id><published>2011-11-25T16:46:00.001-08:00</published><updated>2011-11-25T20:18:16.843-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='activemq'/><category scheme='http://www.blogger.com/atom/ns#' term='integration'/><category scheme='http://www.blogger.com/atom/ns#' term='JMSXGroupID'/><category scheme='http://www.blogger.com/atom/ns#' term='groups'/><category scheme='http://www.blogger.com/atom/ns#' term='jms'/><category scheme='http://www.blogger.com/atom/ns#' term='fusesource'/><category scheme='http://www.blogger.com/atom/ns#' term='order'/><category scheme='http://www.blogger.com/atom/ns#' term='messaging'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='message'/><title type='text'>Load-balanced Ordered Message Processing with Apache ActiveMQ</title><content type='html'>&lt;div style="text-align: justify;"&gt;On my previous post (&lt;a href="http://marcelojabali.blogspot.com/2011/11/preserving-message-order-with-apache.html" target="_blank"&gt;Preserving Message Order with Apache ActiveMQ&lt;/a&gt;) we took a look on what would be necessary to preserve message order using &lt;a href="http://activemq.apache.org/" target="_blank"&gt;Apache ActiveMQ&lt;/a&gt;&amp;nbsp;(&lt;a href="http://fusesource.com/products/enterprise-activemq/" target="_blank"&gt;FUSE Message Broker&lt;/a&gt;). We then explored on the ActiveMQ capabilities called &lt;a href="http://fusesource.com/docs/broker/5.5/prod_intro/FMBProdIntroReliability.html#FMBExclusiveCons" target="_blank"&gt;Exclusive Consumers&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;But, Exclusive Consumers bring one disadvantage that is having active consumers not doing anything (actually not consuming messages) and that may be not the desired behavior. So, let's take a look on how ActiveMQ (FUSE Message Broker) can help to avoid that situation and explore what capabilities and/or techniques are available to process messages in order when multiple consumers are active.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;ActiveMQ has a feature called &lt;a href="http://fusesource.com/docs/broker/5.5/prod_intro/FMBProdIntroReliability.html#FMBMsgGroups" target="_blank"&gt;Message Groups&lt;/a&gt;&amp;nbsp;which is the way to load balance multiple active consumers listening to the same queue while preserving message order. ActiveMQ will then group messages on the queue and it will guarantee that all messages of a particular group arrive in order on the same consumer.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;So, to give you an example, let's say we're processing records about drivers (adding new drivers, updating drivers' information, processing speed tickets, revoking tickets, etc). You definitely don't want to process the revoke information before the ticket record because that would cause a lot of problems when the ticket doesn't exist yet and the application will try to update its information. Then, to solve that problem we could group messages by driver's license number and then let the message broker process them accordingly. Now, from the global sense the messages may not be processed in order but from the important business application sense of related messages they are delivered in the preserved order.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In the picture below, messages addressed with the same &lt;a href="http://fusesource.com/docs/broker/5.5/prod_intro/FMBProdIntroReliability.html#FMBMsgGroups" target="_blank"&gt;JMSXGroupID&lt;/a&gt;, in this case "GRP1" and "GRP2", will be pushed to a unique consumer, in other words, Consumer A will get messages that contain the JMSXGroupID equals to GRP1 and Consumer B will get messages that contain the property JMSXGroupID equals to GRP2.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Xdw4JD57Xdo/TtBgj6pqo0I/AAAAAAAAAJ4/DjIS04rZVpY/s1600/message-groups-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="170" src="http://2.bp.blogspot.com/-Xdw4JD57Xdo/TtBgj6pqo0I/AAAAAAAAAJ4/DjIS04rZVpY/s400/message-groups-1.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;In summary, ActiveMQ will correlate messages based on the property JMSXGroupsID and will deliver those to the same consumer.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;On a side note, messages without a group (meaning messages with no value specified in the &lt;a href="http://activemq.apache.org/message-groups.html" target="_blank"&gt;JMSXGroupID&lt;/a&gt; header property) will be distributed (load balanced) among active consumers as they would be in the normal ActiveMQ queue message processing.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;But, how to implement message groups?&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Very simple… the only thing you have to do is to set the JMSXGroupID property on the client producer before you send the message with whatever value you want to use for correlation. The broker itself will take care of everything else for you.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Here is a snippet of a Java client producer creating a JMS Text Message and then setting the JMSXGroupID property:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;!--StartFragment--&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: .81in; margin-top: 6.0pt; mso-line-break-override: restrictions; punctuation-wrap: simple; text-align: left; text-indent: -.31in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;Message message =&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;session.createTextMessage&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;(&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;“&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&amp;lt;foo&amp;gt;hey&amp;lt;/foo&amp;gt;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;”&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: .81in; margin-top: 6.0pt; mso-line-break-override: restrictions; punctuation-wrap: simple; text-align: left; text-indent: -.31in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;message.setStringProperty&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;(&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;“&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'; font-weight: bold;"&gt;JMSXGroupID&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;”&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;,&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;“&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'; font-weight: bold;"&gt;Msg_group_1&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;”&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;!--EndFragment--&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;In the example above, all messages in the queue with JMSXGroupID set to Msg_group_1 will be directed exclusively to a single consumer.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;How the messages reach the correct consumer then?&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Well, the message broker maintains an internal hash map with the Group IDs and the consumers receiving messages for that specific group.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;The consumer will then receive messages for that group until it drops the connection or a producer closes the message group by sending a message with a property called &lt;a href="http://activemq.apache.org/message-groups.html" target="_blank"&gt;JMSXGroupSeq&lt;/a&gt;&amp;nbsp;containing the value of -1 (minus one). That's going to be the flag telling the message broker that the group is no longer needed and the reference in the hash table can be removed.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;For new message groups, the broker does a random selection of the active consumers and then start placing messages on that consumer.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;So, to illustrate how to close a group, the following code shows the Java producer client closing the Msg_Group_1:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: 0.66in; margin-right: 0px; margin-top: 6pt; text-align: left; text-indent: -0.24in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;Message message =&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;session.createTextMessage&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;(&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;“&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&amp;lt;foo&amp;gt;bar&amp;lt;/foo&amp;gt;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;”&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: 0.66in; margin-right: 0px; margin-top: 6pt; text-align: left; text-indent: -0.24in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;message.setStringProperty&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;(&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;“&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;JMSXGroupID&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;”&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;“&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;Msg_group_1&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;”&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: 0.66in; margin-right: 0px; margin-top: 6pt; text-align: left; text-indent: -0.24in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;message.setIntProperty&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;(&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;“&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'; font-weight: bold;"&gt;JMSXGroupSeq&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;”&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'; font-weight: bold;"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New'; font-weight: bold;"&gt;-1&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: 0.66in; margin-right: 0px; margin-top: 6pt; text-align: left; text-indent: -0.24in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;producer.send&lt;/span&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;(message);&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: 0.66in; margin-right: 0px; margin-top: 6pt; text-align: left; text-indent: -0.24in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: 'Courier New';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Then, if another message is sent to the same message group ID, the message broker will handle that as a new message group randomly assigned to a new consumer.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: 0.66in; margin-top: 6pt; text-align: justify; text-indent: -0.24in; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;!--EndFragment--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-1995308607882212101?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/1995308607882212101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/11/load-balanced-ordered-message.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/1995308607882212101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/1995308607882212101'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/11/load-balanced-ordered-message.html' title='Load-balanced Ordered Message Processing with Apache ActiveMQ'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Xdw4JD57Xdo/TtBgj6pqo0I/AAAAAAAAAJ4/DjIS04rZVpY/s72-c/message-groups-1.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-1341720484539618253</id><published>2011-11-17T09:35:00.001-08:00</published><updated>2011-11-17T13:24:41.774-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='activemq'/><category scheme='http://www.blogger.com/atom/ns#' term='jms'/><category scheme='http://www.blogger.com/atom/ns#' term='priority'/><category scheme='http://www.blogger.com/atom/ns#' term='exclusive'/><category scheme='http://www.blogger.com/atom/ns#' term='order'/><category scheme='http://www.blogger.com/atom/ns#' term='messaging'/><category scheme='http://www.blogger.com/atom/ns#' term='consumer'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='message'/><title type='text'>Preserving Message Order with Apache ActiveMQ</title><content type='html'>&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;There are some use cases and business scenarios where you have to process messages in order. Basically, when multiple consumers receive messages from a queue and process them in parallel, message order is not preserved.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://activemq.apache.org/"&gt;Apache ActiveMQ&lt;/a&gt; has the capability to process messages in order using a feature called &lt;a href="http://activemq.apache.org/exclusive-consumer.html"&gt;Exclusive Consumers&lt;/a&gt;. With Exclusive Consumers all messages from a single queue are processed by only one consumer (other consumers listening on the same queue will take over if the exclusive consumer fails).&lt;br /&gt;&lt;br /&gt;So, fundamentally the diagram below shows how Exclusive Consumers work where Consumer A and Consumer B are both listening to the same queue but only the Consumer A is consuming messages from it.&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-UCYtcxRQsIM/TsV7RKh3duI/AAAAAAAAAJw/pQ9XIMYtB1s/s1600/06-Exclusive-Consumers-and-Message-Groups.ppt-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-UCYtcxRQsIM/TsV7RKh3duI/AAAAAAAAAJw/pQ9XIMYtB1s/s1600/06-Exclusive-Consumers-and-Message-Groups.ppt-1.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: -webkit-auto;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;The Exclusive Consumer feature is configured at the consumer level, so at the code level you have to explicitly say what queue you're listening in and also say you're an an exclusive consumer.&lt;br /&gt;&lt;br /&gt;Here is a piece of code showing how to set the Exclusive Consumer:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;queue = new ActiveMQQueue(“TEST.QUEUE?&lt;b&gt;consumer.exclusive=true&lt;/b&gt;”);&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That's very simple and still powerful… &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But, there's more to that! You also have the choice to set a priority for each consumer.&lt;br /&gt;&lt;br /&gt;One way to ensure that high-priority applications get messages to process is to set the &lt;a href="http://activemq.apache.org/destination-options.html"&gt;consumer priority&lt;/a&gt;. When multiple consumer request exclusive access to a queue, the consumer with the highest priority is selected by the broker.&lt;br /&gt;&lt;br /&gt;So, another case for Exclusive Consumer priority is the machine speed you have available. You may want to give a higher priority for consumers deployed on faster machines and set the priority according to the resources you have available.&lt;br /&gt;&lt;br /&gt;To set the Exclusive Consumer priority all you have to do is set another option on the consumer code like the below configuration:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;queue = new ActiveMQQueue(“TEST.QUEUE?consumer.exclusive=true&amp;amp;&lt;b&gt;consumer.priority=10&lt;/b&gt;");&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The diagram below shows how the consumer priority would play with these settings.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-top: 5.76pt; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-hN999-Yy33c/TsV7D-kK_EI/AAAAAAAAAJo/FUW6tGb9yys/s1600/06-Exclusive-Consumers-and-Message-Groups.ppt.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-hN999-Yy33c/TsV7D-kK_EI/AAAAAAAAAJo/FUW6tGb9yys/s1600/06-Exclusive-Consumers-and-Message-Groups.ppt.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; line-height: 90%; margin-bottom: 0pt; margin-top: 5.76pt; mso-line-break-override: restrictions; punctuation-wrap: simple; text-align: left; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: Arial; font-size: 12pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; line-height: 90%; margin-bottom: 0pt; margin-top: 5.76pt; mso-line-break-override: restrictions; punctuation-wrap: simple; text-align: left; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: Arial; font-size: 12pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; line-height: 90%; margin-bottom: 0pt; margin-top: 5.76pt; mso-line-break-override: restrictions; punctuation-wrap: simple; text-align: left; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span style="color: black; font-family: Arial; font-size: 12pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; line-height: 90%; margin-bottom: 0pt; margin-top: 5.76pt; mso-line-break-override: restrictions; punctuation-wrap: simple; text-align: left; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: 0px; margin-right: 0px; margin-top: 5.76pt; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;One disadvantage of Exclusive Consumers is that you have active consumers doing nothing but we are going to cover how ActiveMQ helps you avoid that situation on a future post&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial; line-height: 14px;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: 0px; margin-right: 0px; margin-top: 5.76pt; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial; line-height: 14px;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; margin-bottom: 0pt; margin-left: 0px; margin-right: 0px; margin-top: 5.76pt; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; line-height: 14px;"&gt;Stay tuned!&lt;/span&gt;&lt;/div&gt;&lt;div style="direction: ltr; line-height: 14px; margin-bottom: 0pt; margin-left: 0px; margin-right: 0px; margin-top: 5.76pt; text-align: left; unicode-bidi: embed; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-1341720484539618253?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/1341720484539618253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/11/preserving-message-order-with-apache.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/1341720484539618253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/1341720484539618253'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/11/preserving-message-order-with-apache.html' title='Preserving Message Order with Apache ActiveMQ'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-UCYtcxRQsIM/TsV7RKh3duI/AAAAAAAAAJw/pQ9XIMYtB1s/s72-c/06-Exclusive-Consumers-and-Message-Groups.ppt-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-6064422464890100899</id><published>2011-11-10T08:50:00.001-08:00</published><updated>2011-11-10T09:04:13.227-08:00</updated><title type='text'>We're hiring!</title><content type='html'>Do you have a technical background and also love the exciting sales world?&lt;br /&gt;&lt;br /&gt;Do you like to be in front of the customers discussing technical architecture, new business opportunities and helping them solving the most complex integration problems?&lt;br /&gt;&lt;br /&gt;Are you based in Europe (preferably in London)?&lt;br /&gt;&lt;br /&gt;Do you want to work for a fast growing company in the open source integration and messaging business?&lt;br /&gt;&lt;br /&gt;Well, the time has arrived… FuseSource is looking for a Solutions Engineer to join our team and be part of a very strategic group within the company.&lt;br /&gt;&lt;br /&gt;The detailed job description is here:&amp;nbsp;&lt;a href="http://fusesource.com/careers/#SE"&gt;http://fusesource.com/careers/#SE&lt;/a&gt;&amp;nbsp;but you can also contact me if you want to talk about it :)&lt;br /&gt;&lt;br /&gt;Let's enjoy the ride together...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-6064422464890100899?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/6064422464890100899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/11/were-hiring.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/6064422464890100899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/6064422464890100899'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/11/were-hiring.html' title='We&apos;re hiring!'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-128053583482046769</id><published>2011-11-07T17:07:00.000-08:00</published><updated>2011-11-07T17:08:01.041-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='san diego'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='laptop'/><category scheme='http://www.blogger.com/atom/ns#' term='coffee'/><category scheme='http://www.blogger.com/atom/ns#' term='linkedin'/><category scheme='http://www.blogger.com/atom/ns#' term='fusesource'/><category scheme='http://www.blogger.com/atom/ns#' term='veterans'/><category scheme='http://www.blogger.com/atom/ns#' term='hackday'/><category scheme='http://www.blogger.com/atom/ns#' term='hackathon'/><title type='text'>LinkedIn Veterans Hackday 2011</title><content type='html'>A little different topic today but for a really good cause. I really appreciate all the effort that the military personnel has been putting together and I have heard many stories from a few and also some scary ones from the war zone which is not fun at all. That's the reality of the world we live in and while we can't (yet) stop the war, we can improve the life of the ones being part of that.&lt;br /&gt;&lt;br /&gt;Today, I found that &lt;a href="http://www.linkedin.com/"&gt;LinkedIn&lt;/a&gt; is promoting a &lt;a href="http://veterans2011.linkedin.com/"&gt;Veterans Hackday&lt;/a&gt;&amp;nbsp;and honestly there is nothing better than being able to use your skills to give something back to those that sacrifices their lives every day.&lt;br /&gt;&lt;br /&gt;So, I decided to use my tech skills and hack a little project that will benefit our veterans. I honestly can't do all of that by myself and I'm counting on those from the &lt;a href="http://www.sandiego.com/"&gt;San Diego, CA&lt;/a&gt; area that are available and want to work together on this over the weekend.&lt;br /&gt;&lt;br /&gt;As I just started organizing this, I don't have an idea yet but I'd be glad to start designing something as soon as possible and then do the coding later in the week.&lt;br /&gt;&lt;br /&gt;If you want to hack something together, please reach out and let's work together on this patriotic project...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-128053583482046769?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/128053583482046769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/11/linkedin-veterans-hackday-2011.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/128053583482046769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/128053583482046769'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/11/linkedin-veterans-hackday-2011.html' title='LinkedIn Veterans Hackday 2011'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-526912708648422239</id><published>2011-10-26T14:45:00.000-07:00</published><updated>2011-10-27T16:50:29.773-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='camel-jdbc'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='gettingstarted'/><category scheme='http://www.blogger.com/atom/ns#' term='camel-jms'/><category scheme='http://www.blogger.com/atom/ns#' term='fusesource'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><category scheme='http://www.blogger.com/atom/ns#' term='servicemix'/><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='activemq'/><category scheme='http://www.blogger.com/atom/ns#' term='integration'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='camel'/><category scheme='http://www.blogger.com/atom/ns#' term='jms'/><category scheme='http://www.blogger.com/atom/ns#' term='hermesjms'/><category scheme='http://www.blogger.com/atom/ns#' term='eip'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>JMS and Database Integration with Apache ServiceMix, Camel and ActiveMQ</title><content type='html'>I've been asked to create a simple project to demonstrate how &lt;a href="http://activemq.apache.org/"&gt;Apache ActiveMQ&lt;/a&gt;, &lt;a href="http://camel.apache.org/"&gt;Camel&lt;/a&gt; and &lt;a href="http://servicemix.apache.org/"&gt;ServiceMix&lt;/a&gt; could be used in the same integration context. Then, for the specific customer I was talking to, I decided to create something related to the world they were used to.&lt;br /&gt;&lt;br /&gt;This example will process messages as they are delivered on an input queue and I thought that XML would be a good format to also demonstrate how to parse the payload and generate an SQL statement &amp;nbsp;before hitting the database.&lt;br /&gt;&lt;br /&gt;In summary, for each message going to the input queue, we're going to create a record in the database table and then generate a response message on the output queue.&lt;br /&gt;&lt;br /&gt;I'm assuming you're already have Apache ServiceMix downloaded and installed in your machine. If not, it's time to download it… I recommend you to just go to&amp;nbsp;&lt;a href="http://fusesource.com/downloads/"&gt;http://fusesource.com/downloads/&lt;/a&gt;&amp;nbsp;and download FUSE ESB.&lt;br /&gt;&lt;br /&gt;I'm also assuming that you already have Maven installed but if not feel free to download and install it from&amp;nbsp;&lt;a href="http://maven.apache.org/"&gt;maven.apache.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Here are the steps to create this short and simple demonstration:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;1) Download and install MySQL database from&amp;nbsp;&lt;a href="http://dev.mysql.com/downloads/"&gt;http://dev.mysql.com/downloads/&lt;/a&gt;&lt;br /&gt;You can use the default test database that's shipped with MySQL and the only thing you have to do is to create a table to insert test records. To do that, connect to the database &amp;nbsp;and run the following SQL statement:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;CREATE table PARTNER_METRIC(partner_id int, time_occurred DATE, status_code int, perf_time long);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;2)&amp;nbsp;Install the following features in ServiceMix:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;features:install camel-jdbc&lt;br /&gt;features:install camel-jms&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;3)&amp;nbsp;Install commons-dbcp bundle:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;osgi:install -s mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-dbcp/1.2.2_6&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;4)&amp;nbsp;When you do this you will receive a bundle id, e.g. 229. &amp;nbsp;Enable dynamic imports on this bundle so that it can pick up the appropriate database driver.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;dev:dynamic-import 229&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;5)&amp;nbsp;Using ServiceMix hot deploy feature to deploy the MySQL JDBC driver:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cp /Applications/MySQL/mysql-connector-java-5.1.18/mysql-connector-java-5.1.18-bin.jar &amp;nbsp;/Users/mjabali/Fuse/apache-servicemix-4.4.1-fuse-00-08/deploy/&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Then you can verify that the driver gets deployed correctly with the following command:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;karaf@root&amp;gt; list |grep -i mysql&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and you should get a message similar to the following:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;[ 227] [Active &amp;nbsp; &amp;nbsp; ] [ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;] [ &amp;nbsp; &amp;nbsp; &amp;nbsp; ] [ &amp;nbsp; 60] Sun Microsystems' JDBC Driver for MySQL (5.1.18)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;6) Download the source files of this sample and extract them on the directory of your choice. So, let's review the JMS and Database connection settings &amp;nbsp;in the following resource files:&lt;br /&gt;&lt;br /&gt;$PROJECT_HOME/src/test/resources/sample/RiderAutoPartsPartnerTest.xml&lt;br /&gt;$PROJECT_HOME/src/main/resources/META-INF/spring/beans.xml file&lt;br /&gt;&lt;br /&gt;These are the same file albeit named differently. One is used by the bundle and the other by our test case.&lt;br /&gt;&lt;br /&gt;We'll be also using the default Apache ActiveMQ instance for the messaging aspect of this tutorial.&lt;br /&gt;To check whether the ActiveMQ is installed, up and running you can run the following command:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;karaf@root&amp;gt; osgi:list |grep activemq-broker&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and you should see an output similar to this&lt;br /&gt;&lt;br /&gt;&lt;code&gt;[ &amp;nbsp;66] [Active &amp;nbsp; &amp;nbsp; ] [Created &amp;nbsp; &amp;nbsp; ] [ &amp;nbsp; &amp;nbsp; &amp;nbsp; ] [ &amp;nbsp; 50] activemq-broker.xml (0.0.0)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You can see the default broker's definition within the activemq-broker.xml file under $SERVICEMIX_HOME/etc/activemq-broker.xml&lt;br /&gt;&lt;br /&gt;The database source definition is on the beans.xml file and you may want to adjust it to reflect the settings on your environment. Here is a copy of the definitions I have on my machine:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;lt;bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;lt;property name="driverClassName" value="com.mysql.jdbc.Driver"/&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;lt;property name="url" value="jdbc:mysql://localhost/test"/&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;lt;property name="username" value="root"/&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;lt;property name="password" value="XXXX"/&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;lt;/bean&amp;gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/code&gt;7) Let's compile the code then… Run the following command on the root directory of the project&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;code&gt;mvn clean install -Dmaven.test.skip=true&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;If the code builds up successfully then you're ready to deploy on ServiceMix.&lt;br /&gt;&lt;br /&gt;8) To deploy the bundle into ServiceMix, run the following command:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;karaf@root&amp;gt;osgi:install mvn:com.fusesource.fusebyexample/camel-jms-dbase/1.0-SNAPSHOT&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;A confirmation that the bundle was deployed successfully should be returned to you and a message similar to the follow one should be displayed:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;Bundle ID: 228&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Then, you are ready to start the bundle and verify if has started correctly. Follow the instructions below to do that:&lt;br /&gt;&lt;br /&gt;To start the bundle:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;karaf@root&amp;gt;osgi:start &amp;lt;bundle ID&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;To verify the bundle has started correctly:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;karaf@root&amp;gt;osgi:list |grep &amp;lt;bundle ID&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and then a message like the following should be displayed:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[ 228] [Active &amp;nbsp; &amp;nbsp; ] [ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;] [Started] [ &amp;nbsp; 60] Camel JMS Database Example (1.0.0.SNAPSHOT)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You can also immediately turn on the trace logging capability for Camel and get additional output in the ServiceMix log facility. To enable the trace logging just run:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;karaf@root&amp;gt;set TRACE org.apache.camel&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and then to see the ServiceMix log, run:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;karaf@root&amp;gt;log:display&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You should be able to see messages with the TRACE identifier similar to the below:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;11:46:17,095 | TRACE | tnerRequestQueue | JmsMessageListenerContainer &amp;nbsp; &amp;nbsp; &amp;nbsp;| ? &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ? | 94 - org.springframework.jms - 3.0.5.RELEASE | Consumer [ActiveMQMessageConsumer { value=ID:titan.local-54477-1319240594120-6:1:1:1, started=true }] of session [PooledSession { ActiveMQSession {id=ID:titan.local-54477-1319240594120-6:1:1,started=true} }] did not receive a message&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;9) To test this sample project all you have to do is to send a sample message (there is one included in the&amp;nbsp;$PROJECT_HOME/src/test/resources/sample directory) to the ActiveMQ queue that the Camel route is listening for. You can use any approach you like but writing a JMS Test client is pretty simple and there are tons of examples on the Internet and also available in the ActiveMQ sample directory. You can also use tools like &lt;a href="http://www.hermesjms.com/confluence/display/HJMS/Home"&gt;HermesJMS&lt;/a&gt; which adds a little UI for you so you don't need to create a test program.&lt;br /&gt;&lt;br /&gt;Either way, after sending a message to the partnerRequestQueue (default queue name used on this tutorial) you should see a couple of messages in the ServiceMix console like those below:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;karaf@root&amp;gt; &amp;nbsp;**** toSql returning: INSERT INTO PARTNER_METRIC (partner_id, time_occurred, status_code, perf_time) VALUES ('123', '200911150815', '200', '9876')&lt;br /&gt;&lt;br /&gt;&amp;nbsp;**** fromSql returning: Sample message to be returned on reply queue&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You can verify that the values were inserted into the MySQL database running a simple query like:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;select * from PARTNER_METRIC;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It is also recommended to check the ServiceMix log to make sure there are no exceptions there.&lt;br /&gt;&lt;br /&gt;The sample code for this tutorial is available on GitHub:&amp;nbsp;&lt;a href="https://github.com/mjabali/JMS-DB-Sample"&gt;https://github.com/mjabali/JMS-DB-Sample&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I also would like to thank my colleague Susan Javurek for putting an extra effort on this and helping out with the sample code.&lt;br /&gt;&lt;br /&gt;UPDATE: I also would like to say a big thanks to Claus Ibsen (&lt;a href="https://twitter.com/#!/davsclaus"&gt;@davsclaus&lt;/a&gt;) for reminding me that all the manual steps related to OSGi bundles installation could be automated using the &lt;a href="http://fusesource.com/docs/esb/4.4.1/esb_deploy_osgi/DeployFeatures.html"&gt;feature&lt;/a&gt; capability that consists in deploy multiple related bundles into a larger unit of deployment.&lt;br /&gt;&lt;br /&gt;Enjoy the ride...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-526912708648422239?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/526912708648422239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/10/jms-and-database-integration-with.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/526912708648422239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/526912708648422239'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/10/jms-and-database-integration-with.html' title='JMS and Database Integration with Apache ServiceMix, Camel and ActiveMQ'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-3040951408387243763</id><published>2011-10-21T11:48:00.000-07:00</published><updated>2011-10-24T23:00:33.807-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notification'/><category scheme='http://www.blogger.com/atom/ns#' term='integration'/><category scheme='http://www.blogger.com/atom/ns#' term='file'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='camel'/><category scheme='http://www.blogger.com/atom/ns#' term='fusesource'/><category scheme='http://www.blogger.com/atom/ns#' term='fuseide'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Using Apache Camel for Application Notification</title><content type='html'>I was watching a forum thread (&lt;a href="http://fusesource.com/forums/thread.jspa?threadID=3433"&gt;http://fusesource.com/forums/thread.jspa?threadID=3433&lt;/a&gt;) this week where the use case was not to consume the file content but rather the file name. That seems to be an interesting use of Apache Camel because most of people used the &lt;a href="http://camel.apache.org/file2.html"&gt;Camel File Component&lt;/a&gt;&amp;nbsp;to consume the contents of the file and then do some kind of processing on top of that (routing, web services invocation, ftp, bean execution, database interaction, etc).&lt;br /&gt;&lt;br /&gt;What brought my attention to this specific use case is that the important information here was the file name and not the content of the file. Given that the file itself was pretty large (around ~1GB) it would be a nightmare to handle all of that in memory on a Camel route or any other middleware available out there. But, this use case is really about notifying other systems or applications that a large file is available to be processed outside the route (think about a file being available for download for example) and the reason to only care about the file name is that information could be part of the URL generated during the processing of the Camel route.&lt;br /&gt;&lt;br /&gt;So, basically the Camel route was watching the file system for files generated, then grabbed the file name and then notify another system or application (or even the end user i.e. e-mail) that the file was ready to be consumed. I've recreated below the Camel route generated by default in the sample project to illustrate how to do that.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;beans&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;xmlns&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"http://www.springframework.org/schema/beans"&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;xmlns:xsi&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"http://www.w3.org/2001/XMLSchema-instance"&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;xmlns:camel&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"http://camel.apache.org/schema/spring"&lt;/div&gt;&lt;div style="color: #7f007f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;xsi:schemaLocation&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: #2a00ff;"&gt;"&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;camel:camelContext&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;xmlns&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"http://camel.apache.org/schema/spring"&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;camel:package&lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;com.fusesource.fusebyexample&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;camel:package&lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;camel:route&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;!-- Consume Files from the File System --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;camel:from&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;uri&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"file:src/data/?noop=true"&lt;span style="color: teal;"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;!-- Set the Message Payload with the File Name --&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;camel:setBody&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;camel:simple&lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;header.CamelFileName&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;camel:simple&lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;camel:setBody&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;camel:log&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;message&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"The message contains ${body}"&lt;span style="color: teal;"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;!-- Perform simple Content-Based Routing --&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;camel:choice&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;camel:when&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;camel:simple&lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;${body} == 'message1.&lt;span style="text-decoration: underline;"&gt;xml&lt;/span&gt;'&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;camel:simple&lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;camel:log&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;message&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"Going to UK message"&lt;span style="color: teal;"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;camel:to&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;uri&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"file:target/messages/uk"&lt;span style="color: teal;"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;camel:when&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;camel:otherwise&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;camel:log&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;message&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"Going to Other message"&lt;span style="color: teal;"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;camel:to&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;uri&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"file:target/messages/others"&lt;span style="color: teal;"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;camel:otherwise&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;camel:choice&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;camel:route&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;camel:camelContext&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;beans&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Of course, if you want to try that out, the project is available at:&amp;nbsp;&lt;a href="https://github.com/mjabali/FileNameBasedRouter"&gt;https://github.com/mjabali/FileNameBasedRouter&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy the ride!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-3040951408387243763?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/3040951408387243763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/10/using-apache-camel-for-application.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/3040951408387243763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/3040951408387243763'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/10/using-apache-camel-for-application.html' title='Using Apache Camel for Application Notification'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-7265964436157701537</id><published>2011-10-17T13:43:00.000-07:00</published><updated>2011-10-17T13:43:30.615-07:00</updated><title type='text'>FuseSource Community Day in San Francisco, CA - November 17th</title><content type='html'>Thirsty for information about &lt;a href="http://camel.apache.org/"&gt;Apache Camel&lt;/a&gt;? Hungry to learn more about &lt;a href="http://activemq.apache.org/"&gt;Apache ActiveMQ&lt;/a&gt; in production environments? Keen to know more about the Business Impact of Open Source Software...&lt;br /&gt;&lt;br /&gt;Don't miss the opportunity to hear from &lt;a href="http://rajdavies.blogspot.com/"&gt;Rob Davies&lt;/a&gt; (CTO of FuseSource, PMC Member, Founder and Committer on Apache ServiceMix and ActiveMQ and also the co-author of &lt;a href="http://www.manning.com/snyder/"&gt;ActiveMQ in Action&lt;/a&gt;) and &lt;a href="http://macstrac.blogspot.com/"&gt;James Strachan&lt;/a&gt;&amp;nbsp;(Creator of &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt;, member of the &lt;a href="http://www.apache.org/"&gt;Apache Software Foundation&lt;/a&gt; and co-founder of &lt;a href="http://camel.apache.org/"&gt;Apache Camel&lt;/a&gt;). You'll be also hearing from architects, consultants and developers using those technologies in real world applications and what problems they were able to solve.&lt;br /&gt;&lt;br /&gt;Not enough for you?!?! The FuseSource Community Day will be held at a really nice venue in downtown San Francisco called &lt;a href="http://www.thirstybear.com/"&gt;Thirsty Bear&lt;/a&gt;&amp;nbsp;(661 Howard St., San Francisco, CA 94103).&lt;br /&gt;&lt;br /&gt;For more information, visit the event web page:&amp;nbsp;&lt;a href="http://form.fusesource.com/sanfrancisco2011"&gt;http://form.fusesource.com/sanfrancisco2011&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I hope to see you all there...&lt;br /&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/7850628466108183059-7265964436157701537?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/7265964436157701537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/10/fusesource-community-day-in-san.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/7265964436157701537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/7265964436157701537'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/10/fusesource-community-day-in-san.html' title='FuseSource Community Day in San Francisco, CA - November 17th'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-7780103259873815333</id><published>2011-10-14T12:11:00.000-07:00</published><updated>2011-10-14T12:20:18.164-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='activemq'/><category scheme='http://www.blogger.com/atom/ns#' term='camel'/><category scheme='http://www.blogger.com/atom/ns#' term='camel-jetty'/><category scheme='http://www.blogger.com/atom/ns#' term='fusesource'/><category scheme='http://www.blogger.com/atom/ns#' term='eip'/><title type='text'>Using HTTP-based endpoints with Apache Camel</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;On a recent discussion, a partner was trying to use &lt;a href="http://activemq.apache.org/http-and-https-transports-reference.html"&gt;Apache ActiveMQ HTTP Transport Connectors&lt;/a&gt; to receive HTTP requests from a non-JMS Web application and asked me what I would think it could be a good approach to the use-case. Analyzing the use case, which needs a synchronous multi-step execution I suggested that they took a look in the &lt;a href="http://camel.apache.org/jetty.html"&gt;Apache Camel Jetty&lt;/a&gt; component instead of &lt;a href="http://activemq.apache.org/"&gt;Apache ActiveMQ&lt;/a&gt;&amp;nbsp;and that was surprisingly easier to setup and maintain then the original approach.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;While there is nothing wrong with the approach they thought about I think that Apache Camel would give them a more powerful setup to what they were looking for.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;So, here is a sample configuration, that I created as a demo project, using Apache Camel Jetty component enabling HTTP endpoints.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;In our Apache Camel route definition (using the Spring XML approach in this case) we'll have to define the Jetty endpoint similar to this:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #3a40f4; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #009192;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #4c9191;"&gt;route&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #94268c;"&gt;id&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"Jetty_Sample"&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3a40f4; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #009192;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #4c9191;"&gt;from&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #94268c;"&gt;uri&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"jetty:http://localhost:8888/myBookService"&lt;span style="color: #009192;"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3a40f4; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #009192;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #009192;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;where we basically specify the address we'll be consuming HTTP requests. There are many options we can use to fine tuning the Jetty component but we'll keep it with only the required information for simplicity.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #009192;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #009192;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;Then, the next step is going to be a regular approach to any other route we have developed so far. In this example, we're going to use a LOG component and then a custom Process pointing to a simple Java bean where we perform the processing of every request.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #009192;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: Times; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #009192;"&gt;&lt;span class="Apple-style-span" style="font-family: Times; font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3a40f4; font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #009192;"&gt;&lt;span style="color: #009192;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #4c9191;"&gt;log&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #94268c;"&gt;logName&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"HTTP LOG"&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #94268c;"&gt;loggingLevel&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"INFO"&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #94268c;"&gt;message&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"HTTP REQUEST: ${in.header.bookid}"&lt;span style="color: #009192;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #009192;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #3a40f4; font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #009192;"&gt;&lt;span style="color: #009192;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #4c9191;"&gt;process&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #94268c;"&gt;ref&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"myBookService"&lt;span style="color: #009192;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #009192;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #3a40f4; font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #009192;"&gt;&lt;span style="color: #009192;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #009192;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;The log component above will be displaying a header name called 'bookid' and then the Java bean (listed below) will be taking care of the request:&lt;/span&gt;&lt;br /&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;package com.fusesource.fusebyexample;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;import org.apache.camel.Processor;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;import org.apache.camel.Exchange;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;public class myBookService implements Processor {&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp; &amp;nbsp; public void process(Exchange exchange) throws Exception {&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Grab the booked header value&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String bookId = (String) exchange.getIn().getHeader("bookid");&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;// send a html response&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; exchange.getOut().setBody("&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;Book " + bookId + " is Camel in Action.&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;");&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;}&lt;span class="Apple-style-span" style="font-family: Times; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;The last thing we need to add to our Apache Camel context file is the bean definition which could be simply like the line below:&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #3a40f4;"&gt;&lt;span style="color: #009192;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #3a40f4;"&gt;&lt;span style="color: #4c9191;"&gt;bean&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #3a40f4;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #3a40f4;"&gt;&lt;span style="color: #94268c;"&gt;class&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #3a40f4;"&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #3a40f4;"&gt;"com.fusesource.fusebyexample.myBookService"&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #3a40f4;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #3a40f4;"&gt;&lt;span style="color: #94268c;"&gt;id&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #3a40f4;"&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #3a40f4;"&gt;"myBookService"&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #3a40f4;"&gt;&lt;span style="color: #009192;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;That's all we need... To test the integration use case described above, we can simply run the Camel route, open any web browser and hit the following URL:&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;http://localhost:8888/myBookService?bookid=91942&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;where the Camel route will log the following in the console:&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times; font-size: small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;HTTP LOG &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; INFO&amp;nbsp; HTTP REQUEST: 91942&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;and the web browser will display the result of the Java bean processing with the following:&lt;/span&gt;&lt;br /&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-W5gpRUpoQNY/TpiAmM1LIOI/AAAAAAAAAJU/jqAJhslFmc0/s1600/camel_Jetty.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="130" src="http://1.bp.blogspot.com/-W5gpRUpoQNY/TpiAmM1LIOI/AAAAAAAAAJU/jqAJhslFmc0/s400/camel_Jetty.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;If you want to use a simple HTML form, here is something to easily test the Camel route...&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div style="color: #4c9191; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #009192;"&gt;&amp;lt;&lt;/span&gt;html&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #4c9191; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #009192;"&gt;&amp;lt;&lt;/span&gt;body&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3a40f4; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #009192;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #4c9191;"&gt;form&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #94268c;"&gt;action&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"http://localhost:8888/myBookService"&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;Book ID: &lt;span style="color: #009192;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #4c9191;"&gt;input&lt;/span&gt; &lt;span style="color: #94268c; text-decoration: underline;"&gt;text&lt;/span&gt; &lt;span style="color: #94268c;"&gt;name&lt;/span&gt;=&lt;span style="color: #3a40f4;"&gt;"bookId"&lt;/span&gt;&lt;span style="color: #009192;"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3a40f4; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #009192;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #4c9191;"&gt;input&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #94268c;"&gt;type&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"submit"&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #94268c;"&gt;value&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"Submit"&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #4c9191; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #009192;"&gt;&amp;lt;/&lt;/span&gt;form&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #4c9191; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #009192;"&gt;&amp;lt;/&lt;/span&gt;body&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #4c9191; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #009192;"&gt;&amp;lt;/&lt;/span&gt;html&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #009192;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #009192;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;I've also included the test HTML form on the source code package of this configuration available here:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #009192;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;a href="https://github.com/mjabali/Jetty-Sample"&gt;https://github.com/mjabali/Jetty-Sample&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #009192;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;Enjoy the ride!&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-7780103259873815333?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/7780103259873815333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/10/using-http-based-endpoints-with-apache.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/7780103259873815333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/7780103259873815333'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/10/using-http-based-endpoints-with-apache.html' title='Using HTTP-based endpoints with Apache Camel'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-W5gpRUpoQNY/TpiAmM1LIOI/AAAAAAAAAJU/jqAJhslFmc0/s72-c/camel_Jetty.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-8546612062328795955</id><published>2011-10-13T15:08:00.000-07:00</published><updated>2011-10-14T11:40:17.164-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='activemq'/><category scheme='http://www.blogger.com/atom/ns#' term='sao paulo'/><category scheme='http://www.blogger.com/atom/ns#' term='camel'/><category scheme='http://www.blogger.com/atom/ns#' term='brazil'/><category scheme='http://www.blogger.com/atom/ns#' term='training'/><category scheme='http://www.blogger.com/atom/ns#' term='fusesource'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='servicemix'/><title type='text'>FuseSource Training in Brazil</title><content type='html'>Since the FuseSource Brazilian tour a couple of weeks ago I've been getting more and more questions about what's next for the region. Well, here is the next step... We're going to deliver an Apache ActiveMQ training class on Nov, 16-17 in São Paulo and an Apache ServiceMix with Camel training class on November, 18-19 also in São Paulo. We are still working to get a nice venue for the training in case you wonder where this is going to happen.&lt;br /&gt;&lt;br /&gt;I've personally been involved in the FuseSource training and I can guarantee you that's a lot of fun and tons of good information.&lt;br /&gt;&lt;br /&gt;Here is the URL with information about the training classes: &lt;a href="http://fusesource.com/enterprise-support/open-enrollment/"&gt;http://fusesource.com/enterprise-support/open-enrollment/&lt;/a&gt;&amp;nbsp;but if you have any questions&amp;nbsp;please don't hesitate to contact me through this blog, Twitter (&lt;a href="http://twitter.com/mjabali"&gt;@mjabali&lt;/a&gt;) or e-mail (&lt;a href="mailto:marcelo@fusesource.com"&gt;marcelo@fusesource.com&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Hope to see you there...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-8546612062328795955?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/8546612062328795955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/10/fusesource-training-in-brazil.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/8546612062328795955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/8546612062328795955'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/10/fusesource-training-in-brazil.html' title='FuseSource Training in Brazil'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-8514266487837366197</id><published>2011-10-05T08:33:00.000-07:00</published><updated>2011-10-05T10:29:45.530-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='activemq'/><category scheme='http://www.blogger.com/atom/ns#' term='integration'/><category scheme='http://www.blogger.com/atom/ns#' term='jms'/><category scheme='http://www.blogger.com/atom/ns#' term='fusesource'/><category scheme='http://www.blogger.com/atom/ns#' term='messaging'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Apache ActiveMQ Enhancements to JMS</title><content type='html'>The &lt;a href="http://www.oracle.com/technetwork/java/jms/index.html"&gt;JMS (Java Message Service)&lt;/a&gt; specification is very well-known for those working with messaging platforms but it has been around for quite some time and honestly not getting updates lately which gives a lot of room for enhancements and extensions.&lt;br /&gt;&lt;br /&gt;As you can imagine &lt;a href="http://activemq.apache.org/"&gt;Apache ActiveMQ&lt;/a&gt; goes beyond the JMS spec and implement lots of cool things where you can gain more in functionality, performance and scalability.&lt;br /&gt;&lt;br /&gt;Starting from the top ConnectionFactory object, ActiveMQ has its own called &lt;a href="http://activemq.apache.org/maven/activemq-core/apidocs/org/apache/activemq/spring/ActiveMQConnectionFactory.html"&gt;ActiveMQConnectionFactory&lt;/a&gt;, as other JMS providers also create their own specific factories, ActiveMQ enhances the JMS with some settings that you can activate right away with little configuration and definitely see gains in performance. &amp;nbsp;Of course, when you optimize for performance, most of the time, you have the trade-off of more CPU utilization but I think CPU cycles are getting really cheap when comparing with network bandwidth and disk I/O.&lt;br /&gt;&lt;br /&gt;Here is a list of things you can use to optimize performance extending the JMS specification with Apache ActiveMQ:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://activemq.apache.org/connection-configuration-uri.html"&gt;disableTimeStampsByDefault&lt;/a&gt; - it sets whether or not you're going to include the Time Stamp in the message header. The story behind this is that when you create a JMS message (actually when you call the send() method) we have to make a call to the system kernel to get the time stamp. This setting could save you a trip to that level and save you some time optimizing performance if the time stamp is not required in your messaging application.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://activemq.apache.org/connection-configuration-uri.html"&gt;copyMessageOnSend&lt;/a&gt; - The Java Message Service specification says that inside the send method we have to make a deep copy of the message object before sending it from the client to the broker. Setting the copyMessageOnSend property to false (default is set to true) will save you a cycle as the client won't make that copy of the message saving local resources.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://activemq.apache.org/connection-configuration-uri.html"&gt;useCompression&lt;/a&gt; - I think the property name here is self explanatory... but the ActiveMQ client will compress the message payload before it goes to the broker. So, the question is why not to use compression all the time and send smaller messages over the wire? Well, in order to compress the message payload you're going to spend CPU time and then the point is CPU vs. I/O. It's a trade-off that you may have to consider... in other words, you'll have to consider spending more CPU to compress the message or more bandwidth sending larger messages. Personally, I believe (and have seem) that if you have the chance to use compression you definitely should.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://activemq.apache.org/connection-configuration-uri.html"&gt;objectMessageSerializationDefered&lt;/a&gt; - Imagine that you're sending an Object Message and you're using an embedded broker for example (client and broker running on the same JVM). What this feature really enables you to do is that you tell the client to delay the object serialization as long as it can until it needs to hit the wire or store the message on disk. Basically, everything inside the same JVM should not be serialized as marshalling and unmarshalling objects can also be expensive.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://activemq.apache.org/connection-configuration-uri.html"&gt;useAsyncSend&lt;/a&gt; - Let's say you're sending NON_PERSISTENT messages to the broker which is equal to non-blocking call with no immediate acknowledgement and in fact it's ver fast but still not reliable messaging.&lt;br /&gt;On the other hand, you can also use PERSISTENT messages which is going to be a blocking call from the client to the broker. So, one of the things you can do is to set useAsyncSend to true (default is false) and then change the behavior of PERSISTENT delivery mode to be asynchronous and no acknowledgement would be expected. In reality, &amp;nbsp;the send() method will return immediately giving you more performance because it reduces the time that the message producer waits for the message to be delivered. Keep in mind that this setting can possibly cause message loss but that's another trade-off that you have to consider when designing your messaging infrastructure.&lt;br /&gt;This is a good approach if you can tolerate some message loss... typically on systems where the most updated information (last message) is always what you care about or when you have a reconciliation process in place to catch those conditions.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://activemq.apache.org/connection-configuration-uri.html"&gt;useRetroactiveConsumer&lt;/a&gt; - This feature allows you to work with limited window of memory topics where you can configure a policy to deliver let's say for example the last 10 messages sent to the topic, the last 5MB of data that went through to that topic or simply the last message sent to the topic... and all of that without the need of durable subscribers :-)&lt;br /&gt;This is actually far more lightweight than using durable subscribers and it's really easy to configure and very easy to use.&lt;br /&gt;Finally, since this is not JMS standard, of course, it's not set by default.&lt;br /&gt;&lt;br /&gt;For a complete list of ActiveMQ enhancements to the JMS specification see the ActiveMQ product documentation.&lt;br /&gt;&lt;br /&gt;I hope this helps you to push the go-faster button in your messaging infrastructure.&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 14px;"&gt;&lt;span style="color: black; font-family: 'Courier New'; font-size: 12pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New';"&gt;&lt;span class="Apple-style-span" style="line-height: 14px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New';"&gt;&lt;span class="Apple-style-span" style="line-height: 14px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-8514266487837366197?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/8514266487837366197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/10/apache-activemq-enhancements-to-jms.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/8514266487837366197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/8514266487837366197'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/10/apache-activemq-enhancements-to-jms.html' title='Apache ActiveMQ Enhancements to JMS'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-427018254476786959</id><published>2011-10-03T09:58:00.000-07:00</published><updated>2011-10-04T14:13:13.603-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='brazil'/><category scheme='http://www.blogger.com/atom/ns#' term='rio de janeiro'/><category scheme='http://www.blogger.com/atom/ns#' term='fusesource'/><category scheme='http://www.blogger.com/atom/ns#' term='ipanema'/><category scheme='http://www.blogger.com/atom/ns#' term='servicemix'/><category scheme='http://www.blogger.com/atom/ns#' term='tour'/><category scheme='http://www.blogger.com/atom/ns#' term='activemq'/><category scheme='http://www.blogger.com/atom/ns#' term='integration'/><category scheme='http://www.blogger.com/atom/ns#' term='CXF'/><category scheme='http://www.blogger.com/atom/ns#' term='run'/><category scheme='http://www.blogger.com/atom/ns#' term='camel'/><category scheme='http://www.blogger.com/atom/ns#' term='sao paulo'/><category scheme='http://www.blogger.com/atom/ns#' term='jms'/><category scheme='http://www.blogger.com/atom/ns#' term='messaging'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>FuseSource Tour in Brazil</title><content type='html'>I had the pleasure to spend a week in Brazil doing a FuseSource Tour in two of the major cities... Sao Paulo and Rio de Janeiro. It's pretty clear that the Open Source community is growing really fast and the integration and messaging opportunities are hot.&lt;br /&gt;&lt;br /&gt;Unfortunately, I couldn't visit all of the prospective partners and customers that had contacted us because we couldn't find a single empty spot on the agenda but I think the tour was an amazing experience and I'm pretty I'll back in the near future for more fun with the techies.&lt;br /&gt;&lt;br /&gt;Some of the things I realized while traveling throughout Brazil is that the traffic is really crazy and made me remember some other cities like Los Angeles or Mexico City... You have to be really creative in terms of logistics to be able to meet more than two customers in the same day especially in Sao Paulo.&lt;br /&gt;&lt;br /&gt;Food was a big surprise and it was pretty good either in Sao Paulo or Rio and I met nice and friendly people all over the place... Gotta keep up on the workout front to shed some extra pounds!&lt;br /&gt;&lt;br /&gt;On the business side, I've met mostly customers in the financial sector and partners that already use Apache technologies like ActiveMQ, Camel, CXF and ServiceMix and I was able to have a good tech talk with them while discussing some architectural aspects as well as development techniques.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;While talking to a couple of big banks in Sao Paulo, it sounded to me that companies are realizing the value and maturity of, for example, Apache ActiveMQ where their are not only reducing licensing costs but also exploring features that other messaging products don't offer at this point.&lt;/div&gt;&lt;div&gt;Of course, the reliability and extensibility as well as high performance are key factors for all of these organizations and ActiveMQ is/is going to be part of their architecture.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-FC0vRp72zOw/Tonl5G2na3I/AAAAAAAAAJM/A2R6ZM_B-qU/s1600/IMG_0939+-+Version+2.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="318" src="http://2.bp.blogspot.com/-FC0vRp72zOw/Tonl5G2na3I/AAAAAAAAAJM/A2R6ZM_B-qU/s400/IMG_0939+-+Version+2.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Sao Paulo Subway System&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then, on the second part of the week (more precisely in Rio de Janeiro), I visited a telecom company who's using ServiceMix as part of their core engineering systems and I was happy to discuss patterns and features they are using and also some things they can do to improve it in the next rollout.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-PiJmlCuQWEE/Tonlh5ckUzI/AAAAAAAAAJI/PLp6m-45DLw/s1600/IMG_0947+-+Version+2.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="258" src="http://1.bp.blogspot.com/-PiJmlCuQWEE/Tonlh5ckUzI/AAAAAAAAAJI/PLp6m-45DLw/s400/IMG_0947+-+Version+2.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Rio de Janeiro's Sugar Loaf&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Interesting enough, all of the developers and architects I had the pleasure to talk to were really amazed with Apache Camel and there are tons of use cases where they see possibilities of writing a couple lines using either Java DSL or Spring XML Configuration rather than several lines of code where they need to manage everything from the connection to the business logic. What everybody really liked during the Camel demos is the abstraction layer that Camel provides where you concentrate on the business logic and not on the details of the implementation. Gotta a comment that we're now "High-tech plumbers" connecting all of the enterprise applications with the simplicity and power of Camel, ActiveMQ, CXF and ServiceMix.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;But, the best moment was when I did an Apache ActiveMQ, Camel, CXF and ServiceMix overview presentation in one of the largest companies in the country for 100 developers and technical folks. I was really impressed on how excited they got after the talk and Q&amp;amp;A and they are really looking forward to apply the discussed topics on their projects right away. The same presentation should be the core of a webinar that I'm planning to do in December... a quick overview about the technology and how FuseSource has been helping customer/partners to successfully work with those Apache projects from conception to deployment.&lt;br /&gt;&lt;br /&gt;To celebrate the successful talk, next morning I went for a run at Ipanema's beach where I ended up with the view below... Simply amazing...&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-02HK09AfyP8/TonmruE9OKI/AAAAAAAAAJQ/ek7ssSYmfUM/s1600/IMG_0961.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/-02HK09AfyP8/TonmruE9OKI/AAAAAAAAAJQ/ek7ssSYmfUM/s400/IMG_0961.JPG" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Ipanema's Beach&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Well, I'm really looking forward to continue to work with organizations in Latin America and come back soon...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&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/7850628466108183059-427018254476786959?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/427018254476786959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/10/fusesource-tour-in-brazil.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/427018254476786959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/427018254476786959'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/10/fusesource-tour-in-brazil.html' title='FuseSource Tour in Brazil'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-FC0vRp72zOw/Tonl5G2na3I/AAAAAAAAAJM/A2R6ZM_B-qU/s72-c/IMG_0939+-+Version+2.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-5335712925400504748</id><published>2011-09-12T11:48:00.000-07:00</published><updated>2011-09-12T12:06:27.835-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='mina'/><category scheme='http://www.blogger.com/atom/ns#' term='camel'/><category scheme='http://www.blogger.com/atom/ns#' term='socket'/><category scheme='http://www.blogger.com/atom/ns#' term='fusesource'/><category scheme='http://www.blogger.com/atom/ns#' term='fuseide'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='camel-mina'/><title type='text'>Using the MINA component in Apache Camel</title><content type='html'>You may find yourself trying to solve an integration problem where one of the systems doesn't "talk" anything else other than TCP/IP or UDP/IP. At that point, you may start thinking about writing your own socket server or look for one in the Internet or even create your Camel component to do that.&lt;br /&gt;Well, that's where the Apache &lt;a href="http://camel.apache.org/mina.html"&gt;Camel MINA component&lt;/a&gt;&amp;nbsp;comes really handy and you don't need to reinvent the wheel.&lt;br /&gt;&lt;br /&gt;Camel MINA is a transport component working with Apache MINA which is a network application framework that provides event-driven asynchronous API over various transports such as TCP/IP and UDP.&lt;br /&gt;&lt;br /&gt;A very common use case is to deploy camel-mina as a proxy in a Camel route and then do whatever is needed with the data like converting it to the appropriate format for example.&lt;br /&gt;&lt;br /&gt;To give you an example, here is something you can do easily to test how camel-mina can help you:&lt;br /&gt;&lt;br /&gt;Using the &lt;a href="http://fusesource.com/products/fuse-ide/"&gt;FUSE IDE&lt;/a&gt;&amp;nbsp;create a new FUSE Project and then open the default camel-context.xml file under $PROJECT_HOME/src/main/resources/META-INF/spring if it's not open for you.&lt;br /&gt;&lt;br /&gt;You can simply remove the default route created in the project and start with a new one.&lt;br /&gt;&lt;br /&gt;Add a new Route. Right-click on the canvas and then select Add --&amp;gt; Route.&lt;br /&gt;&lt;br /&gt;Then, &amp;nbsp;add a new Endpoint, Right-click on the canvas and then select Add --&amp;gt; Endpoints --&amp;gt; Endpoint.&lt;br /&gt;&lt;br /&gt;Go to the Properties panel and add the following to the Uri field:&lt;br /&gt;&lt;br /&gt;mina:tcp://localhost:8888?textline=true&amp;amp;sync=true&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is a screenshot of the configuration in the FUSE IDE:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-8_VN1EGjN5E/Tm5Kz6YcBSI/AAAAAAAAAJA/NGbu5PAcBbU/s1600/Java+-+Eclipse+-+_Applications_eclipse_workspace.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="93" src="http://2.bp.blogspot.com/-8_VN1EGjN5E/Tm5Kz6YcBSI/AAAAAAAAAJA/NGbu5PAcBbU/s400/Java+-+Eclipse+-+_Applications_eclipse_workspace.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In this example, we're creating a MINA consumer endpoint that listens on port 8888, using the textline codec and sync means that we'll be using a synchronous exchange where the client can read a response from the MINA component.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To add a little more fun to this sample, you can add a simple bean to, for example, convert the payload to upper case. Really simple stuff but you get the idea as that step could be dropping that message into an ActiveMQ queue, executing another Camel component, etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, here is a simple Java class to do that:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #941c64;"&gt;public&lt;/span&gt; &lt;span style="color: #941c64;"&gt;class&lt;/span&gt; MyTcpMsgHandler {&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 15.0px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;&lt;span style="color: #941c64;"&gt;public&lt;/span&gt; String myTcpMsgHandler(String msg){&lt;/div&gt;&lt;div style="color: #4c8f75; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;&lt;span style="color: #941c64;"&gt;return&lt;/span&gt; msg.toUpperCase();&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 15.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Last development step is going to be adding the new Java bean into the route. To do that, right-click on the canvas and go to Add --&amp;gt; Endpoints --&amp;gt; Bean. Go to the Properties panel and then configure your recently create bean. Here is a sample configuration:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-rjxZlw6r6mk/Tm5KcooZ91I/AAAAAAAAAI8/rkDMN_8h3m4/s1600/skitched-20110912-110728.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="155" src="http://1.bp.blogspot.com/-rjxZlw6r6mk/Tm5KcooZ91I/AAAAAAAAAI8/rkDMN_8h3m4/s400/skitched-20110912-110728.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;That's it! All the steps necessary to create your Camel route using camel-mina are there!&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Here is a screenshot of what we just did with the complete route:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-YW24Ef6nNxk/Tm5LSv_2zlI/AAAAAAAAAJE/IciFLYPQoRM/s1600/Java+-+MinaSample_src_main_resources_META-INF_spring_camel-context.xml+-+Eclipse+-+_Applications_eclipse_workspace.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="157" src="http://1.bp.blogspot.com/-YW24Ef6nNxk/Tm5LSv_2zlI/AAAAAAAAAJE/IciFLYPQoRM/s400/Java+-+MinaSample_src_main_resources_META-INF_spring_camel-context.xml+-+Eclipse+-+_Applications_eclipse_workspace.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;So, if you want to test that route (there are many ways to do that) you'll need a client to connect to that endpoint exposed by our route.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Here is a very simple client to test it:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #941c64;"&gt;package&lt;/span&gt; com.fusesource.fusebyexample;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 15.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #941c64;"&gt;import&lt;/span&gt; java.io.*;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #941c64;"&gt;import&lt;/span&gt; java.net.*;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 15.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #941c64;"&gt;class&lt;/span&gt; TCPClient{&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 15.0px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp;&lt;span style="color: #941c64;"&gt;public&lt;/span&gt; &lt;span style="color: #941c64;"&gt;static&lt;/span&gt; &lt;span style="color: #941c64;"&gt;void&lt;/span&gt; main(String argv[]) &lt;span style="color: #941c64;"&gt;throws&lt;/span&gt; Exception{&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 15.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt; String sentence = &lt;span style="color: #941c64;"&gt;null&lt;/span&gt;;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt; String modifiedSentence;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt; &lt;span style="color: #941c64;"&gt;boolean&lt;/span&gt; &lt;span style="text-decoration: underline;"&gt;clientUp&lt;/span&gt; = &lt;span style="color: #941c64;"&gt;true&lt;/span&gt;;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 15.0px;"&gt;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt; BufferedReader inFromUser = &lt;span style="color: #941c64;"&gt;new&lt;/span&gt; BufferedReader( &lt;span style="color: #941c64;"&gt;new&lt;/span&gt; InputStreamReader(System.&lt;span style="color: #0431c3;"&gt;in&lt;/span&gt;));&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt; Socket clientSocket = &lt;span style="color: #941c64;"&gt;new&lt;/span&gt; Socket(&lt;span style="color: #3a40f4;"&gt;"localhost"&lt;/span&gt;, 8888);&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt; DataOutputStream outToServer = &lt;span style="color: #941c64;"&gt;new&lt;/span&gt; DataOutputStream(clientSocket.getOutputStream());&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt; BufferedReader inFromServer = &lt;span style="color: #941c64;"&gt;new&lt;/span&gt; BufferedReader(&lt;span style="color: #941c64;"&gt;new&lt;/span&gt; InputStreamReader(clientSocket.getInputStream()));&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 15.0px;"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt; &lt;span style="color: #941c64;"&gt;while&lt;/span&gt;(clientUp = &lt;span style="color: #941c64;"&gt;true&lt;/span&gt;){&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 15.0px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;sentence = inFromUser.readLine();&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;outToServer.writeBytes(sentence + &lt;span style="color: #3a40f4;"&gt;'\n'&lt;/span&gt;);&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;modifiedSentence = inFromServer.readLine();&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;System.&lt;span style="color: #0431c3;"&gt;out&lt;/span&gt;.println(&lt;span style="color: #3a40f4;"&gt;"FROM SERVER: "&lt;/span&gt; + modifiedSentence);&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 15.0px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;&lt;span style="color: #941c64;"&gt;if&lt;/span&gt;(modifiedSentence.equals(&lt;span style="color: #3a40f4;"&gt;"STOP"&lt;/span&gt;)){&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt;			&lt;/span&gt;clientSocket.close();&lt;/div&gt;&lt;div style="color: #3a40f4; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt;			&lt;/span&gt;System.&lt;/span&gt;&lt;span style="color: #0431c3;"&gt;out&lt;/span&gt;&lt;span style="color: black;"&gt;.println(&lt;/span&gt;"Stopping TCP Client..."&lt;span style="color: black;"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;&amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;System.exit(0);&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 15.0px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;			&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt; }&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp;}&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;Don't forget to include camel-mina dependency in your POM file before you deploy your Camel route.&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;Next, let's test our route. Right-click on your camel-context.xml file and then select Run As... --&amp;gt;&amp;nbsp;Local&amp;nbsp;Camel Context. Watch the FUSE IDE console for any issues being reported or for a successful deployment. You can also run the Camel route manually by executing the following command:&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;$ mvn camel:run&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;Also, run the sample client which opens a prompt for you to type a message. Type for example "apache camel rocks!" and you should see a reply back like this: FROM SERVER: APACHE CAMEL ROCKS! as the result of our processing of the message by our bean.&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;This sample demonstration code is also available on GitHub:&amp;nbsp;&lt;a href="https://github.com/mjabali/MinaSample"&gt;https://github.com/mjabali/MinaSample&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;Enjoy the ride!&lt;/div&gt;&lt;div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-5335712925400504748?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/5335712925400504748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/09/using-apache-mina-in-camel.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/5335712925400504748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/5335712925400504748'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/09/using-apache-mina-in-camel.html' title='Using the MINA component in Apache Camel'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-8_VN1EGjN5E/Tm5Kz6YcBSI/AAAAAAAAAJA/NGbu5PAcBbU/s72-c/Java+-+Eclipse+-+_Applications_eclipse_workspace.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-2861085052736390090</id><published>2011-08-19T10:48:00.000-07:00</published><updated>2011-08-19T10:55:43.793-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='activemq'/><category scheme='http://www.blogger.com/atom/ns#' term='web-console'/><category scheme='http://www.blogger.com/atom/ns#' term='fusesource'/><category scheme='http://www.blogger.com/atom/ns#' term='servicemix'/><title type='text'>How to Enable ActiveMQ Web Console on ServiceMix 4.4</title><content type='html'>A few days ago I was helping an Apache user getting the ActiveMQ Web Console up and running on &lt;a href="http://servicemix.apache.org/"&gt;ServiceMix&lt;/a&gt; 4.4. At first instance, it seems to be a trivial setting but it's a little bit tricky.&lt;br /&gt;&lt;br /&gt;Out of the box, every ServiceMix instance comes with an embedded &lt;a href="http://activemq.apache.org/"&gt;ActiveMQ&lt;/a&gt; JMS (Java Message Service) broker. This feature makes it easy to communicate between Camel routes using persistent messages and also to distribute messages over multiple instances using clustering or load balancing.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://activemq.apache.org/web-console.html"&gt;ActiveMQ Web Console&lt;/a&gt; feature is included &amp;nbsp;in any ActiveMQ distribution and you'll probably want to have it installed in ServiceMix as well to make sure you can monitor your JMS broker.&lt;br /&gt;&lt;br /&gt;So, the first thing you have to do is to install the war feature running the following command:&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #f0f0f0; font-family: Courier; font-size: 11px; line-height: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code-java" style="margin-bottom: 5px; margin-left: 15px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;/pre&gt;&lt;pre class="code-java" style="margin-bottom: 5px; margin-left: 15px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;karaf@root&amp;gt; features:install war&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then you can do run the following command to install the ActiveMQ Web Console:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #f0f0f0; font-family: Courier; font-size: 11px; line-height: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code-java" style="margin-bottom: 5px; margin-left: 15px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;karaf@root&amp;gt; features:install activemq-web-console &lt;/pre&gt;&lt;pre class="code-java" style="margin-bottom: 5px; margin-left: 15px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;/pre&gt;&lt;br /&gt;This command will install and start the web console automatically with an embedded broker which you &amp;nbsp;can access going to the following URL: &lt;a href="http://localhost:8181/activemqweb"&gt;http://localhost:8181/activemqweb&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;But that brings the first issue... Once you have the default embedded ActiveMQ broker running then the Web Console will fail to start since it also tries to start an instance of the ActiveMQ basically on the same port number. It's quite frustrating to install a feature on ServiceMix and not be able to test it or execute it right away.&lt;br /&gt;&lt;br /&gt;So, to configure the ActiveMQ Web Console to connect to the default embedded broker you have to do a little extra configuration change but that should be straightforward.&lt;br /&gt;&lt;br /&gt;Go to $SMX_HOME/etc and edit the system.properties file then add the following details:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #f0f0f0; font-family: Courier; font-size: 11px; line-height: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code-java" style="margin-bottom: 5px; margin-left: 15px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;webconsole.type=properties&lt;br /&gt;webconsole.jms.url=tcp:&lt;span class="code-comment" style="background-color: inherit; color: grey;"&gt;//localhost:61616&lt;br /&gt;&lt;/span&gt;webconsole.jmx.url=service:jmx:rmi:&lt;span class="code-comment" style="background-color: inherit; color: grey;"&gt;///jndi/rmi://localhost:1099/karaf-root&lt;br /&gt;&lt;/span&gt;webconsole.jmx.user=smx&lt;br /&gt;webconsole.jmx.password=smx&lt;/pre&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Save it and (re)start ServiceMix. That should be enough to get the ActiveMQ Web Console connected to the default embedded broker in ServiceMix.&lt;br /&gt;&lt;br /&gt;If you don't want to monitor the default embedded broker but want to stick with the instance that the Web Console starts for you then all you will have to do is to uninstall the default embedded ActiveMQ broker with the following command:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #f0f0f0; font-family: Courier; font-size: 11px; line-height: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code-java" style="margin-bottom: 5px; margin-left: 15px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;karaf@root&amp;gt; features:uninstall activemq-broker &lt;/pre&gt;&lt;pre class="code-java" style="margin-bottom: 5px; margin-left: 15px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;/pre&gt;&lt;br /&gt;and then restart ServiceMix. This way there will be no conflicts on the ActiveMQ port number anymore.&lt;br /&gt;&lt;br /&gt;I hope this helps to clarify some of the issues out there...&lt;br /&gt;&lt;br /&gt;Enjoy the ride!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-2861085052736390090?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/2861085052736390090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/08/how-to-enable-activemq-web-console-on.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/2861085052736390090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/2861085052736390090'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/08/how-to-enable-activemq-web-console-on.html' title='How to Enable ActiveMQ Web Console on ServiceMix 4.4'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-9132283426209890794</id><published>2011-08-13T12:25:00.000-07:00</published><updated>2011-08-13T12:27:20.593-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='camel'/><category scheme='http://www.blogger.com/atom/ns#' term='fusesource'/><category scheme='http://www.blogger.com/atom/ns#' term='fuseide'/><title type='text'>Throttler Enterprise Integration Pattern Demo</title><content type='html'>The second video demonstration posted to the &lt;a href="http://www.fusesource.com/"&gt;FuseSource website&lt;/a&gt; describes the &lt;a href="http://camel.apache.org/throttler.html"&gt;Throttler EIP&lt;/a&gt; (Enterprise Integration Pattern) pattern and shows you how you can achieve that with Camel and the Fuse IDE.&lt;br /&gt;&lt;br /&gt;So, take a look on the video below to understand more about the pattern.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://0.gvt0.com/vi/oxlwtxIT_jw/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/oxlwtxIT_jw&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/oxlwtxIT_jw&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Enjoy the ride!&lt;/div&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/7850628466108183059-9132283426209890794?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/9132283426209890794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/08/throttler-enterprise-integration.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/9132283426209890794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/9132283426209890794'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/08/throttler-enterprise-integration.html' title='Throttler Enterprise Integration Pattern Demo'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-7284757650115677944</id><published>2011-08-13T12:17:00.000-07:00</published><updated>2011-08-13T12:26:42.605-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='activemq'/><category scheme='http://www.blogger.com/atom/ns#' term='camel'/><category scheme='http://www.blogger.com/atom/ns#' term='fusesource'/><category scheme='http://www.blogger.com/atom/ns#' term='fuseide'/><title type='text'>Endpoint Browsing and Route Tracing with Fuse IDE</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: left;"&gt;This week two 5-minute demos were posted to the &lt;a href="http://www.fusesource.com/"&gt;FuseSource website&lt;/a&gt;. The first one describes how to do endpoint browsing and route tracing with Fuse IDE.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;I've linked the video here too, so you can take a look on these features.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://0.gvt0.com/vi/Wgq9-ylZ7uA/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Wgq9-ylZ7uA&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/Wgq9-ylZ7uA&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Enjoy the ride!&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-7284757650115677944?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/7284757650115677944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/08/endpoint-browsing-and-route-tracing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/7284757650115677944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/7284757650115677944'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/08/endpoint-browsing-and-route-tracing.html' title='Endpoint Browsing and Route Tracing with Fuse IDE'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-1156593640730659477</id><published>2011-08-09T14:17:00.000-07:00</published><updated>2011-08-09T14:19:50.773-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='camel'/><category scheme='http://www.blogger.com/atom/ns#' term='fusesource'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Reducing Spring Dependency with Apache Camel 2.9</title><content type='html'>Claus Ibsen (&lt;a href="http://twitter.com/#!/davsclaus"&gt;@davsclaus&lt;/a&gt;) brilliantly blogged about a new fundamental change on &lt;a href="http://camel.apache.org/"&gt;Apache Camel 2.9&lt;/a&gt;. Basically, the goal is to reduce the dependency of the Spring framework JAR files in the core components of Camel and other components where they are used.&lt;br /&gt;&lt;br /&gt;You can read more about this exciting change on Claus' blog entry&amp;nbsp;&lt;a href="http://davsclaus.blogspot.com/2011/08/apache-camel-29-reduced-dependency-on.html"&gt;http://davsclaus.blogspot.com/2011/08/apache-camel-29-reduced-dependency-on.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy the ride!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-1156593640730659477?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/1156593640730659477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/08/reducing-spring-dependency-with-apache.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/1156593640730659477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/1156593640730659477'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/08/reducing-spring-dependency-with-apache.html' title='Reducing Spring Dependency with Apache Camel 2.9'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-7056871719845903839</id><published>2011-08-04T11:05:00.000-07:00</published><updated>2011-08-04T11:07:06.505-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='activemq'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='camel'/><category scheme='http://www.blogger.com/atom/ns#' term='fusesource'/><category scheme='http://www.blogger.com/atom/ns#' term='fuseide'/><title type='text'>New Fuse IDE 2.0 Release</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;We recently announced (&lt;/span&gt;&lt;a href="http://fusesource.com/press-releases/fusesource-press-release-8-2-2011/"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;http://fusesource.com/press-releases/fusesource-press-release-8-2-2011/&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;)&amp;nbsp;a new release of the Fuse IDE (&lt;/span&gt;&lt;a href="http://fusesource.com/products/fuse-ide/"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;http://fusesource.com/products/fuse-ide/&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;).&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Now at version 2.0, the Fuse IDE (an Eclipse plugin) builds on a visual environment that enables developers to "drag-and-drop" the integration and mediation components needed to connect several systems and applications. I'd like to give you some highlights of this very exciting release.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Additionally to the already known features (&lt;/span&gt;&lt;a href="http://fusesource.com/collateral/112/"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;http://fusesource.com/collateral/112/&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;), here is what's included:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Lucida Grande';"&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 12px; line-height: 18px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 12px; line-height: 18px;"&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Endpoint browsing&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;– which makes it easy to see and inspect the available messages on endpoints or JMS&amp;nbsp; queues&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-RE42nkEYbKE/TjreIGtKhmI/AAAAAAAAAI4/tSDWfQb06Us/s1600/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="70" src="http://4.bp.blogspot.com/-RE42nkEYbKE/TjreIGtKhmI/AAAAAAAAAI4/tSDWfQb06Us/s400/4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Message drag and drop&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;– from an endpoint or JMS queue to any Camel endpoint or JMS destination to quickly try out integration scenarios&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;JMX explorer&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;– tailored to view Fuse integration applications&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-LXML385F1FU/TjrcHjG0K4I/AAAAAAAAAIs/uiS_EPHbpZQ/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-LXML385F1FU/TjrcHjG0K4I/AAAAAAAAAIs/uiS_EPHbpZQ/s400/3.png" width="315" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Graphical viewer&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; – displays all brokers, queues, topics, Camel endpoints, and Camel routes available in a remote JVM&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-lF0KEaqhiHo/TjrcY5ymxwI/AAAAAAAAAI0/oak1MzJjCLA/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="290" src="http://3.bp.blogspot.com/-lF0KEaqhiHo/TjrcY5ymxwI/AAAAAAAAAI0/oak1MzJjCLA/s400/1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Route tracing&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&amp;nbsp;– step through each version of each message to see how message headers and bodies change as they move through routes&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-N6dtYV1guFs/TjrcO2TMfRI/AAAAAAAAAIw/s1rI7f02zlw/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="145" src="http://3.bp.blogspot.com/-N6dtYV1guFs/TjrcO2TMfRI/AAAAAAAAAIw/s1rI7f02zlw/s400/2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;So, don't wait to try out these new features... download the new Fuse IDE, provide feedback and we can make it even better!&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Enjoy the ride!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-7056871719845903839?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/7056871719845903839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/08/new-fuse-ide-20-release.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/7056871719845903839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/7056871719845903839'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/08/new-fuse-ide-20-release.html' title='New Fuse IDE 2.0 Release'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-RE42nkEYbKE/TjreIGtKhmI/AAAAAAAAAI4/tSDWfQb06Us/s72-c/4.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-6631852350125902454</id><published>2011-07-21T12:47:00.000-07:00</published><updated>2011-07-21T16:04:24.477-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='snmp'/><category scheme='http://www.blogger.com/atom/ns#' term='camel'/><category scheme='http://www.blogger.com/atom/ns#' term='fusesource'/><category scheme='http://www.blogger.com/atom/ns#' term='fuseide'/><title type='text'>Using Apache Camel to Monitor SNMP-enabled devices</title><content type='html'>I've been working with a hardware manufacturer company this week that wanted to use Apache Camel to get information about SNMP-enabled (&lt;a href="http://en.wikipedia.org/wiki/Simple_Network_Management_Protocol"&gt;http://en.wikipedia.org/wiki/Simple_Network_Management_Protocol&lt;/a&gt;) devices.&lt;br /&gt;&lt;br /&gt;As you may know, Apache Camel has a SNMP component (&lt;a href="http://camel.apache.org/snmp.html"&gt;http://camel.apache.org/snmp.html&lt;/a&gt;) able to poll devices or receive SNMP traps.&lt;br /&gt;&lt;br /&gt;Here is a very simple Camel route example that we used to get started with the camel-snmp component:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #94268c; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #009192;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #4c9191;"&gt;xml&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;version&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: #3a40f4;"&gt;"1.0"&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;encoding&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: #3a40f4;"&gt;"UTF-8"&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;standalone&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: #3a40f4;"&gt;"no"&lt;/span&gt;&lt;span style="color: #009192;"&gt;?&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #4f78c4; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;lt;!-- Configures the Camel Context--&amp;gt;&lt;/div&gt;&lt;div style="color: #3a40f4; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #009192;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #4c9191;"&gt;beans&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #94268c;"&gt;xmlns&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"http://www.springframework.org/schema/beans"&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #94268c;"&gt;xmlns:camel&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"http://camel.apache.org/schema/spring"&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #94268c;"&gt;xmlns:xsi&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"http://www.w3.org/2001/XMLSchema-instance"&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #94268c;"&gt;xsi:schemaLocation&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 15.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #3a40f4; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #009192;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #4c9191;"&gt;camelContext&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #94268c;"&gt;xmlns&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"http://camel.apache.org/schema/spring"&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #009192;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #4c9191;"&gt;package&lt;/span&gt;&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;com.fusesource.fusebyexample&lt;span style="color: #009192;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #4c9191;"&gt;package&lt;/span&gt;&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3a40f4; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #009192;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #4c9191;"&gt;route&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #94268c;"&gt;id&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"SNMP-Sample-Route"&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3a40f4; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #009192;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #4c9191;"&gt;from&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #94268c;"&gt;uri&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"snmp:1.1.1.12:161?&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; protocol=udp&amp;amp;amp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; type=POLL&amp;amp;amp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; delay=10&amp;amp;amp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; oids=1.3.6.1.2.1.1.3.0"&lt;span style="color: #009192;"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3a40f4; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #009192;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #4c9191;"&gt;log&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #94268c;"&gt;logName&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"SNMP_LOG"&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;/span&gt;&lt;span style="color: #94268c;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; loggingLevel&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"INFO"&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;/span&gt;&lt;span style="color: #94268c;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; message&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; ${body}"&lt;span style="color: #009192;"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #4c9191; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: #009192;"&gt;&amp;lt;/&lt;/span&gt;route&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #4c9191; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #009192;"&gt;&amp;lt;/&lt;/span&gt;camelContext&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 15.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #4c9191; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #009192;"&gt;&amp;lt;/&lt;/span&gt;beans&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;So, the snmp-camel component has many configuration options but you basically have to provide the following:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: Courier; font-size: 11px; line-height: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="code-java" style="margin-bottom: 5px; margin-left: 15px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;snmp:&lt;span class="code-comment" style="background-color: inherit; color: grey;"&gt;//hostname[:port][?Options]&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code-java" style="margin-bottom: 5px; margin-left: 15px; margin-right: 5px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="color: grey;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Additionally, you have the following options:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-L4QpZQdM2B8/Tih820h21mI/AAAAAAAAAIo/6UgLQucIwWI/s1600/1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://2.bp.blogspot.com/-L4QpZQdM2B8/Tih820h21mI/AAAAAAAAAIo/6UgLQucIwWI/s400/1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;On our example, we added the following (additionally to the hostname and port number of the host we wanted to get information from) to test the configuration:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;protocol=UDP - You can either use UDP or TCP protocols&lt;br /&gt;&lt;br /&gt;type=POLL - You can enter POLL or TRAP to define whether the camel component is going to poll the device for info and create a listener for SNMP trap events&lt;br /&gt;&lt;br /&gt;delay=10 - Frequency you want to poll the device for information&lt;br /&gt;&lt;br /&gt;oids=1.3.6.1.2.1.1.3.0 - In this particular example, we setup the OID which retrieves the amount of time the device is up (&lt;a href="http://www.oid-info.com/get/1.3.6.1.2.1.1.3.0"&gt;http://www.oid-info.com/get/1.3.6.1.2.1.1.3.0&lt;/a&gt;)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;The last piece of our Camel route was just a log component because we wanted to see what was coming back from the device. That's all!&lt;br /&gt;&lt;br /&gt;We also used the FUSE IDE to rapidly test the scenario we wanted and that was pretty straightforward. The FUSE IDE can be downloaded from (&lt;a href="http://fusesource.com/products/fuse-ide-camel/"&gt;http://fusesource.com/products/fuse-ide-camel/&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Don't forget to include camel-snmp as a dependency in your pom.xml file if you're using Maven which&lt;br /&gt;should be like this:&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #4c9191; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #009192;"&gt;&amp;lt;&lt;/span&gt;dependency&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp; &amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #009192;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #4c9191;"&gt;groupId&lt;/span&gt;&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;org.apache.camel&lt;span style="color: #009192;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #4c9191;"&gt;groupId&lt;/span&gt;&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #4c9191; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #009192;"&gt;&amp;lt;&lt;/span&gt;artifactId&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;camel-snmp&lt;/span&gt;&lt;span style="color: #009192;"&gt;&amp;lt;/&lt;/span&gt;artifactId&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp; &amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;span style="color: #009192;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #4c9191;"&gt;version&lt;/span&gt;&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;${camel-version}&lt;span style="color: #009192;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #4c9191;"&gt;version&lt;/span&gt;&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #4c9191; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: #009192;"&gt;&amp;lt;/&lt;/span&gt;dependency&lt;span style="color: #009192;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #4c9191; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span class="Apple-style-span" style="color: #009192;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #009192;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: Times; font-size: small;"&gt;Enjoy the ride!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-6631852350125902454?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/6631852350125902454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/07/using-apache-camel-to-monitor-snmp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/6631852350125902454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/6631852350125902454'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/07/using-apache-camel-to-monitor-snmp.html' title='Using Apache Camel to Monitor SNMP-enabled devices'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-L4QpZQdM2B8/Tih820h21mI/AAAAAAAAAIo/6UgLQucIwWI/s72-c/1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-2473949593069131324</id><published>2011-07-08T11:30:00.000-07:00</published><updated>2011-07-08T11:50:49.590-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CXF'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='camel'/><category scheme='http://www.blogger.com/atom/ns#' term='fusesource'/><category scheme='http://www.blogger.com/atom/ns#' term='fuseide'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='webservices'/><title type='text'>Calling Web Services with Apache Camel</title><content type='html'>Web Services are very important components of most (if not all) of the integration projects these days. The Web Services architecture make them extremely useful for distributed applications and they are often associated with Service-Oriented Architecture (SOA).&lt;br /&gt;&lt;br /&gt;Calling Web Services from Apache Camel is pretty simple yet powerful and Camel uses Apache CXF (&lt;a href="http://cxf.apache.org/"&gt;http://cxf.apache.org&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Apache CXF provides you many options to build Web Services (JAX-WS Annotated Services from Java, JAX-WS Annotated Services from WSDL, JAX-WS Providers, Simple Frontend and JavaScript).&lt;br /&gt;Additionally, there are three major types of services (SOAP, REST and CORBA). For more information, check this web page&amp;nbsp;&lt;a href="http://cxf.apache.org/docs/how-do-i-develop-a-service.html"&gt;http://cxf.apache.org/docs/how-do-i-develop-a-service.html&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;JAX-WS (Java API for XML Web Services) specification defines annotations that allow you to tell CXF how your POJOs should be represented on the web.&lt;br /&gt;&lt;br /&gt;Basically, there two types of web services development with Apache CXF:&lt;br /&gt;&lt;br /&gt;Contract-first development - Recall that WSDLs define what operation and types a web service provides. This is often referred to as web services contract, and in order to communicate with a web service, you must satisfy the contract. Contract-first development means that you develop a WSDL file and then generate stub Java class implementations using a tool like Apache CXF.&lt;br /&gt;&lt;br /&gt;Code-first development - The other way to develop web services is by starting out with a Java class and then letting the web service framework handle the job of generating a WSDL contract for you. In this case, Apache CXF will be in control of what the contract will be.&lt;br /&gt;&lt;br /&gt;To configure the CXF component URI in Camel there are two main ways that you can do that:&lt;br /&gt;&lt;br /&gt;Configuring Using the URI Options - The most simple way (and the one will be using for demo purposes) where you pass inline parameters to the component. Here is the format you have to specify:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cxf://&amp;lt;service_address&amp;gt;[?options]&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;The options available for the CXF component are available here:&amp;nbsp;&lt;a href="http://camel.apache.org/cxf.html"&gt;http://camel.apache.org/cxf.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Referencing a Bean - Using this approach, you have to specify a bean containing the configuration. You have much more power and flexibility than configuring CXF via URI options but it also requires more work on your side. You can configure things like CXF interceptors, JAX-WS handlers and the CXF bus but we're going to cover that on a different blog post. To configure the CXF component referencing a bean the URI is something like this:&lt;br /&gt;&lt;br /&gt;cxf:bean:beanName where the beanName specifies the ID of the CXF endpoint bean defined in your Spring XML file.&lt;br /&gt;&lt;br /&gt;So, to give you a taste of what's going to be a simple project calling Web Services with Apache Camel here is the step-by-step procedure:&lt;br /&gt;&lt;br /&gt;I'll be using the FuseIDE for that but the artifacts generated are pretty much the same if you choose the Maven approach.&lt;br /&gt;&lt;br /&gt;Here is what you need:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;- Eclipse IDE (Eclipse Helios 3.6.2)&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;- Apache Maven (3.0.3)&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;- FuseSource Camel IDE (&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;a href="http://fusesource.com/products/fuse-ide-camel/" style="color: #2288bb; text-decoration: none;"&gt;http://fusesource.com/products/fuse-ide-camel/&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Then, create a new Fuse IDE project and select&amp;nbsp;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;the Camel Archetype and type the Group Id, Artifact Id and Package name for your project then click Finish.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;As I've explained before on my previous post (&lt;a href="http://marcelojabali.blogspot.com/2011/06/file-batch-splitter-with-apache-camel.html"&gt;http://marcelojabali.blogspot.com/2011/06/file-batch-splitter-with-apache-camel.html&lt;/a&gt;) the default Fuse IDE project comes with a sample configuration that you can remove for the purpose of this demonstration.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;Create a new Camel XML File (camelContext.xml) and then create a new route.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;Drag and drop an endpoint from the palette and also a log component. Connect them and make sure you save your project. You should see something like the picture below:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-wHVDy_g5zyc/Thcu8XdN7cI/AAAAAAAAAIg/Eac9ArOGr7c/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="102" src="http://3.bp.blogspot.com/-wHVDy_g5zyc/Thcu8XdN7cI/AAAAAAAAAIg/Eac9ArOGr7c/s400/1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;Edit the URI property of the Endpoint to be:&amp;nbsp;file:src/data?noop=true&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;Edit the Message property of the Log component to be: ${body} and the Logging Level to INFO&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;You should be able to run this route now which is going to display the content of files under the src/data directory in your project in the Camel log. It's always a good practice to make sure every step in your route runs consistently and without any problems.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;To run the Camel route (if you're using the FuseIDE) just right click int the Camel XML file and then select Run As... Local Camel Context.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;If everything executed correctly you should see the content of the files in the Eclipse console and you're ready for the next step.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;Add another Endpoint to your route. Connect the Log component to the new created Endpoint.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;The recently added Endpoint is going to be our CXF component. We're going to use a sample Stock Quote Web Service available at&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.webservicex.net/WS/WSDetails.aspx?CATID=2&amp;amp;WSID=9"&gt;http://www.webservicex.net/WS/WSDetails.aspx?CATID=2&amp;amp;WSID=9&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Click on the Endpoint and then add the following to the URI:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cxf://http://www.webservicex.net/stockquote.asmx?wsdlURL=src/main/resources/META-INF/stockquote.wsdl&amp;amp;serviceName={http://www.webserviceX.NET/}StockQuote&amp;amp;portName={http://www.webserviceX.NET/}StockQuoteSoap&amp;amp;dataFormat=MESSAGE&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Here are the options being used on this simple call:&lt;br /&gt;&lt;br /&gt;cxf://http://www.webservicex.net/stockquote.asmx - Endpoint definition (cxf) and then the required service address&lt;br /&gt;&lt;br /&gt;wsdlURL=src/main/resources/META-INF/stockquote.wsdl - The location of the WSDL file&lt;br /&gt;&lt;br /&gt;serviceName={http://www.webserviceX.NET/}StockQuote - The service name this service is implementing, it maps to wsdl:service@name&lt;br /&gt;&lt;br /&gt;portName={http://www.webserviceX.NET/}StockQuoteSoap - The port name this service is implementing, it maps to wsdl:port@name&lt;br /&gt;&lt;br /&gt;dataFormat=MESSAGE - The data type messages supported by the CXF endpoint (default is POJO)&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-size: 10px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;The last step in the route to be implemented is a Log component to display the Web Service response. To do that, just add another Log and connect the CXF component to it.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-size: 10px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-size: 10px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;Edit the Message property of the Log component to be: ${body} and the Logging Level to INFO&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-size: 10px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-size: 10px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;Your route should be similar to the following:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-size: 10px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-X7419vEfa3s/Thc3DPLismI/AAAAAAAAAIk/q3EIcwUOC9s/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="117" src="http://1.bp.blogspot.com/-X7419vEfa3s/Thc3DPLismI/AAAAAAAAAIk/q3EIcwUOC9s/s400/2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-size: 10px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-size: 10px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;Save the project.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-size: 10px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-size: 10px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;For reference, here is the whole route:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-size: 10px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-size: 10px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-size: 10px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-size: 10px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span class="Apple-style-span" style="color: #7f007f;"&gt;&lt;span style="color: teal;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;xml&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;version&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: #2a00ff;"&gt;"1.0"&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;encoding&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: #2a00ff;"&gt;"UTF-8"&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;standalone&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: #2a00ff;"&gt;"no"&lt;/span&gt;&lt;span style="color: teal;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;beans&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #7f007f;"&gt;xmlns&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"http://www.springframework.org/schema/beans"&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #7f007f;"&gt;xmlns:cxf&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"http://camel.apache.org/schema/cxf"&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #7f007f;"&gt;xmlns:xsi&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"http://www.w3.org/2001/XMLSchema-instance"&lt;span style="color: black;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="color: #7f007f;"&gt;xsi:schemaLocation&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"http://www.springframework.org/schema/beans &amp;nbsp;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;http://www.springframework.org/schema/beans/spring-beans-3.0.xsd&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;http://camel.apache.org/schema/spring&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;http://camel.apache.org/schema/spring/camel-spring.xsd"&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 15.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;camelContext&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;xmlns&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"http://camel.apache.org/schema/spring"&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;trace&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"false"&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;route&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;id&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"my_Sample_Camel_Route_with_CXF"&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;from&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;uri&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"file:src/data?noop=true"&lt;span style="color: teal;"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;log&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;loggingLevel&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"INFO"&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;message&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; ${body}"&lt;span style="color: teal;"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;to&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;uri&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"cxf://http://www.webservicex.net/stockquote.asmx?&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;wsdlURL=src/main/resources/META-INF/stockquote.wsdl&amp;amp;amp;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;serviceName={http://www.webserviceX.NET/}StockQuote&amp;amp;amp;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;portName={http://www.webserviceX.NET/}StockQuoteSoap&amp;amp;amp;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;dataFormat=MESSAGE"&lt;span style="color: teal;"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;log&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;loggingLevel&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"INFO"&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;message&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; ${body}"&lt;span style="color: teal;"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;route&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;camelContext&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px; min-height: 15.0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;beans&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-size: 10px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-size: 10px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;Before you test it make sure you change the values of the sample messages (under src/data) to the following:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-size: 10px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-size: 10px;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate; font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;message1.xml:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;&lt;span style="color: teal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;&lt;span style="color: teal;"&gt;&amp;lt;?&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;&lt;span style="color: #3f7f7f;"&gt;xml&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;version&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;&lt;span style="color: #2a00ff;"&gt;"1.0"&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;encoding&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;&lt;span style="color: #2a00ff;"&gt;"utf-8"&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;&lt;span style="color: teal;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: verdana, arial, helvetica, sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-family: Times;"&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;soap12:Envelope&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;xmlns:xsi&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"http://www.w3.org/2001/XMLSchema-instance"&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;xmlns:xsd&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"http://www.w3.org/2001/XMLSchema"&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;xmlns:soap12&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"http://www.w3.org/2003/05/soap-envelope"&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;soap12:Body&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;GetQuote&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;xmlns&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"http://www.webserviceX.NET/"&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;symbol&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;AAPL&lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;symbol&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;GetQuote&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;soap12:Body&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;soap12:Envelope&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span class="Apple-style-span" style="color: teal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;message2.xml:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #7f007f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;xml&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;version&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: #2a00ff;"&gt;"1.0"&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;encoding&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span style="color: #2a00ff;"&gt;"utf-8"&lt;/span&gt;&lt;span style="color: teal;"&gt;?&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;soap12:Envelope&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;xmlns:xsi&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"http://www.w3.org/2001/XMLSchema-instance"&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;xmlns:xsd&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"http://www.w3.org/2001/XMLSchema"&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;xmlns:soap12&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"http://www.w3.org/2003/05/soap-envelope"&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;soap12:Body&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;GetQuote&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;xmlns&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"http://www.webserviceX.NET/"&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;symbol&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;GOOG&lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;symbol&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;GetQuote&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;soap12:Body&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;soap12:Envelope&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span style="color: teal;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;This is the SOAP format that the web service is expecting and we're not doing any message transformation here so far.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;At this point, you're ready to go and you just need to run the Camel route as explained before.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;After you run the route, you should see two messages being displayed in the Eclipse console with the content of the files you just edited and then two responses from the Web Service showing the stock value of AAPL and GOOG.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 18px;"&gt;The sample code is available at&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href="https://github.com/mjabali/CXF-Sample"&gt;https://github.com/mjabali/CXF-Sample&lt;/a&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: normal normal normal 11px/normal Monaco; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"&gt;Enjoy the ride!&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span class="Apple-style-span" style="color: teal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-family: verdana, arial, helvetica, sans-serif; font-size: 10px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; border-collapse: collapse; font-family: verdana, arial, helvetica, sans-serif; font-size: 10px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-2473949593069131324?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/2473949593069131324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/07/calling-web-services-with-apache-camel.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/2473949593069131324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/2473949593069131324'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/07/calling-web-services-with-apache-camel.html' title='Calling Web Services with Apache Camel'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-wHVDy_g5zyc/Thcu8XdN7cI/AAAAAAAAAIg/Eac9ArOGr7c/s72-c/1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-7092682737365500999</id><published>2011-06-08T19:42:00.000-07:00</published><updated>2011-06-16T12:01:53.011-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='split'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='camel'/><category scheme='http://www.blogger.com/atom/ns#' term='fusesource'/><category scheme='http://www.blogger.com/atom/ns#' term='eip'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>File Batch Splitter with Apache Camel and FuseSource Camel IDE</title><content type='html'>The Splitter from the EIP patterns allows you split a message into a number of pieces and process them individually.&lt;br /&gt;&lt;br /&gt;To implement that EIP pattern using Apache Camel and FuseSource Camel IDE is very simple. Here is what you need:&lt;br /&gt;&lt;br /&gt;1) Eclipse IDE (Eclipse Helios 3.6.2)&lt;br /&gt;2) Apache Maven (3.0.3)&lt;br /&gt;3) FuseSource Camel IDE (&lt;a href="http://fusesource.com/products/fuse-ide-camel/"&gt;http://fusesource.com/products/fuse-ide-camel/&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/-EPDTqZKRUZQ/TfAhQWVI5xI/AAAAAAAAAHc/9SxVdRmC-O0/s1600/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="380" src="http://4.bp.blogspot.com/-EPDTqZKRUZQ/TfAhQWVI5xI/AAAAAAAAAHc/9SxVdRmC-O0/s400/1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;After you install and configure the tools mentioned above, start creating a new Fuse IDE Project.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Select the Camel Archetype and type the Group Id, Artifact Id and Package name for your project then click Finish:&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/-nGzJulCIsDo/TfAh4n4Hu0I/AAAAAAAAAHk/RQC_7Ltz8gM/s1600/2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-nGzJulCIsDo/TfAh4n4Hu0I/AAAAAAAAAHk/RQC_7Ltz8gM/s400/2.png" width="334" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;At this point you should have a sample Camel project and artifacts available for you. The default Camel project gives you another EIP, the Content-Based Router &lt;a href="http://camel.apache.org/content-based-router.html"&gt;(http://camel.apache.org/content-based-router.html)&lt;/a&gt;. You can open the camelContext.xml under the META-INF/spring directory and remove the Camel components available there since we're going to implement a different EIP (right-click and then Delete).&lt;br /&gt;&lt;br /&gt;To start creating the File Batch Splitter sample project, right-click in the canvas of the camelContext.xml file and select Add &amp;gt; Route. We're now ready to start building our process. Right-click inside the Route rectangle and select Add &amp;gt; Endpoints &amp;gt; Endpoint.&lt;br /&gt;&lt;br /&gt;Then, right-click again and select Add &amp;gt; Routing &amp;gt; Split. Finally, right-click and select Add &amp;gt; Endpoints &amp;gt; Endpoint. Now, click on the first created Endpoint and draw a line to the Split component. Do the same thing between the Split component and the second Endpoint.&lt;br /&gt;&lt;br /&gt;You can also click on the Automatic Layout icon available in the Eclipse top menu bar to automatically adjust your route diagram.&lt;br /&gt;&lt;br /&gt;Now, you have added all necessary components and should have something similar to the following picture.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-vJnbsQpIwxA/TfAmo_XUM2I/AAAAAAAAAHs/hqQ064YhXVQ/s1600/3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="110" src="http://2.bp.blogspot.com/-vJnbsQpIwxA/TfAmo_XUM2I/AAAAAAAAAHs/hqQ064YhXVQ/s400/3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You can now configure each component to execute the tasks needed to conclude the File Batch Splitter sample project. Basically, we'll consume files from one directory in the file system (an XML file with multiple records), split each record in the XML file into a new file in the file system.&lt;br /&gt;&lt;br /&gt;To do that, click on the first endpoint and go to the Properties tab where you can see the details of each component. In the Uri field, type: file:src/data?noop=true&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-J3Yr7kTlDJQ/TfAsw_M5e8I/AAAAAAAAAH0/ggUd7pWOidk/s1600/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="116" src="http://3.bp.blogspot.com/-J3Yr7kTlDJQ/TfAsw_M5e8I/AAAAAAAAAH0/ggUd7pWOidk/s400/4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Highlight the Split component and type the condition you want to generate new records from the input file. In this case, we're going to use the following: //club/person as a XPath expression.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-KaWwG4xwngg/TfFIvJDbxMI/AAAAAAAAAIc/R-cN5P81Co0/s1600/8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="197" src="http://3.bp.blogspot.com/-KaWwG4xwngg/TfFIvJDbxMI/AAAAAAAAAIc/R-cN5P81Co0/s400/8.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;And then, highlight the final endpoint and type the following in the Uri field: file:target/output?fileName=${date:now:yyyyMMddHHmmssSSSSS}.xml&lt;br /&gt;We're using a dynamic file name based on the current date to avoid conflicts and/or overriding the original files. So, every record gets a new file name when Camel creates the file.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-7EhEIUmfuUQ/TfFIoGe2IgI/AAAAAAAAAIU/MynmmAoPAfE/s1600/9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="108" src="http://2.bp.blogspot.com/-7EhEIUmfuUQ/TfFIoGe2IgI/AAAAAAAAAIU/MynmmAoPAfE/s400/9.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Before we execute our Camel project, we need an input file under the src/data directory. Here is the content of a sample file to use:&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;&lt;span style="color: teal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;&lt;span style="color: teal;"&gt;&amp;lt;?&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;&lt;span style="color: #3f7f7f;"&gt;xml&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;version&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;&lt;span style="color: #2a00ff;"&gt;"1.0"&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;encoding&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;&lt;span style="color: #2a00ff;"&gt;"UTF-8"&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;&lt;span style="color: teal;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #7f007f; font-family: Monaco; font-size: 11px;"&gt;&lt;span style="color: teal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #3f7f7f; font-family: Monaco; font-size: 11px;"&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;club&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;club&gt; &lt;/club&gt;&lt;br /&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;person&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;user&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"marcelo"&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;firstName&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;Marcelo&lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;firstName&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;lastName&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;Jabali&lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;lastName&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;city&lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;San Diego&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;city&lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;person&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #2a00ff; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;person&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span style="color: #7f007f;"&gt;user&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;"scott"&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;firstName&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;Scott&lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;firstName&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;lastName&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: black;"&gt;Cranton&lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;lastName&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: teal;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;city&lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;Boston&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #3f7f7f;"&gt;city&lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;person&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&amp;lt;/&lt;/span&gt;club&lt;span style="color: teal;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #3f7f7f; font: 11.0px Monaco; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;span style="color: teal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;The step before we execute the project is to configure how to run it. There are a couple different ways to run it but basically you can configure everything in Eclipse. Just go to Run &amp;gt; Run Configurations and then under Local Camel Context you can create a new configuration just pointing to the camel-Context.xml file. Click Apply and then Run.&lt;br /&gt;&lt;br /&gt;If everything was configured correctly you should be able to see two XML files under the src/output directory containing a person record each (don't forget to refresh the view).&lt;br /&gt;&lt;br /&gt;You also have the option to execute that project through Maven on the command line. Just navigate to the root directory of the project and type:&lt;br /&gt;&lt;br /&gt;&amp;gt;mvn camel:run&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-q_fyU96e4Vc/TfAymULDAOI/AAAAAAAAAIM/hIVF7Ex2wZE/s1600/7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="209" src="http://3.bp.blogspot.com/-q_fyU96e4Vc/TfAymULDAOI/AAAAAAAAAIM/hIVF7Ex2wZE/s400/7.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;That does the same thing that we executed under the Eclipse IDE.&lt;br /&gt;&lt;br /&gt;If you want to download the files and play with the samples the project files are available on GitHub (&lt;a href="https://github.com/FuseByExample/FileBatchSplitter"&gt;https://github.com/FuseByExample/FileBatchSplitter&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Enjoy the ride...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-7092682737365500999?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/7092682737365500999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/06/file-batch-splitter-with-apache-camel.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/7092682737365500999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/7092682737365500999'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/06/file-batch-splitter-with-apache-camel.html' title='File Batch Splitter with Apache Camel and FuseSource Camel IDE'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-EPDTqZKRUZQ/TfAhQWVI5xI/AAAAAAAAAHc/9SxVdRmC-O0/s72-c/1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-197418244493654663</id><published>2011-05-27T16:55:00.000-07:00</published><updated>2011-05-27T16:57:22.501-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='activemq'/><category scheme='http://www.blogger.com/atom/ns#' term='camel'/><category scheme='http://www.blogger.com/atom/ns#' term='jms'/><title type='text'>An Alternative Method to the Request-Reply Pattern for Message-Driven Application Configuration</title><content type='html'>On a recent &lt;a href="http://activemq.apache.org"&gt;ActiveMQ&lt;/a&gt; forum discussion, I presented an alternative to a common problem that I've seen more and more people running into.&lt;br /&gt;&lt;br /&gt;I've seem some companies using &lt;a href="http://www.oracle.com/technetwork/java/overview-137943.html"&gt;JMS - Java Message Service&lt;/a&gt; to provide application configuration based on the client profile. So, basically when the application starts, it connects to a JMS broker and then request its information. The application then receives all information necessary like settings, connections URLs, what destinations to read from and send to, etc.&lt;br /&gt;&lt;br /&gt;That's a very smart way to dynamically provide that kind of information and be able to make changes on the fly if necessary.&lt;br /&gt;&lt;br /&gt;You can transparently add and remove new features on the backend systems, change destinations, change server URLs, without performing any major update on the client side.&lt;br /&gt;&lt;br /&gt;What I also have noticed is that most of the people uses the &lt;a href="http://www.oracle.com/technetwork/java/docs-136352.html"&gt;JMS request-reply&lt;/a&gt; mechanism to achieve that which is a good way to do it but can cause some side effects and problems during the client-broker communication once the client application will be waiting for a response from the another application through the JMS broker.&lt;br /&gt;&lt;br /&gt;So, one alternative way to do that without the request-reply mechanism in place is employing the traditional point-to-point messaging model.&lt;br /&gt;&lt;br /&gt;Using point-to-point messaging techniques you can load the necessary configuration message to an ordinary queue and the client applications can read the necessary information from there.&lt;br /&gt;&lt;br /&gt;The client can instead of consume the message from the configuration queue, just browse the queue, which means that the client reads the message but doesn't remove it, so other client applications can benefit from the same configuration message as well.&lt;br /&gt;&lt;br /&gt;You also have the ability to load multiple configuration messages to the configuration queue with different message headers where the clients could use the JMS message selector capability to get the right message.&lt;br /&gt;&lt;br /&gt;When you need to update the configuration message you can consume that message administratively (simply connect a JMS client and consume the message would be the most simple way to do that) and then load the most updated information where the client applications can start reading from.&lt;br /&gt;&lt;br /&gt;You can also take a different approach and create a queue for each client application profile you have but that may not be the best way to do it if you have a large installation base as it will certainly consume more resources on the broker.&lt;br /&gt;&lt;br /&gt;Lastly, you can implement something really creative if you implement a &lt;a href="http://camel.apache.org"&gt;Camel&lt;/a&gt; route to provide the client application configuration but I'll cover that on another post.&lt;br /&gt;&lt;br /&gt;In summary, the idea here is to avoid the risk of the replier application not being able to respond in a timely fashion (it maybe be busy or offline) or consuming too many resources on the JMS broker with the request-reply pattern.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-197418244493654663?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/197418244493654663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/05/alternative-method-to-request-reply.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/197418244493654663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/197418244493654663'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/05/alternative-method-to-request-reply.html' title='An Alternative Method to the Request-Reply Pattern for Message-Driven Application Configuration'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-7686572887420243434</id><published>2011-05-13T10:14:00.000-07:00</published><updated>2011-05-13T10:14:25.171-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='inbox'/><category scheme='http://www.blogger.com/atom/ns#' term='filter'/><category scheme='http://www.blogger.com/atom/ns#' term='gmail'/><title type='text'>How to Configure GMail's filters to Move Messages from Your Inbox</title><content type='html'>I've been using GMail for almost a month now and honestly I really liked. It's really fast and has lots of good features and extensions.&lt;br /&gt;&lt;br /&gt;One of the things I was not really sure I was getting everything out of it was Filters. GMail's Filters allow you to manage the flow of incoming messages where you can automatically label, delete, forward, etc.&lt;br /&gt;As much as I like the label feature where you visually see what "category" the message belongs to I was not able to manage that properly and since I'm now on paternity leave my inbox started flooding once I could not keep up with the tons of emails I get subscribing to many mailing lists as they all show up on my Inbox.&lt;br /&gt;&lt;br /&gt;So, how can you apply the filters feature to move messages to other folders automatically? Where is the magic button? Actually, there is no magic button but a magic checkbox on the filter setting.&lt;br /&gt;&lt;br /&gt;When you create a new filter, you first select the search criteria (from, to, etc) and then you choose the action you want to take for that message category.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-0bF5I-8i3Cs/Tc1lprot7bI/AAAAAAAAAHE/ogU0TeCEmAA/s1600/Screen%2Bshot%2B2011-05-13%2Bat%2B10.06.34%2BAM.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="83" width="400" src="http://3.bp.blogspot.com/-0bF5I-8i3Cs/Tc1lprot7bI/AAAAAAAAAHE/ogU0TeCEmAA/s400/Screen%2Bshot%2B2011-05-13%2Bat%2B10.06.34%2BAM.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The first option on the Choose Action panel is Skip the Inbox (Archive It) and that's the missing part here. Check that checkbox.&lt;br /&gt;Now you just have to tell GMail where to move those messages. Check the Apply the label checkbox and then select the label you want.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-pDrnwB-vtSA/Tc1l6wX3p-I/AAAAAAAAAHM/HCyMVVE8egw/s1600/2.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="119" width="400" src="http://2.bp.blogspot.com/-pDrnwB-vtSA/Tc1l6wX3p-I/AAAAAAAAAHM/HCyMVVE8egw/s400/2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;That will give you exactly the Move To behavior and your Inbox will be much cleaner.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-7686572887420243434?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/7686572887420243434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/05/how-to-configure-gmails-filters-to-move.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/7686572887420243434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/7686572887420243434'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/05/how-to-configure-gmails-filters-to-move.html' title='How to Configure GMail&apos;s filters to Move Messages from Your Inbox'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-0bF5I-8i3Cs/Tc1lprot7bI/AAAAAAAAAHE/ogU0TeCEmAA/s72-c/Screen%2Bshot%2B2011-05-13%2Bat%2B10.06.34%2BAM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-1064887770981059640</id><published>2011-05-03T20:50:00.000-07:00</published><updated>2011-05-03T20:53:45.059-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='camelone'/><category scheme='http://www.blogger.com/atom/ns#' term='fusesource'/><title type='text'>CamelOne</title><content type='html'>Are you interested in Open Source integration and the benefits it brings to the table? So, here is my advice to you... &lt;a href="http://www.fusesource.com"&gt;FuseSource&lt;/a&gt; is sponsoring a great conference called CamelOne which is going to be held at the &lt;a href="http://www.starwoodhotels.com/westin/property/overview/index.html?propertyID=1513"&gt;Westin Arlington Gateway&lt;/a&gt; in Washington, DC between May 24-26, 2011.&lt;br /&gt;&lt;br /&gt;We have a great lineup of speakers and you should definitely go there and listen to them, interact with other users and have fun! &lt;br /&gt;&lt;br /&gt;Don't forget to bring your &lt;a href="http://www.manning.com/snyder/"&gt;ActiveMQ in Action&lt;/a&gt; and/or your &lt;a href="http://www.manning.com/ibsen/"&gt;Camel in Action&lt;/a&gt; books to get them signed.&lt;br /&gt;&lt;br /&gt;See you there!&lt;br /&gt;&lt;br /&gt;Click on the image below for more information...&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-um2HRYAWT5s/TcDMgu1Ul_I/AAAAAAAAAG8/fBG7rYfS5-k/s1600/1.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="125" width="400" src="http://1.bp.blogspot.com/-um2HRYAWT5s/TcDMgu1Ul_I/AAAAAAAAAG8/fBG7rYfS5-k/s400/1.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/7850628466108183059-1064887770981059640?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/1064887770981059640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/05/camelone.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/1064887770981059640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/1064887770981059640'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/05/camelone.html' title='CamelOne'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-um2HRYAWT5s/TcDMgu1Ul_I/AAAAAAAAAG8/fBG7rYfS5-k/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-3328147604126253031</id><published>2011-04-25T17:13:00.000-07:00</published><updated>2011-04-25T17:13:58.951-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='macos'/><category scheme='http://www.blogger.com/atom/ns#' term='safari'/><category scheme='http://www.blogger.com/atom/ns#' term='Alfred.app'/><category scheme='http://www.blogger.com/atom/ns#' term='Alfred'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><category scheme='http://www.blogger.com/atom/ns#' term='dictionary'/><category scheme='http://www.blogger.com/atom/ns#' term='mail.app'/><title type='text'>Quick Access to Mac Dictionary</title><content type='html'>Sometimes you want to know the word definition but don't want to navigate to a website to know what it really means. So, here is keyboard shortcut that will help you a lot faster to get what you need.&lt;br /&gt;&lt;br /&gt;1) Hover your mouse pointer over the word you wish to be defined (works in Safari, Mail and other Apple apps). I haven't tried in all of them yet.&lt;br /&gt;&lt;br /&gt;2) Press control + Apple Command + D. The word will be highlighted and a Dictionary pop up box will show in the screen with the word definition.&lt;br /&gt;&lt;br /&gt;3) Click anywhere in the screen to get rid of that pop up box.&lt;br /&gt;&lt;br /&gt;There is also another approach to this using a very cool app called &lt;a href="http://www.alfredapp.com/"&gt;Alfred&lt;/a&gt;. Alfred is a must-have productivity tool that lets you automate a lot of things. You can also use Alfred to give you the word definition by just calling the Alfred utility (I use control + space bar) and then typing &lt;i&gt;define&lt;/i&gt; and the word you want. The word definition should be presented on the screen for you.&lt;br /&gt;&lt;br /&gt;Alfred has so many functions (no need to say that I'm a big Alfred fan already) but that would be a topic for another post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-3328147604126253031?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/3328147604126253031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/04/quick-access-to-mac-dictionary.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/3328147604126253031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/3328147604126253031'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/04/quick-access-to-mac-dictionary.html' title='Quick Access to Mac Dictionary'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-5594036393237970861</id><published>2011-04-18T16:07:00.000-07:00</published><updated>2011-04-19T14:05:57.644-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Finder'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>How to Show Hidden Files in Finder</title><content type='html'>Just found this great tip on David Valeri's blog (&lt;a href="http://davidvaleri.wordpress.com/2010/12/23/how-i-learned-to-stop-worrying-and-love-os-x-for-java-development/#more-118"&gt;http://davidvaleri.wordpress.com/2010/12/23/how-i-learned-to-stop-worrying-and-love-os-x-for-java-development/#more-118&lt;/a&gt;). If you ever wonder how to show hidden files in Mac OS X Finder here is the procedure to enable it:&lt;br /&gt;&lt;br /&gt;Open a new Terminal (/Applications/Utilities/Terminal) window and type:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;defaults write com.apple.Finder AppleShowAllFiles TRUE&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;and to disable it:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;defaults write com.apple.Finder AppleShowAllFiles FALSE&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Don't forget to restart Finder after you enable/disable this setting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-5594036393237970861?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/5594036393237970861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/04/how-to-show-hidden-files-in-finder.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/5594036393237970861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/5594036393237970861'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/04/how-to-show-hidden-files-in-finder.html' title='How to Show Hidden Files in Finder'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-6038287547796262565</id><published>2011-04-14T10:26:00.000-07:00</published><updated>2011-04-14T10:27:58.496-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='sonic'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='progress'/><category scheme='http://www.blogger.com/atom/ns#' term='fusesource'/><category scheme='http://www.blogger.com/atom/ns#' term='openspan'/><title type='text'>Rebooting...</title><content type='html'>While it has been an incredible ride at &lt;a href="http://www.openspan.com"&gt;OpenSpan&lt;/a&gt; so far, I've decided to take a different route on my career and come back to the integration and messaging space. I'll be joining &lt;a href="http://www.fusesource.com"&gt;FuseSource&lt;/a&gt; as a Solutions Consultant next week.&lt;br /&gt;&lt;br /&gt;FuseSource provides enterprise support for its open source core products, Apache ServiceMix, ActiveMQ, Camel and CXF, as well as providing products to better enable production deployment and management around those projects like the new FUSE IDE for Camel.&lt;br /&gt;&lt;br /&gt;I'd like to take a moment to thank all the great minds at OpenSpan and wish them the best. I know that sometimes it's hard and disappointing to see someone that you trust and have lots of confidence on just go but this new opportunity in my life is well aligned with what I envision for the future.&lt;br /&gt;&lt;br /&gt;On the other hand, I'm extremely excited to join another fast-growing company and also to be back into the integration &amp; messaging space where most of my background is after more than 10 years working with &lt;a href="http://web.progress.com/en/sonic/index.html"&gt;Progress Sonic&lt;/a&gt; products. &lt;br /&gt;&lt;br /&gt;There are many aspects that motivated me to make an early move and I really hope I can prove all of them to be true.&lt;br /&gt;&lt;br /&gt;I'll be transitioning the content of this blog to more enterprise integration, open source, java and other topics and I hope you follow along.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-6038287547796262565?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/6038287547796262565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/04/rebooting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/6038287547796262565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/6038287547796262565'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/04/rebooting.html' title='Rebooting...'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-8496676691059026761</id><published>2011-04-08T14:08:00.000-07:00</published><updated>2011-04-08T14:50:01.301-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='orioles'/><category scheme='http://www.blogger.com/atom/ns#' term='baltimore'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='openspan'/><title type='text'>The Power of the Contextual Help</title><content type='html'>I spent this week onsite in Baltimore helping a customer architect some automation scenarios where the goal of this exercise was not only to reduce the average handling time of the contact center agents but also make them more productive and provide better customer service.&lt;br /&gt;&lt;br /&gt;One of the issues we identified during the discovery phase of this project was the lack of ability of the users to recognize customers with flagged accounts or important alerts to need to be reviewed when get in touch with the contact center.&lt;br /&gt;&lt;br /&gt;The current system provides a black triangle image close to the right corner of the screen while the account information is on the left corner. Ha! Don't get me wrong but who in the world designed a condition like that? &lt;br /&gt;Something that has to be brought to the agent's attention in black on a gray background. Nah! It's not gonna work.&lt;br /&gt;&lt;br /&gt;Frankly, now I understand why these agents were not able to check that alert and keep that in mind during the call or take action according to the information provided there. They couldn't see it. Agents working all day long taking calls and in front of their computers with the exact same applications all day start not recognizing small changes. It's a fact! You gotta do something better and give them a better experience if you want to have a better customer service.&lt;br /&gt;&lt;br /&gt;So, we fixed that issue... and more than that... We didn't change a line of code on their systems.&lt;br /&gt;OpenSpan has a very nice capability to recognize when a control (button, image, textbox, dropbox, etc) is created, changed, clicked or whatever happens with it.&lt;br /&gt;OpenSpan also has a method called ShowToolTip which works for Windows and Web applications.&lt;br /&gt;The quick solution to the issue described here was to combine these two OpenSpan capabilities.&lt;br /&gt;To give you some details, when the agent was getting the account information for the call we setup an event "listening" for the alert image creation on the screen. As soon as we recognize that condition we then read the Outer HTML property of that image because that would be the text displayed on our tooltip and finally display the tooltip for 10 seconds. In a non-intrusive way we brought the agent's attention to where we needed so they could see the alert without clicking on anything and kept working on their call without any interruption.&lt;br /&gt;What colors we decided to use??? Well, we decided to do it in &lt;a href="http://www.openspan.com"&gt;OpenSpan Orange-like&lt;/a&gt; and since we were in Baltimore why not to say that was an &lt;a href="http://baltimore.orioles.mlb.com/"&gt;Orioles&lt;/a&gt; sponsored tool tip.&lt;br /&gt;&lt;br /&gt;It came out similar to this:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-q7_SVYj2hAg/TZ93fJk8ZOI/AAAAAAAAAG0/A29GEoUhkuI/s1600/1.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="105" width="174" src="http://2.bp.blogspot.com/-q7_SVYj2hAg/TZ93fJk8ZOI/AAAAAAAAAG0/A29GEoUhkuI/s400/1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;There are so many use cases for an implementation like that. From process guidance to bringing the agent's attention to certain aspects and everything in between. &lt;br /&gt;&lt;br /&gt;If you're interested about the tooltip capability take a look on the OpenSpan Online Documentation available &lt;a href="http://help.openspan.com/Adapters_Interrogation/Using_ShowToolTip.htm"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-8496676691059026761?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/8496676691059026761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/04/power-of-contextual-help.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/8496676691059026761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/8496676691059026761'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/04/power-of-contextual-help.html' title='The Power of the Contextual Help'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-q7_SVYj2hAg/TZ93fJk8ZOI/AAAAAAAAAG0/A29GEoUhkuI/s72-c/1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-5305759043487659784</id><published>2011-03-31T12:15:00.000-07:00</published><updated>2011-03-31T12:15:11.074-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='studio'/><category scheme='http://www.blogger.com/atom/ns#' term='openspan'/><title type='text'>How to Add Items from Comboboxes to Windows Forms</title><content type='html'>On a recent PoC (Proof-of-Concept) I had to add items from two comboboxes to a Windows Form combobox. Here is a simple solution to that:&lt;br /&gt;&lt;br /&gt;1. Highlight the combobox control in Object Explorer and click the Explore Component Properties button at the top of the Object Explorer.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-OOApsWJVRV4/TZTK-c4WM_I/AAAAAAAAAGM/ceivOgqgETA/s1600/1.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="134" width="363" src="http://2.bp.blogspot.com/-OOApsWJVRV4/TZTK-c4WM_I/AAAAAAAAAGM/ceivOgqgETA/s400/1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;2. You should see the list of properties available for the combobox control. Select the "Items" property and then select Configure Type to see Properties and Methods of the combobox.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-bVDQ7UJQftw/TZTOczY7eMI/AAAAAAAAAGU/ixWQvqCPN4I/s1600/2.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="263" width="362" src="http://1.bp.blogspot.com/-bVDQ7UJQftw/TZTOczY7eMI/AAAAAAAAAGU/ixWQvqCPN4I/s400/2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;3. Select the Methods you would like to use and then click OK. The methods you selected will appear in the Object Explorer. I've added Items.AddRange(Object[] items) to add an Array of items Commonly used methods are:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-S57P7kwHrLU/TZTPlAQD1gI/AAAAAAAAAGc/Se7QhpCuysw/s1600/3.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="144" width="357" src="http://2.bp.blogspot.com/-S57P7kwHrLU/TZTPlAQD1gI/AAAAAAAAAGc/Se7QhpCuysw/s400/3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;4. Then on my Automation I just added the AddRange method to be populated by the combobox from a Windows Application. Something similar to the following:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-WU5EdpqEqeo/TZTSKMvoc1I/AAAAAAAAAGs/nZIwujW9dLY/s1600/4.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="172" width="355" src="http://3.bp.blogspot.com/-WU5EdpqEqeo/TZTSKMvoc1I/AAAAAAAAAGs/nZIwujW9dLY/s400/4.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I just did the same thing for the other combobox items I wanted to add to my Windows Form combobox and ended up with all of them in one single control.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-5305759043487659784?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/5305759043487659784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/how-to-add-items-from-comboboxes-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/5305759043487659784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/5305759043487659784'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/how-to-add-items-from-comboboxes-to.html' title='How to Add Items from Comboboxes to Windows Forms'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-OOApsWJVRV4/TZTK-c4WM_I/AAAAAAAAAGM/ceivOgqgETA/s72-c/1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-645157354960808079</id><published>2011-03-29T15:59:00.000-07:00</published><updated>2011-03-29T16:01:24.420-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='studio'/><category scheme='http://www.blogger.com/atom/ns#' term='openspan'/><title type='text'>How to Change the Default Drag And Drop Behavior for Properties, Methods or Events</title><content type='html'>There are some cases during a project you're constantly working with the same control and you want to change the default behavior when you drag and drop it from the Object Explorer. Well, here is what you have to do to change the default behavior in OpenSpan Studio (MS-Visual Studio plugin):&lt;br /&gt;&lt;br /&gt;1. Select the control type you want and click Configure Type. Here is an example for a button.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-w7vm7ZcoFKE/TZJhFKIQdZI/AAAAAAAAAF0/XX8pCIz9aVw/s1600/1.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="335" width="320" src="http://1.bp.blogspot.com/-w7vm7ZcoFKE/TZJhFKIQdZI/AAAAAAAAAF0/XX8pCIz9aVw/s400/1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;2. The Button Control Configuration pops up and now you can select the property, event or method you want to be the default behavior. For the button control the "Click" event is the default behavior.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-NhNzADIXaTk/TZJhtTPh8oI/AAAAAAAAAF8/dKJBMagwh6w/s1600/2.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="400" width="293" src="http://3.bp.blogspot.com/-NhNzADIXaTk/TZJhtTPh8oI/AAAAAAAAAF8/dKJBMagwh6w/s400/2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;3. Select the new configuration you want to be the default behavior, right-click on it and then select Set As Default Member.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-cNDB4YCuCW4/TZJivsbUGCI/AAAAAAAAAGE/mWdg2Q-yhVM/s1600/3.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="400" width="296" src="http://3.bp.blogspot.com/-cNDB4YCuCW4/TZJivsbUGCI/AAAAAAAAAGE/mWdg2Q-yhVM/s400/3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;In the example above I've set the PerformClick method to be the default behavior.&lt;br /&gt;&lt;br /&gt;The next time I drag and drop a button to the automation it will be the PerformClick method instead of the Click event.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-645157354960808079?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/645157354960808079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/how-to-change-default-drag-and-drop.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/645157354960808079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/645157354960808079'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/how-to-change-default-drag-and-drop.html' title='How to Change the Default Drag And Drop Behavior for Properties, Methods or Events'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-w7vm7ZcoFKE/TZJhFKIQdZI/AAAAAAAAAF0/XX8pCIz9aVw/s72-c/1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-1422724932141368275</id><published>2011-03-28T11:20:00.000-07:00</published><updated>2012-02-10T08:34:22.258-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='macos'/><category scheme='http://www.blogger.com/atom/ns#' term='tracking'/><category scheme='http://www.blogger.com/atom/ns#' term='mouse'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>How to Speed Up Mouse Tracking on Mac OS X</title><content type='html'>Sometimes I feel that my mouse tracking is not fast enough but when I check its settings on System Preferences it's already set to the maximum possible speed. Here is a very simple (and fast) solution to that problem.&lt;br /&gt;&lt;br /&gt;Open Terminal.app (/Applications/Terminal)&lt;br /&gt;&lt;br /&gt;Enter the following command:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;defaults read -g com.apple.mouse.scaling&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;That should return the current speed of your mouse tracking as an integer. Mine was 5 and I want to update it to 10. Here is how I did it...&lt;br /&gt;&lt;br /&gt;To change the speed of your mouse tracking you can simply run the following command:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;defaults write -g com.apple.mouse.scaling &lt;i&gt;your_mouse_speed&lt;/i&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;where &lt;i&gt;your_mouse_speed&lt;/i&gt; is the speed you want to set to your mouse tracking.&lt;br /&gt;&lt;br /&gt;Then you'll have to Log Out or restart your Mac to see the changes take effect.&lt;br /&gt;&lt;br /&gt;UPDATE: As reported by the reader Squished Spider, if you update your settings using the approach above and perform any changes to the Mouse settings using Mac OS System Preferences later then the system will override everything you did and it will revert them back to the slow mouse behavior even though you've set it to the maximum speed.&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/7850628466108183059-1422724932141368275?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/1422724932141368275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/how-to-speed-up-mouse-tracking-on-mac.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/1422724932141368275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/1422724932141368275'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/how-to-speed-up-mouse-tracking-on-mac.html' title='How to Speed Up Mouse Tracking on Mac OS X'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-454121744579756415</id><published>2011-03-25T18:32:00.000-07:00</published><updated>2011-03-25T18:32:49.054-07:00</updated><title type='text'>Happy Birthday Twitter!</title><content type='html'>I'm a big fan of Twitter and from the business perspective I see a lot possibilities and use cases where Twitter could add a lot of value. This week Twitter is celebrating its 5th anniversary and I came across this post from one of the founders (Biz Stone - &lt;a href="http://twitter.com/biz"&gt;@biz&lt;/a&gt;) and I think the video they put together is just amazing... Check it out! &lt;a href="http://blog.twitter.com/2011/03/happy-birthday-twitter.html"&gt;http://blog.twitter.com/2011/03/happy-birthday-twitter.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-454121744579756415?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/454121744579756415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/happy-birthday-twitter.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/454121744579756415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/454121744579756415'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/happy-birthday-twitter.html' title='Happy Birthday Twitter!'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-8156265892541589429</id><published>2011-03-24T13:42:00.000-07:00</published><updated>2011-03-24T13:42:44.928-07:00</updated><title type='text'>OpenSpan Application Usage Events</title><content type='html'>OpenSpan is innovating again and customers/partners are now able to enjoy another great capability. In a new release, OpenSpan is including new events capabilities for monitoring application usage metrics for all applications on the desktop without touching them. Yeah! You got that right... No need for application interrogation, no need for touch the applications you want to get metrics from. That's an amazing opportunity to understand more about patterns and metrics from the user's desktop.&lt;br /&gt;&lt;br /&gt;There are now three categories of events that OpenSpan can work with: Application Usage Events, Application Detail Events (Generic), Custom Business Events.&lt;br /&gt;&lt;br /&gt;Application Usage Events&lt;br /&gt;&lt;br /&gt;With minimal configuration and no application interrogation required, deploy OpenSpan to user desktops and immediately begin collecting high-level application usage and interaction metrics for all applications running on the user’s desktop.  This new capability provides unprecedented insight into user experience and productivity, enabling next generation time &amp; motion studies of both before and after process improvements.&lt;br /&gt;&lt;br /&gt;Application Detail Events&lt;br /&gt;&lt;br /&gt;Application Detail Events are used when you want to capture more detail for specific applications than what is provided by Application Usage Events.  With Application Detail Events, you can capture individual events (i.e. click, text change, copy, paste, key-press, etc.) and data values associated with any application object (field, button, checkbox, etc.) on any screen within an application.  This capability provides “clickstream-level” granularity.  For example, you might use Application Usage Events to determine how many copy/paste events are occurring in each application.  Then you enable Application Detail Events to determine which fields (by name) are being copied.  Application Detail Events are configurable by application and enable selection from over 30 distinct object types and on average over 10 events per object type.  To capture Application Detail Events, interrogation and filter configuration is required for each application, which typically takes only a few minutes to configure per application.&lt;br /&gt;&lt;br /&gt;Custom Events&lt;br /&gt;&lt;br /&gt;Custom Business Events (or Custom Events) provide the ability to define and instrument complete workflows and processes spanning one or several applications.  Event names are user-defined and Custom Events can be configured to contain any additional data you wish to collect or capture.  In addition to capturing performance metrics and detailed process timing information, Custom Events can include conditional logic and can be used to generate alerts.  Custom Events are also commonly the interface point and published from OpenSpan to partner CEP, WFM, BAM and BPM solutions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-8156265892541589429?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/8156265892541589429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/openspan-application-usage-events.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/8156265892541589429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/8156265892541589429'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/openspan-application-usage-events.html' title='OpenSpan Application Usage Events'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-2567931983750347173</id><published>2011-03-22T15:33:00.000-07:00</published><updated>2011-08-09T10:22:34.710-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jms'/><category scheme='http://www.blogger.com/atom/ns#' term='cep'/><category scheme='http://www.blogger.com/atom/ns#' term='openspan'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Desktop Events with OpenSpan and Oracle CEP - Part 3</title><content type='html'>Having started the Oracle CEP successfully was the goal for the second part of this tutorial. Now, we're going to start building a sample OpenSpan automation to send messages through the JMS interface we created previously and push events from the desktop application to Oracle CEP.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;28. Go to OpenSpan Studio (or MS-Visual Studio with OpenSpan plug-in installed) and create a new project. Select OpenSpan Project and name it OpenSpan_OCEP_Tutorial&lt;br /&gt;&lt;br /&gt;29. Add a new Windows Form. Add a label, text box and button to your recently created Windows Form. You should have something similar to the following picture:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-AWIsX_Vb_7k/TYfdBU9ilwI/AAAAAAAAAEQ/TvGEStyCU_g/s1600/4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="124" src="http://1.bp.blogspot.com/-AWIsX_Vb_7k/TYfdBU9ilwI/AAAAAAAAAEQ/TvGEStyCU_g/s400/4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;30. Go to Automation1 (Add a new Automation if you don't have one) and drag a MessagePublisher component from the Toolbox (Add the component to the Toolbox if it's not available for you). Make sure it's set to Global.&lt;br /&gt;31. Highlight the messagePublisher1 component and go to the Properties panel. Select the MessageVendorType and set the Message Connection Properties to connect to the Oracle WebLogic instance we configured on the Part 1 of this tutorial.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-lqDPr6zgI8k/TYfdQ9FSM5I/AAAAAAAAAEY/NLVxTtooJe8/s1600/5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/-lqDPr6zgI8k/TYfdQ9FSM5I/AAAAAAAAAEY/NLVxTtooJe8/s400/5.png" width="283" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;You have to provide the following information:&lt;br /&gt;&lt;br /&gt;&lt;code&gt; &lt;br /&gt;Host: localhost&lt;br /&gt;Port: 7001&lt;br /&gt;Connection Factory Name: osevents_queue_cf&lt;br /&gt;Queue Name: osevents_SampleQ1&lt;br /&gt;Queue Type: Queue&lt;br /&gt;Username: (your username to Oracle WebLogic)&lt;br /&gt;Password: (your password to Oracle WebLogic)&lt;br /&gt;Session Mode: AUTO_ACKNOWLEDGE&lt;br /&gt;Make sure you update the connection information to Oracle WebLogic if you haven't followed the tutorial and changed that information along the course of it.&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;32. Let's initialize the messageProducer1 component when we start the project. To do that, add an OpenSpan.Runtime.RuntimeHost/ProjectStarted Event component from the Toolbox.&lt;br /&gt;&lt;br /&gt;33. Next, add the messagePublisher1 (Start Method) to the Automation1 and then connect OpenSpan.Runtime.RuntimeHost/ProjectStarted to the messagePublisher1. You should end up with something similar to the following:&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/-CUXzDJhsYd0/TYfdd88TNDI/AAAAAAAAAEg/Avc-nkBRxH0/s1600/6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="74" src="http://4.bp.blogspot.com/-CUXzDJhsYd0/TYfdd88TNDI/AAAAAAAAAEg/Avc-nkBRxH0/s400/6.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;34. Add the submit button click event, the text box value and messageProducer1 (Send Method) to the Automation1 canvas. Create the message workflow connecting submit button click to the message producer. Set the text of the message connecting the text box value to the msgText variable on the message producer. Your automation should look like this:&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/-HJPH6APtHh8/TYfdkUMRndI/AAAAAAAAAEo/jNJ8qmU_yIE/s1600/7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="235" src="http://4.bp.blogspot.com/-HJPH6APtHh8/TYfdkUMRndI/AAAAAAAAAEo/jNJ8qmU_yIE/s400/7.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;35. Run the project, type something on the text box of the Windows form and click Publish. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-q0adBiOsZHQ/TYfdsC7nTrI/AAAAAAAAAEw/YE2OlAQ7gVU/s1600/8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="103" src="http://1.bp.blogspot.com/-q0adBiOsZHQ/TYfdsC7nTrI/AAAAAAAAAEw/YE2OlAQ7gVU/s400/8.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;36. When you click Publish on the Windows form , a JMS message is dispatched from the OpenSpan Runtime to the Oracle WebLogic JMS provider, that message is stored on the osevents_SampleQ1 queue until it's consumed by the listener on the Oracle CEP project configured on Part 2 of this tutorial. The message content is then displayed on the Oracle CEP console.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-UEmPwz5sbn8/TYfdzqX5ipI/AAAAAAAAAE4/Yd4GlapXkpQ/s1600/9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="24" src="http://1.bp.blogspot.com/-UEmPwz5sbn8/TYfdzqX5ipI/AAAAAAAAAE4/Yd4GlapXkpQ/s400/9.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;37. That message is displayed on the Oracle CEP Console because the query running against the events is simply selecting all events sent to the helloInputChannel. &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/-El8xvCw23jQ/TYfd7UFFiRI/AAAAAAAAAFA/SR5XzIYMVho/s1600/10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="128" src="http://4.bp.blogspot.com/-El8xvCw23jQ/TYfd7UFFiRI/AAAAAAAAAFA/SR5XzIYMVho/s400/10.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The HelloWorldBean then gets the text of the message's body and print it. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-vzV8hI_hdvs/TYfeBe5wpAI/AAAAAAAAAFI/0tLgvafD9eI/s1600/11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="231" src="http://3.bp.blogspot.com/-vzV8hI_hdvs/TYfeBe5wpAI/AAAAAAAAAFI/0tLgvafD9eI/s400/11.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Feel free to modify the query running against the events published to this Oracle CEP project or the bean printing the messages to experiment different behaviors.&lt;br /&gt;&lt;br /&gt;This concludes the Desktop Events with OpenSpan and Oracle CEP. I hope you could follow along and this tutorial could give you a good start point to work with OpenSpan and CEP engines. Please don't hesitate to contact me if you have any questions or comments.&lt;br /&gt;&lt;br /&gt;UPDATE: The source code of this project is available at&amp;nbsp;&lt;a href="http://dl.dropbox.com/u/10511857/OCEP_OpenSpan_Tutorial.zip"&gt;http://dl.dropbox.com/u/10511857/OCEP_OpenSpan_Tutorial.zip&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/7850628466108183059-2567931983750347173?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/2567931983750347173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/desktop-events-with-openspan-and-oracle_22.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/2567931983750347173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/2567931983750347173'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/desktop-events-with-openspan-and-oracle_22.html' title='Desktop Events with OpenSpan and Oracle CEP - Part 3'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-AWIsX_Vb_7k/TYfdBU9ilwI/AAAAAAAAAEQ/TvGEStyCU_g/s72-c/4.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-6007561342432279903</id><published>2011-03-21T17:45:00.000-07:00</published><updated>2011-03-21T17:45:38.964-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GrowlMail'/><category scheme='http://www.blogger.com/atom/ns#' term='TruePreview'/><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='macos'/><category scheme='http://www.blogger.com/atom/ns#' term='letterbox'/><category scheme='http://www.blogger.com/atom/ns#' term='upgrade'/><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><category scheme='http://www.blogger.com/atom/ns#' term='mail.app'/><title type='text'>How to re-enable Mac Mail plugins after Mac OS X upgrade</title><content type='html'>I just upgraded my machine to Mac OS X (10.6.7) and unfortunately the plugins I have installed with Mac Mail stopped working one more time. I'm a big fan of &lt;a href="http://growl.info/growlmail/"&gt;GrowlMail&lt;/a&gt;, &lt;a href="http://christianserving.org/project/truepreview"&gt;TruePreview&lt;/a&gt; and &lt;a href="http://www.macupdate.com/app/mac/21899/letterbox"&gt;LetterBox&lt;/a&gt; and have been using them for a long time.&lt;br /&gt;If you search on the Internet, you're going to find tons of references to this issue that affects Mac Mail plugins when you update your Mac. I haven't written that procedure on my notes and kept googling it every time I faced such situation. Well, I came across a very well written note that I think it's worth mentioning about how to fix that issue and decided to share it&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.code2k.net/blog/2010-05-16/"&gt;How to re-enable Mac Mail plugins after updates&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I hope you find it useful as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-6007561342432279903?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/6007561342432279903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/how-to-re-enable-mac-mail-plugins-after.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/6007561342432279903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/6007561342432279903'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/how-to-re-enable-mac-mail-plugins-after.html' title='How to re-enable Mac Mail plugins after Mac OS X upgrade'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-8005907691534215796</id><published>2011-03-21T16:26:00.000-07:00</published><updated>2011-03-21T16:28:36.972-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='jms'/><category scheme='http://www.blogger.com/atom/ns#' term='cep'/><category scheme='http://www.blogger.com/atom/ns#' term='openspan'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Desktop Events with OpenSpan and Oracle CEP - Part 2</title><content type='html'>On the first part of this tutorial we walked through the steps of Oracle WebLogic JMS configuration. This is a very important step since it's the base underlying communication system between the major components for the integration between the applications part of this demonstration.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;9. Assuming that everything works fine on the infrastructure side of the project you’re now ready to start developing your Oracle CEP application. Go to Oracle Enterprise Pack for Eclipse (Start Menu &gt; Oracle WebLogic &gt; Oracle Enterprise Pack for Eclipse).&lt;br /&gt;&lt;br /&gt;10. Create a new Oracle CEP Application Project. Go to File &gt; New &gt; Other &gt; Oracle CEP &gt; Oracle CEP Application Project. &lt;br /&gt;&lt;br /&gt;11. Name the project OpenSpan_Tutorial and leave all other fields as default.&lt;br /&gt;&lt;br /&gt;12. Click Next.&lt;br /&gt;&lt;br /&gt;13. On the New Oracle CEP Application Project select “Create an Oracle CEP Application using an application template” and choose Hello World as the template.&lt;br /&gt;&lt;br /&gt;14. Click Finish. &lt;br /&gt;&lt;br /&gt;15. At this point you should have an Oracle EPN similar to this:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-0LX5whGreCI/TYfIOgmFl9I/AAAAAAAAAD4/Pt4edqp59DA/s1600/1.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="193" width="400" src="http://1.bp.blogspot.com/-0LX5whGreCI/TYfIOgmFl9I/AAAAAAAAAD4/Pt4edqp59DA/s400/1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;16. Right-click at the OpenSpan_Tutorial canvas and select New… Adapter. Name it jmsAdapter.&lt;br /&gt;17. Go to the config.xml file under the META-INF\wlevs\ directory and add the following configuration:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;jms-adapter&amp;gt;&lt;br /&gt;&amp;lt;name&amp;gt;jmsAdapter&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;lt;jndi-provider-url&amp;gt;t3://localhost:7001&amp;lt;/jndi-provider-url&amp;gt;&lt;br /&gt;&amp;lt;destination-jndi-name&amp;gt;osevents_SampleQ1&amp;lt;/destination-jndi-name&amp;gt;&lt;br /&gt;&amp;lt;user&amp;gt;weblogic_username&amp;lt;/user&amp;gt;&lt;br /&gt;&amp;lt;password&amp;gt;weblogic_password&amp;lt;/password&amp;gt;&lt;br /&gt;&amp;lt;session-transacted&amp;gt;false&amp;lt;/session-transacted&amp;gt;&lt;br /&gt;&amp;lt;/jms-adapter&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The above configuration tells the Oracle CEP application to connect to the JMS Provider configured under Oracle WebLogic.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;18. Go back to the OpenSpan Tutorial EPN and remove the connection between the helloWorldAdapter adapter and the helloworldInputChannel.&lt;br /&gt;&lt;br /&gt;19. Add a connection from the jmsAdapter to the helloworldInputChannel.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-RLxwecbZy8Y/TYfIr9GSrgI/AAAAAAAAAEA/4cLM3TgXGOc/s1600/2.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="192" width="400" src="http://3.bp.blogspot.com/-RLxwecbZy8Y/TYfIr9GSrgI/AAAAAAAAAEA/4cLM3TgXGOc/s400/2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;20. Right-click on the jmsAdapter component and choose Go to Assembly Source. Add the following to the helloworld-context.xml file&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;wlevs:adapter id=&amp;quot;jmsAdapter&amp;quot; provider=&amp;quot;jms-inbound&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;wlevs:listener ref=&amp;quot;helloworldInputChannel&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;wlevs:instance-property name=&amp;quot;converterBean&amp;quot; ref=&amp;quot;eventAdapter&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/wlevs:adapter&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You’ll also need to add the following bean definition:&lt;br /&gt;&lt;br /&gt;&amp;lt;bean id=&amp;quot;eventAdapter&amp;quot;class=&amp;quot;com.bea.wlevs.example.helloworld.HelloWorldBean&amp;quot;/&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;21. Go to the HelloWorldBean java class and add the following imports:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import javax.jms.JMSException;&lt;br /&gt;import javax.jms.Message;&lt;br /&gt;import javax.jms.TextMessage;&lt;br /&gt;import com.bea.wlevs.adapters.jms.api.InboundMessageConverter;&lt;br /&gt;import com.bea.wlevs.adapters.jms.api.MessageConverterException;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;22. Change the HelloWorldBean class to implement InboundMessageConverter. To do that, change the class signature to be:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;public class HelloWorldBean implements StreamSink, InboundMessageConverter {&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;23. Then, implement the following required method:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;public List convert(Message message) throws MessageConverterException, JMSException {&lt;br /&gt;javax.jms.TextMessage textMessage = (TextMessage) message;&lt;br /&gt;System.out.println("Message Processed: " + textMessage.getText());&lt;br /&gt;return null;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;24. Save and close all files.&lt;br /&gt;&lt;br /&gt;25. Your Oracle EPN should be similar to the following picture:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-iNoH98Olnio/TYfJgI1jhHI/AAAAAAAAAEI/okdmSigrhX4/s1600/3.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="192" width="400" src="http://1.bp.blogspot.com/-iNoH98Olnio/TYfJgI1jhHI/AAAAAAAAAEI/okdmSigrhX4/s400/3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;26. It’s time to deploy your project. Go to the Servers view. Right-click on your Oracle CEP v11.1 instance, click on Add and Remove, select the OpenSpan Tutorial and click on Add. Click Finish.&lt;br /&gt;&lt;br /&gt;27. Your project should be deployed successfully and you should see a message similar to this on the Eclipse console:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;Mar 18, 2011 9:43:50 PM EDT&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;Deployment&amp;gt; &amp;lt;BEA-2045000&amp;gt; &amp;lt;The application bundle &amp;quot;OpenSpan_Tutorial&amp;quot; was deployed successfully to file:/D:/Oracle/Middleware/user_projects/domains/ocep_domain/defaultserver/applications/OpenSpan_Tutorial/OpenSpan_Tutorial.jar with version 1300499030501&amp;gt; &lt;br /&gt;&amp;lt;Mar 18, 2011 9:43:51 PM EDT&amp;gt; &amp;lt;Notice&amp;gt; &amp;lt;Spring&amp;gt; &amp;lt;BEA-2047000&amp;gt; &amp;lt;The application context for &amp;quot;OpenSpan_Tutorial&amp;quot; was started successfully&amp;gt; &lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-8005907691534215796?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/8005907691534215796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/desktop-events-with-openspan-and-oracle_21.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/8005907691534215796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/8005907691534215796'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/desktop-events-with-openspan-and-oracle_21.html' title='Desktop Events with OpenSpan and Oracle CEP - Part 2'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-0LX5whGreCI/TYfIOgmFl9I/AAAAAAAAAD4/Pt4edqp59DA/s72-c/1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-2972780825323524313</id><published>2011-03-19T22:13:00.000-07:00</published><updated>2011-03-22T08:19:01.218-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='laptop'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='macos'/><category scheme='http://www.blogger.com/atom/ns#' term='dropbox'/><title type='text'>Moving to a Cloud-Based Lifestyle</title><content type='html'>I got a new laptop from my company (&lt;a href="http://www.openspan.com"&gt;OpenSpan&lt;/a&gt;) some time ago and as much as I'm a Mac fan, and have been using the Apple hardware for quite some time, the company's standard is Lenovo and MS-Windows.&lt;br /&gt;&lt;br /&gt;I try to spend as much time as I can on my Mac but the new laptop is really powerful (Lenovo W510 Intel Core i7 Q720 1.60Ghz, 8GB RAM, Win7 64-bit, 500GB HD) and a huge part of my job is done on virtual machines. Well, Virtual Machines use a lot of disk space, CPU and memory. Sometimes, I also need to run two VMs at the same time which it's kind of impossible with my Mac these days. I have a MacBook Pro Intel Core 2 Duo 2.16Ghz, 4GB RAM, MacOS Snow Leopard and there is no way to upgrade memory on this machine.&lt;br /&gt;&lt;br /&gt;So, to be able to work from my Mac on the days that I don't need to spend hours developing or testing something on my VMs but also don't loose the ability to have all of my files updated on the next day when I need or want to log in to my Windows laptop and be ready to go I found that moving to a cloud-based lifestyle would be very appropriate.&lt;br /&gt;&lt;br /&gt;Starting with my e-mails, both personal and work related, I have all of them on stored on the server and this approach seems to be fine since I can access them from whatever device I want.&lt;br /&gt;&lt;br /&gt;For the files that work with every day like presentations, spreadsheets, virtual machines, text files, pictures, music, etc I have upgraded my Dropbox account to the Basic one which gives me 50GB of storage and that's enough for the most important files that I need to share between the devices I need. Of course a huge clean up process was needed before I move my digital life to this approach. It has been working fine so far and I don't think I want to go back to way it was before copying files manually all over the place and sometimes having problems when I forgot to copy an important presentation to the machine I would be using next day.  &lt;br /&gt;&lt;br /&gt;Additionally, most of the applications I use every day are "cloud-friendly" and don't require any intervention to continue to work independently of the device I'm logged in to...&lt;br /&gt;&lt;br /&gt;Here is a short list:&lt;br /&gt;Note Capturing + To Do - Evernote (Mac and PC)&lt;br /&gt;Instant Messaging - Adium (Mac) and Digsby (PC)&lt;br /&gt;Social Networking - TweetDeck (Mac and PC), Chatter (Mac and PC)&lt;br /&gt;VoiP - Skype (Mac and PC)&lt;br /&gt;E-Mail, Calendar and Address Book - MS-Outlook (PC) and Mail, iCal, Address Book (Mac)&lt;br /&gt;Browser - Safari (Mac) and Chrome (PC)&lt;br /&gt;RSS and News Feed - Mail (Mac) and FeedDemon (PC)&lt;br /&gt;&lt;br /&gt;Last but not least there is another important aspect to mention here about the regular backup strategy I used to have. Since Dropbox also keeps a copy of my files I have restructured my strategy to weekly backups instead just in case something really bad happens to DropBox.&lt;br /&gt;&lt;br /&gt;If you are interested in take an approach like this, there are several resources on the web pointing you to smart uses of Dropbox and similar approaches to the one I took... &lt;br /&gt;&lt;br /&gt;Here are some links to what I found during my research:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lifehacker.com/#!397778/dropbox-syncs-and-backs-up-files-between-computers-instantaneously"&gt;Lifehacker: Dropbox Syncs and Backs Up Files Between Computers Instantaneously&lt;br /&gt;&lt;/a&gt;&lt;a href="http://lifehacker.com/#!5358983/use-dropbox-for-more-than-just-file-syncing"&gt;Use Dropbox for More Than Just File Syncing&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I don't think there is a right or wrong approach but I believe the right approach is the one that works for you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-2972780825323524313?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/2972780825323524313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/moving-to-cloud-based-lifestyle.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/2972780825323524313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/2972780825323524313'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/moving-to-cloud-based-lifestyle.html' title='Moving to a Cloud-Based Lifestyle'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-7205730837820148715</id><published>2011-03-18T16:03:00.000-07:00</published><updated>2011-03-21T15:42:43.633-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='jms'/><category scheme='http://www.blogger.com/atom/ns#' term='cep'/><category scheme='http://www.blogger.com/atom/ns#' term='openspan'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Desktop Events with OpenSpan and Oracle CEP - Part 1</title><content type='html'>Oracle’s Complex Event Processing Engine can be used to monitor large volumes of real-time data feeds but how do you enable your existing applications to trigger and react with the CEP engine?&lt;br /&gt;&lt;br /&gt;With OpenSpan Events you can quickly and easily monitor any application or set of applications on a user’s desktop - including Windows, Web, Java, mainframe, cloud-based, virtualized or Citrix-hosted applications - without modifying the original applications.  All events and associated data can be sent in real-time to Oracle CEP, as well as stored in an Oracle or other central database for analysis using OpenSpan Analytics, Oracle Hyperion or any other BI or reporting tool. &lt;br /&gt;&lt;br /&gt;Here is a step-by-step guide to get you started with OpenSpan Events with Complex Event Processing (CEP) technology. Part 1 of this tutorial is going to cover Oracle WebLogic JMS setup.&lt;br /&gt;&lt;br /&gt;1. Download and Install Oracle WebLogic 11g R1 (&lt;a href="http://www.oracle.com/technetwork/middleware/weblogic/downloads/index.html"&gt;http://www.oracle.com/technetwork/middleware/weblogic/downloads/index.html&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;2. Download and Install Oracle Complex Event Processing 11gR1 (&lt;a href="http://www.oracle.com/technetwork/middleware/complex-event-processing/downloads/index.html"&gt;http://www.oracle.com/technetwork/middleware/complex-event-processing/downloads/index.html&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;3. Configure Oracle CEP plugin on Eclipse Galileo shipped with Oracle WebLogic 11g R1 (&lt;a href="http://download.oracle.com/docs/cd/E14571_01/doc.1111/e14301/ide_intro.htm#CHDGBGGA"&gt;http://download.oracle.com/docs/cd/E14571_01/doc.1111/e14301/ide_intro.htm#CHDGBGGA&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;4. Start your Oracle WebLogic instance (Start Menu &gt; Programs &gt; Oracle WebLogic &gt; User Projects &gt; base_domain &gt; Start Admin Server for WebLogic Server Domain). Wait for the confirmation the server is up and running. You should see a message on the log similar to the following:&lt;br /&gt;&lt;br /&gt;&amp;lt;mar 18, 2011 2:58:30 PM EDT&amp;gt; &amp;lt;notice&amp;gt; &amp;lt;weblogicserver&amp;gt; &amp;lt;BEA-000360&amp;gt; &amp;lt;server started in RUNNING mode&amp;gt;&lt;br /&gt;&lt;br /&gt;5. Log in to WebLogic Server 11g Administration Console pointing your web browser to http://localhost:7001/console.&lt;br /&gt;&lt;br /&gt;6. Click on JMS Modules under Services &gt; Messaging. By default, Oracle WebLogic creates a JMS Module called SystemModule-0. If you don’t have it, you’ll have to create one. Click on SystemModule-0.&lt;br /&gt;&lt;br /&gt;7. You also have to create new Queues for the sample configuration where the message exchange between the desktop applications and the Oracle CEP server is going to happen. Click on New and then select Queue. Click Next and give it a name of osevents_SampleQ1. Click Finish. Repeat the process to create another Queue called osevents_SampleQ2.&lt;br /&gt;You also have to create a new connection factory object that's used to create connections for JMS clients. Name your new connection factory object osevents_queue_cf with the same JNDI name.&lt;br /&gt;&lt;br /&gt;8. To test your recently created configuration you may want to configure a few JMS clients to send and receive messages to/from these queues. I'd recommend you taking a look on the bottom of the following resource for a pretty nice and straightforward client configuration available at &lt;a href="http://redstack.wordpress.com/2009/12/21/a-simple-jms-client-for-weblogic-11g/"&gt;http://redstack.wordpress.com/2009/12/21/a-simple-jms-client-for-weblogic-11g/&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-7205730837820148715?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/7205730837820148715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/desktop-events-with-openspan-and-oracle.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/7205730837820148715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/7205730837820148715'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/desktop-events-with-openspan-and-oracle.html' title='Desktop Events with OpenSpan and Oracle CEP - Part 1'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-735012791289645231</id><published>2011-03-17T14:50:00.000-07:00</published><updated>2011-03-17T14:51:40.388-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='ms-sql server'/><title type='text'>How to Declare Variables in MS-SQL Server Management Studio</title><content type='html'>Most of the projects I work on have some kind of database interaction and some of them require variables to be the passed to the queries at runtime.&lt;br /&gt;&lt;br /&gt;I typically test my queries against the database using Microsoft SQL Server Management Studio and being able to use variable on my queries there is a big help.&lt;br /&gt;&lt;br /&gt;Here is a quick hint to use variables with MS-SQL Server Management Studio:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;-- Database to use&lt;br /&gt;USE OSBC;&lt;br /&gt;&lt;br /&gt;-- Declare the variable you need&lt;br /&gt;DECLARE @AcctNumber varchar;&lt;br /&gt;&lt;br /&gt;-- Set the value of the variable&lt;br /&gt;BEGIN&lt;br /&gt;SET @AcctNumber = 1&lt;br /&gt;END&lt;br /&gt;&lt;br /&gt;-- Run the query testing the paramenters&lt;br /&gt;select * from contacts &lt;br /&gt;WHERE AccountNumber = @AcctNumber&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Here is a screenshot of my test:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-qgXMAYSNsfQ/TYKCFZi5ZRI/AAAAAAAAADw/I18rZzCcrAQ/s1600/1.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="295" width="400" src="http://3.bp.blogspot.com/-qgXMAYSNsfQ/TYKCFZi5ZRI/AAAAAAAAADw/I18rZzCcrAQ/s400/1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Pretty simple stuff yet useful...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-735012791289645231?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/735012791289645231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/how-to-declare-variables-in-ms-sql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/735012791289645231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/735012791289645231'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/how-to-declare-variables-in-ms-sql.html' title='How to Declare Variables in MS-SQL Server Management Studio'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-qgXMAYSNsfQ/TYKCFZi5ZRI/AAAAAAAAADw/I18rZzCcrAQ/s72-c/1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-879157933244518595</id><published>2011-03-17T13:39:00.000-07:00</published><updated>2011-03-17T13:42:06.000-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='code-based'/><category scheme='http://www.blogger.com/atom/ns#' term='openspan'/><title type='text'>How to Create Code-Based OpenSpan Solutions</title><content type='html'>OpenSpan Studio and its counterpart MS-Visual Studio plugin do a pretty good job when you have to integrate applications where you don’t have the source code available, service-enabled applications and/or exposed APIs. Having all the properties, events and methods graphically available make the development effort much easier than coding from scratch.&lt;br /&gt;&lt;br /&gt;But, let’s say you’re an avid developer and feel pretty good handling code. Well, here is something you would really appreciate then. OpenSpan 4.5 has the capability of write automations directly in C#, VB or other .NET languages.&lt;br /&gt;&lt;br /&gt;This is really powerful when you have the source code available and you want to drive your automations from a .NET-based application. Also, this approach would make the deployment sometimes simpler than the traditional approach.&lt;br /&gt;&lt;br /&gt;Here is an example of code-based automation project:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. Create a new .NET project. In this example we’ll be using a Visual C# project as the base project. Then, name it CodeBasedDemo.&lt;br /&gt;2. You don’t the auto generated Form1.cs so feel free to remove it from your project.&lt;br /&gt;3. In the same solution, create a new Empty OpenSpan project and name it CodeBasedOSDemo. Make sure you set the Solution field to Add to Solution instead of creating a new one.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-2NwFLRZCvz4/TYJpOr4KfXI/AAAAAAAAAC4/gQ989gqPLUs/s1600/1.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="287" width="400" src="http://1.bp.blogspot.com/-2NwFLRZCvz4/TYJpOr4KfXI/AAAAAAAAAC4/gQ989gqPLUs/s400/1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;4. Your solution should be similar to the following Solution Explorer image:&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/-LgHT-guzl_M/TYJu2UHCt1I/AAAAAAAAADA/GeGUxFVNGZ4/s1600/2.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="314" width="400" src="http://4.bp.blogspot.com/-LgHT-guzl_M/TYJu2UHCt1I/AAAAAAAAADA/GeGUxFVNGZ4/s400/2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;5. Now, it’s time to interrogate the required applications. We’re going to use a Windows-based application and a Web-based application for the purpose of the sample project. We’re not going to cover the interrogation process in details but feel free to take a look on the OpenSpan Online Help for more information. The OpenSpan Online Help is available at &lt;a href="http://help.openspan.com/"&gt;http://help.openspan.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;6. After interrogating the two sample applications (MyCRM Windows-based application and the Web-based Fedex.com website) you should have something similar to the following in the Object Explorer panel:&lt;br /&gt;&lt;br /&gt;Windows-based application&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-F1hujPtPL9o/TYJvQJGaBVI/AAAAAAAAADI/XlceONiyXCQ/s1600/3.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="400" width="341" src="http://3.bp.blogspot.com/-F1hujPtPL9o/TYJvQJGaBVI/AAAAAAAAADI/XlceONiyXCQ/s400/3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Web-based application&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-IF5pay8Ly6M/TYJvgJA29JI/AAAAAAAAADQ/Qkg_I5Vw94Q/s1600/4.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="244" width="400" src="http://3.bp.blogspot.com/-IF5pay8Ly6M/TYJvgJA29JI/AAAAAAAAADQ/Qkg_I5Vw94Q/s400/4.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;7. You’re now ready to dive into the code-based solution once everything we needed from the OpenSpan side is completed at this point. But before you start typing real code, make sure you import the right references to your .NET C# project. You may reference the same ones that OpenSpan automatically add when you interrogated the Windows and Web based applications.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-hs0sLHEoIY0/TYJvvvtI4aI/AAAAAAAAADY/fOkILDzPq6U/s1600/5.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="400" width="257" src="http://3.bp.blogspot.com/-hs0sLHEoIY0/TYJvvvtI4aI/AAAAAAAAADY/fOkILDzPq6U/s400/5.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;8. Make sure you also add the CodeBasedOSDemo (the OpenSpan project) as a reference to your .NET C# project.&lt;br /&gt;9. Right-click on your OpenSpan project and Build it to make all the necessary assemblies available to the parent project.&lt;br /&gt;10. Open the Program.cs class file and create instances of the OpenSpan interrogated applications:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-G0ck-Hfdgn8/TYJwAMt6MSI/AAAAAAAAADg/KrWgPpgAdzw/s1600/6.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="281" width="400" src="http://3.bp.blogspot.com/-G0ck-Hfdgn8/TYJwAMt6MSI/AAAAAAAAADg/KrWgPpgAdzw/s400/6.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;11. You’re ready to start interacting with the interrogated controls.  Some of the possibilities like checking the state of checkboxes, making fields read-only, copying the required fields when the user take actions on any of the running applications, etc are listed on the commented code below:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Windows.Forms;&lt;br /&gt;&lt;br /&gt;namespace CodeBasedDemo&lt;br /&gt;{&lt;br /&gt;static class Program&lt;br /&gt;{&lt;br /&gt;//Create instances of the MyCRM and Fedex objects&lt;br /&gt;static CodeBasedOSDemo.MyCRM myCRM = new CodeBasedOSDemo.MyCRM();&lt;br /&gt;static CodeBasedOSDemo.Fedex fedex = new CodeBasedOSDemo.Fedex();&lt;br /&gt;&lt;br /&gt;/// &lt;summary&gt;&lt;br /&gt;/// The main entry point for the application.&lt;br /&gt;/// &lt;/summary&gt;&lt;br /&gt;[STAThread]&lt;br /&gt;static void Main()&lt;br /&gt;{&lt;br /&gt;//Start Applications&lt;br /&gt;myCRM.Start();&lt;br /&gt;fedex.Start();&lt;br /&gt;&lt;br /&gt;//Make some fields Read-Only&lt;br /&gt;myCRM.txttxtCreditLimit.ReadOnly = true;&lt;br /&gt;myCRM.txttxtAccountBalance.ReadOnly = true;&lt;br /&gt;&lt;br /&gt;//Handle the Do Not Call checkbox behavior&lt;br /&gt;myCRM.cbDo_Not_Call.Click += new EventHandler(cbDo_Not_Call_Click);&lt;br /&gt;&lt;br /&gt;//Handle the OK button click&lt;br /&gt;myCRM.btnOK.Click += new EventHandler(btnOK_Click);&lt;br /&gt;//Handle the Click on the Last Tracking Number label&lt;br /&gt;myCRM.lblLast_Tracking_.Click += new EventHandler(lblLast_Tracking__Click);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Application.EnableVisualStyles();&lt;br /&gt;Application.SetCompatibleTextRenderingDefault(false);&lt;br /&gt;Application.Run();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Close the Applications and shutdown the running instance&lt;br /&gt;static void btnOK_Click(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;if(myCRM.IsRunning)&lt;br /&gt;myCRM.Stop();&lt;br /&gt;if(fedex.IsRunning)&lt;br /&gt;fedex.Stop();&lt;br /&gt;Application.Exit();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Copy the Last Tracking Number from the MyCRM application&lt;br /&gt;// to the text area on the Fedex website, perform the click on&lt;br /&gt;// the Track button and return the Delivery Date to the Notes field&lt;br /&gt;// on the MyCRM application. By the way, 3 lines of code to do that.&lt;br /&gt;static void lblLast_Tracking__Click(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;fedex.textArea1.Text = myCRM.txttxtLastTrackNum.Text;&lt;br /&gt;fedex.Track.PerformClick();&lt;br /&gt;myCRM.txttxtNotes.Text = "Delivered Date: " + fedex.txtDeliveredDate.Text;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Show or Hide the Phone field depending on the status of &lt;br /&gt;// the Do Not Call checkbox&lt;br /&gt;static void cbDo_Not_Call_Click(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;if (myCRM.cbDo_Not_Call.Checked)&lt;br /&gt;myCRM.txttxtPhone.Hide();&lt;br /&gt;else&lt;br /&gt;myCRM.txttxtPhone.Show();&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;12. Set the CodeBasedDemo project as the startup project of your solution&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-EkSs8HAB7hQ/TYJwYs8Y-aI/AAAAAAAAADo/4awc8KPmT18/s1600/7.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="242" width="400" src="http://3.bp.blogspot.com/-EkSs8HAB7hQ/TYJwYs8Y-aI/AAAAAAAAADo/4awc8KPmT18/s400/7.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;13. When you finish coding your automations, copy the .dll files under the CodeBasedOSDemo\bin\Debug directory to CodeBasedDemo\bin\Debug&lt;br /&gt;14. Build the solution and run it.&lt;br /&gt;&lt;br /&gt;If you have any problems building the solution take a look on the first few lines of the exception as it can point you to probably missing libraries in your project.&lt;br /&gt;&lt;br /&gt;The sample code for this tutorial is also available here: &lt;a href="http://dl.dropbox.com/u/10511857/CodeBasedDemo.zip"&gt;Code-Based Demo Source&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-879157933244518595?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/879157933244518595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/how-to-create-code-based-openspan.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/879157933244518595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/879157933244518595'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/how-to-create-code-based-openspan.html' title='How to Create Code-Based OpenSpan Solutions'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-2NwFLRZCvz4/TYJpOr4KfXI/AAAAAAAAAC4/gQ989gqPLUs/s72-c/1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-1437932903275926250</id><published>2011-03-16T11:42:00.000-07:00</published><updated>2011-03-16T11:49:47.882-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gettingstarted'/><category scheme='http://www.blogger.com/atom/ns#' term='upm'/><category scheme='http://www.blogger.com/atom/ns#' term='events'/><category scheme='http://www.blogger.com/atom/ns#' term='openspan'/><title type='text'>Getting Started with OpenSpan Events (without the server infrastructure)</title><content type='html'>So, you have heard about OpenSpan and its capabilities to collect and manipulate events from the user's desktop. Well, some people have been asking me if there is any way to start playing with OpenSpan Events without building the whole infrastructure behind it. Short answer: Yes. Instead of waiting for someone to create a database, setup the tables, install OpenSpan Events Server, figure out the transport layer (HTTP/S, JMS, etc), take a look on this short tutorial to see how can you collect events locally to make sure you're getting the information you want before you hit the server...&lt;br /&gt;&lt;br /&gt;1.      Start OpenSpan Studio (Or MS-Visual Studio if you’re using the plugin)&lt;br /&gt;&lt;br /&gt;2. Go to File &gt; New &gt; Project and Create a new Empty OpenSpan Project&lt;br /&gt;&lt;br /&gt;3. Name your project “Local Events Demo” and leave all default information selected&lt;br /&gt;&lt;br /&gt;4. You should end up with something similar to following picture:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-sI_zgYPWH24/TYD8UL8eQHI/AAAAAAAAAA4/MIUHd1YqRdA/s1600/1.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="262" width="400" src="http://1.bp.blogspot.com/-sI_zgYPWH24/TYD8UL8eQHI/AAAAAAAAAA4/MIUHd1YqRdA/s400/1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;5. Go to Project &gt; Add New Item and select Windows Application. I’m using a sample Windows Application and I will name it MyCRM&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-f0xkkoSfQC0/TYD8_YXv_AI/AAAAAAAAABA/4aO9xbNFIgQ/s1600/2.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="238" width="400" src="http://3.bp.blogspot.com/-f0xkkoSfQC0/TYD8_YXv_AI/AAAAAAAAABA/4aO9xbNFIgQ/s400/2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;6. Now you have to tell OpenSpan Studio where to look for that application. Go to Properties panel and select the Path to your application executable.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-R-s2RskAowM/TYD9daD-leI/AAAAAAAAABI/6Htg4vycjts/s1600/3.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="284" width="400" src="http://2.bp.blogspot.com/-R-s2RskAowM/TYD9daD-leI/AAAAAAAAABI/6Htg4vycjts/s400/3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;7. After you select the Path to the Windows Application executable, you are ready to start interrogating your application. Click on the Start Interrogation button on the application interrogation form. If you need / want more information about the OpenSpan interrogation process please take a look on the OpenSpan Online Help &lt;a href="http://help.openspan.com/Adapters_Interrogation/Interrogating_Windows32_Application.htm"&gt;here&lt;/a&gt; or send me your questions.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-bSohXmNhQ1k/TYD95dipTiI/AAAAAAAAABQ/ynJGySmgw_s/s1600/4.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="342" width="400" src="http://1.bp.blogspot.com/-bSohXmNhQ1k/TYD95dipTiI/AAAAAAAAABQ/ynJGySmgw_s/s400/4.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;8. If the interrogation process started successfully you should see your Windows application up and running. It’s now time to select the controls that you want to get events from. To do that, drag the bulls eye icon over the control you want and then release the mouse.&lt;br /&gt;&lt;br /&gt;9. After the interrogation process you should see the controls of the Windows application (buttons, checkboxes, text fields, etc) displaying green checkmarks next to them on the Object Explorer panel. That means you have successfully interrogated that application and should be able to proceed. &lt;br /&gt;Click on the Stop Interrogation button and save the project (File &gt; Save All).&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/-TjVCp9gOjtU/TYD-46jirpI/AAAAAAAAABY/kOMha5oh6Zw/s1600/5.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="250" width="400" src="http://4.bp.blogspot.com/-TjVCp9gOjtU/TYD-46jirpI/AAAAAAAAABY/kOMha5oh6Zw/s400/5.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;10. On the Object Explorer, click on the high level object and then go to the Properties panel. You’ll have to change two properties:&lt;br /&gt;a. MonitoredEvents – That specifies which controls and events should be monitored.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Q3RxkMEZKwU/TYEAvXRlVFI/AAAAAAAAAB4/ntb1N5LBt6A/s1600/9.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="313" width="400" src="http://2.bp.blogspot.com/-Q3RxkMEZKwU/TYEAvXRlVFI/AAAAAAAAAB4/ntb1N5LBt6A/s400/9.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Let’s select Button (Click)…&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-2Op-HgfilWk/TYD_sP4yGBI/AAAAAAAAABg/5xKilVAis3A/s1600/6.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="400" width="261" src="http://1.bp.blogspot.com/-2Op-HgfilWk/TYD_sP4yGBI/AAAAAAAAABg/5xKilVAis3A/s400/6.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Check Box (CheckStateChanged)… &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-JluD_yjOvvo/TYD_61H_TrI/AAAAAAAAABo/Ry6ytTyTkVQ/s1600/7.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="400" width="260" src="http://1.bp.blogspot.com/-JluD_yjOvvo/TYD_61H_TrI/AAAAAAAAABo/Ry6ytTyTkVQ/s400/7.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;and Text Box (TextChanged, Cut, Copy and Paste).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-aOpXhmAsT9M/TYEAHfdFJmI/AAAAAAAAABw/7XfdBX2pqiE/s1600/8.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="400" width="260" src="http://2.bp.blogspot.com/-aOpXhmAsT9M/TYEAHfdFJmI/AAAAAAAAABw/7XfdBX2pqiE/s400/8.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;b. MonitorEventsMode – Specifies the type of the event monitoring to perform. Set that to InterrogatedControls.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-E7OmtsBu440/TYEBJT_aJSI/AAAAAAAAACA/i--0PdsNYeI/s1600/10.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="314" width="400" src="http://3.bp.blogspot.com/-E7OmtsBu440/TYEBJT_aJSI/AAAAAAAAACA/i--0PdsNYeI/s400/10.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;11. Go to Project menu item and then choose Add New Item again. Select Global Container and leave the default name.&lt;br /&gt;&lt;br /&gt;12. Go to the OpenSpan Studio Toolbox and select SampleConnector from the Events section.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-pwdl1ctWW0Y/TYEBgxn6KjI/AAAAAAAAACI/W7f1lrqCj-E/s1600/11.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="278" width="400" src="http://1.bp.blogspot.com/-pwdl1ctWW0Y/TYEBgxn6KjI/AAAAAAAAACI/W7f1lrqCj-E/s400/11.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;If the SampleConnector component is not available, you have to select Tools menu, Select Choose Toolbox Items and then select SampleConnector (HINT: you can use the Filter feature to the get faster results as you may have lots of items to add).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-RxOv1uhSyQ4/TYEB-o8khTI/AAAAAAAAACQ/par2-dPnLV8/s1600/12.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="275" width="400" src="http://2.bp.blogspot.com/-RxOv1uhSyQ4/TYEB-o8khTI/AAAAAAAAACQ/par2-dPnLV8/s400/12.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Click OK&lt;br /&gt;&lt;br /&gt;Drag and Drop the SampleConnector to the Global Container 1 canvas.&lt;br /&gt;&lt;br /&gt;13. To configure the SampleConnector, highlight it and then go to the Properties panel. &lt;br /&gt;&lt;br /&gt;Change the values to the following:&lt;br /&gt;&lt;br /&gt;FileDelimiter – Comma&lt;br /&gt;FilePath – C:\Temp\localEvents.csv&lt;br /&gt;LogFileHandling – OverwriteExistingFile&lt;br /&gt;LoggingEnabled – True&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-12KpPsfqado/TYECQ6ITwRI/AAAAAAAAACY/evUKOdEXUGU/s1600/13.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="316" width="400" src="http://2.bp.blogspot.com/-12KpPsfqado/TYECQ6ITwRI/AAAAAAAAACY/evUKOdEXUGU/s400/13.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;14. Save the project (File &gt; Save All).&lt;br /&gt;15. Run the project. Debug menu item and then Start Debug or simply hit the green arrow on the OpenSpan Studio icons menu.&lt;br /&gt;16. Click on a few buttons, change the text of text fields, copy/paste text from different text fields, mark/unmark check boxes and then stop the project.&lt;br /&gt;&lt;br /&gt;Here is a screenshot of my Windows application:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-VfNz6Xjw4_8/TYEEH3W_BYI/AAAAAAAAACo/mVNoRUTwsW4/s1600/14.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="279" width="400" src="http://2.bp.blogspot.com/-VfNz6Xjw4_8/TYEEH3W_BYI/AAAAAAAAACo/mVNoRUTwsW4/s400/14.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;17. Go to the location you have setup the SampleConnector to record the events file and open the localEvents.csv file. You should see something similar to the following table (I’ve cleaned up the data because OpenSpan collects all events and that could be a lot ☺ ):&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-C6xFpQjeSoQ/TYEEVQjCh6I/AAAAAAAAACw/RTJGoy_Jm3Q/s1600/15.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="80" width="400" src="http://3.bp.blogspot.com/-C6xFpQjeSoQ/TYEEVQjCh6I/AAAAAAAAACw/RTJGoy_Jm3Q/s400/15.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I hope this helps you to get started with OpenSpan Events...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-1437932903275926250?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/1437932903275926250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/getting-started-with-openspan-events.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/1437932903275926250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/1437932903275926250'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/getting-started-with-openspan-events.html' title='Getting Started with OpenSpan Events (without the server infrastructure)'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-sI_zgYPWH24/TYD8UL8eQHI/AAAAAAAAAA4/MIUHd1YqRdA/s72-c/1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-1269658357624918589</id><published>2011-03-16T08:48:00.000-07:00</published><updated>2011-03-16T08:59:44.789-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='image'/><category scheme='http://www.blogger.com/atom/ns#' term='macos'/><category scheme='http://www.blogger.com/atom/ns#' term='mail.app'/><title type='text'>How to Disable Mac Mail.app Inline Image Attachments</title><content type='html'>&lt;div style="font-family: Arial; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;If you need to disable (or enable) inline images on Mac OS X Mail.app to view them as attachments, here is what you have to do:&lt;/div&gt;&lt;div style="font-family: Arial; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Go to Terminal (Applications &amp;gt; Utilities &amp;gt; Terminal) and then type:&lt;/div&gt;&lt;div style="font-family: Arial; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;code&gt;defaults write com.apple.mail DisableInlineAttachmentViewing -bool true&lt;/code&gt;&lt;/div&gt;&lt;div style="font-family: Arial; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;But, if you already have that set up on your system and want to go back, just run the following:&lt;/div&gt;&lt;div style="font-family: Arial; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;/div&gt;&lt;div style="font-family: Arial; margin-bottom: 21px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;code&gt;defaults write com.apple.mail DisableInlineAttachmentViewing -bool false&lt;/code&gt;&lt;/div&gt;&lt;div&gt;After any of the below commands don't forget to restart Mail.app&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-1269658357624918589?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/1269658357624918589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/how-to-disable-mac-mailapp-inline-image.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/1269658357624918589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/1269658357624918589'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/how-to-disable-mac-mailapp-inline-image.html' title='How to Disable Mac Mail.app Inline Image Attachments'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-4929777171555811838</id><published>2011-03-15T16:08:00.000-07:00</published><updated>2011-03-15T16:08:24.544-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='keyboard'/><category scheme='http://www.blogger.com/atom/ns#' term='macos'/><category scheme='http://www.blogger.com/atom/ns#' term='shortcut'/><title type='text'>How to switch windows within the same application in Mac OS X using keyboard shortcut</title><content type='html'>&lt;div style="font-family: Arial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 5px;"&gt;&lt;span class="Apple-style-span" style="line-height: 25px;"&gt;Just found out how to switch windows within the same application in Mac OS X using keyboard shortcuts. The default behavior when you press Apple + Tab is to switch between applications but if you want to switch to the same application but a different window (let's say you have multiple Web browsers open) all you have to do is press Apple + ` (` is located left to the 1 key and on top of Tab key). Simple!&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-4929777171555811838?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/4929777171555811838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/how-to-switch-windows-within-same.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/4929777171555811838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/4929777171555811838'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/how-to-switch-windows-within-same.html' title='How to switch windows within the same application in Mac OS X using keyboard shortcut'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7850628466108183059.post-9122647041519439901</id><published>2011-03-15T15:59:00.000-07:00</published><updated>2011-03-15T16:44:22.430-07:00</updated><title type='text'>Ok... I gave up...</title><content type='html'>Not the best way to start a blog (I know) but I've been thinking about blogging and the content to start one for a long time and I just figured out that would be better to keep the context of my posts around Information Technology and computer-related stuff...&lt;br /&gt;&lt;br /&gt;I've been for a long time on &lt;a href="https://twitter.com/#!/mjabali"&gt;Twitter&lt;/a&gt;,&amp;nbsp;&lt;a href="http://www.linkedin.com/in/jabali"&gt;LinkedIn&lt;/a&gt;&amp;nbsp;and Facebook but blogging is kind of new to me. Well, we all have to start somehow, right? Here is my first stab at this where I plan to share useful information about things that I find on the road (when traveling to customer's sites), articles from the Internet or something that I've in mind that someone can reuse out there.&lt;br /&gt;So, I gave up holding the idea of start blogging...&lt;br /&gt;&lt;br /&gt;By the way, my name is Marcelo Jabali and I've been working with technology since 1998. Most of my work is around systems integration, Service-Oriented Architecture and application design and architecture. I'm also a Mac fan and all things Apple.&lt;br /&gt;&lt;br /&gt;Stay tuned for more... Feel free to contact me, right comments, send questions and let's enjoy the Wonderful World of blogging and sharing information together!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7850628466108183059-9122647041519439901?l=marcelojabali.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://marcelojabali.blogspot.com/feeds/9122647041519439901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/ok-i-gave-up.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/9122647041519439901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7850628466108183059/posts/default/9122647041519439901'/><link rel='alternate' type='text/html' href='http://marcelojabali.blogspot.com/2011/03/ok-i-gave-up.html' title='Ok... I gave up...'/><author><name>Marcelo Jabali</name><uri>http://www.blogger.com/profile/04242820523344479167</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/-iX905LE75CE/TX_3cceFFhI/AAAAAAAAAAQ/6v0__1qr3Us/s220/Niver%2BM%25C3%25A1%2B2009%2B004_2.jpg'/></author><thr:total>0</thr:total></entry></feed>
