<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dave Stanley&#039;s Blog</title>
	<atom:link href="http://www.pepperdust.org/?feed=rss2&#038;p=19" rel="self" type="application/rss+xml" />
	<link>http://www.pepperdust.org</link>
	<description>* middleware &#38; open source escapades *</description>
	<lastBuildDate>Tue, 16 Feb 2010 14:29:26 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>Note on ActiveMQ&#8217;s VirtualDestinations</title>
		<link>http://www.pepperdust.org/?p=170</link>
		<comments>http://www.pepperdust.org/?p=170#comments</comments>
		<pubDate>Tue, 16 Feb 2010 14:17:25 +0000</pubDate>
		<dc:creator>dstanley</dc:creator>
				<category><![CDATA[activemq]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.pepperdust.org/?p=170</guid>
		<description><![CDATA[Recently I&#8217;ve been working with ActiveMQ virtual destinations. In some cases it can be a really useful technique to scale up your topic consumers. I&#8217;ve posted my abbreviated notes below. Virtual Destinations are logical destinations (i.e. Queues or Topics) that map onto one or more physical destinations. Their purpose is to overcome some load balancing/HA [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve been working with <a href="http://activemq.apache.org/virtual-destinations.html">ActiveMQ virtual destinations</a>. In some cases it can be a really useful technique to scale up your topic consumers. I&#8217;ve posted my abbreviated notes below. </p>
<p>Virtual Destinations are logical destinations (i.e. Queues or Topics) that map onto one or more physical destinations. Their purpose is to overcome some load balancing/HA limitations with durable subscribers.</p>
<p><strong>How it works:</strong></p>
<p>1) Producer sends to the logical topic &#8220;MyTopic&#8221;</p>
<p>2) Consumer A can consume from the &#8220;MyTopic&#8221; as a normal Topic consumer.</p>
<p>3) Consumers B &#038; C  can also consume, via a dedicated physical queue linked to the logical topic. The link part is really what changes a regular topic into a virtual topic. So now we have a setup like this:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #009900;">&#91;</span>producer<span style="color: #009900;">&#93;</span> <span style="color: #339933;">--&gt;</span> <span style="color: #009900;">&#91;</span>MyTopic<span style="color: #009900;">&#93;</span> <span style="color: #339933;">--&gt;</span> <span style="color: #009900;">&#91;</span>TopicConsumerA<span style="color: #009900;">&#93;</span>
&nbsp;
                        <span style="color: #339933;">--&gt;</span> <span style="color: #009900;">&#91;</span>VirtualQueueConsumer.<span style="color: #006633;">MyTopic</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">--&gt;</span> <span style="color: #009900;">&#91;</span>QueueConsumerB<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>QueueConsumerC<span style="color: #009900;">&#93;</span></pre></div></div>

<p>Note: &#8220;VirtualQueueConsumer.MyTopic&#8221; is a physical queue. This means you can have a pool of consumers consuming from the queue, allowing you to overcome some of the limitations of durable subscribers.</p>
<p>Configuration for virtual destinations is via the brokers /conf/activemq.xml:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">&nbsp;
<span style="color: #339933;">&lt;</span>destinationInterceptors<span style="color: #339933;">&gt;</span> 
   <span style="color: #339933;">&lt;</span>virtualDestinationInterceptor<span style="color: #339933;">&gt;</span> 
     <span style="color: #339933;">&lt;</span>virtualDestinations<span style="color: #339933;">&gt;</span> 
&nbsp;
   <span style="color: #339933;">&lt;!--</span> deliver traffic from virtual <span style="color: #0000ff;">'MyTopic'</span> to all subscribers to destinations matching the prefix <span style="color: #0000ff;">&quot;VirtualQueueConsumer.*&quot;</span> <span style="color: #009900;">&#40;</span>queue or topic<span style="color: #009900;">&#41;</span> <span style="color: #339933;">--&gt;</span>
   <span style="color: #339933;">&lt;</span>virtualTopic name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;MyTopic&quot;</span> 
                    prefix<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;VirtualQueueConsumer.*.&quot;</span> <span style="color: #339933;">/&gt;</span> 
     <span style="color: #339933;">&lt;/</span>virtualDestinations<span style="color: #339933;">&gt;</span> 
    <span style="color: #339933;">&lt;/</span>virtualDestinationInterceptor<span style="color: #339933;">&gt;</span> 
   <span style="color: #339933;">&lt;/</span>destinationInterceptors<span style="color: #339933;">&gt;</span> 
 <span style="color: #339933;">&lt;/</span>broker<span style="color: #339933;">&gt;</span></pre></div></div>



<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand sexy-bookmarks-bg-caring-old">
<ul class="socials">
		<li class="sexy-delicious">
			<a href="http://del.icio.us/post?url=http://www.pepperdust.org/?p=170&amp;title=Note+on+ActiveMQ%27s+VirtualDestinations" rel="nofollow" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=Note+on+ActiveMQ%27s+VirtualDestinations+-+http://b2l.me/gg4wg+(via+@dsmoniker)" rel="nofollow" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="sexy-comfeed">
			<a href="http://www.pepperdust.org/?p=170&feed=comments-rss2" rel="nofollow" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="sexy-friendfeed">
			<a href="http://www.friendfeed.com/share?title=Note+on+ActiveMQ%27s+VirtualDestinations&amp;link=http://www.pepperdust.org/?p=170" rel="nofollow" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->

]]></content:encoded>
			<wfw:commentRss>http://www.pepperdust.org/?feed=rss2&#038;p=170</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to configure ActiveMQ to support a lot of concurrent connections</title>
		<link>http://www.pepperdust.org/?p=150</link>
		<comments>http://www.pepperdust.org/?p=150#comments</comments>
		<pubDate>Wed, 20 Jan 2010 02:22:40 +0000</pubDate>
		<dc:creator>dstanley</dc:creator>
				<category><![CDATA[activemq]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.pepperdust.org/?p=150</guid>
		<description><![CDATA[In general, the out of the box ActiveMQ configuration works very well for the majority of usecases. One place where you will want to tweak things is in the area of supporting large numbers of concurrent connections. The good news is that ActiveMQ is well capable and with the tweaks below you should be well [...]]]></description>
			<content:encoded><![CDATA[<p>In general, the out of the box ActiveMQ configuration works very well for the majority of usecases. One place where you will want to tweak things is in the area of supporting large numbers of concurrent connections. </p>
<p>The good news is that ActiveMQ is well capable and with the tweaks below you should be well on your way to supporting thousands of concurrent connections. Without further adieu, here&#8217;s what you need to do:</p>
<p>1) In your brokers <conf>/activemq.xml, enable the nio transport.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">&nbsp;
<span style="color: #339933;">&lt;!--</span> The transport connectors ActiveMQ will listen to <span style="color: #339933;">--&gt;</span>
 <span style="color: #339933;">&lt;</span>transportConnectors<span style="color: #339933;">&gt;</span>
&nbsp;
   <span style="color: #339933;">&lt;!--</span> use tcp port <span style="color: #000000; font-weight: bold;">for</span> network connectors only <span style="color: #339933;">--&gt;</span>
   <span style="color: #339933;">&lt;</span>transportConnector name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;openwire&quot;</span> uri<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;tcp://localhost:61616&quot;</span><span style="color: #339933;">/&gt;</span>
&nbsp;
   <span style="color: #339933;">&lt;!--</span> use nio port <span style="color: #000000; font-weight: bold;">for</span> producers<span style="color: #339933;">/</span>consumers <span style="color: #339933;">--&gt;</span>
   <span style="color: #339933;">&lt;</span>transportConnector name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;openwire nio&quot;</span> uri<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;nio://localhost:62828?useQueueForAccept=false&quot;</span><span style="color: #339933;">/&gt;</span>
&nbsp;
 <span style="color: #339933;">&lt;/</span>transportConnectors<span style="color: #339933;">&gt;</span></pre></div></div>

<p>2) Again, in your brokers <conf>/activemq.xml, configure a destinationPolicy with optimizedDispatch=true, for example:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">   <span style="color: #339933;">&lt;</span>amq<span style="color: #339933;">:</span>destinationPolicy<span style="color: #339933;">&gt;</span>
   <span style="color: #339933;">&lt;</span>amq<span style="color: #339933;">:</span>policyMap<span style="color: #339933;">&gt;</span>
    <span style="color: #339933;">&lt;</span>amq<span style="color: #339933;">:</span>policyEntries<span style="color: #339933;">&gt;</span>
     <span style="color: #339933;">&lt;</span>amq<span style="color: #339933;">:</span>policyEntry queue<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&gt;&quot;</span>
       optimizedDispatch<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;true&quot;</span>
       lazyDispatch<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;false&quot;</span>
       producerFlowControl<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;false&quot;</span>
       memoryLimit<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;128 mb&quot;</span>
       strictOrderDispatch<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;true&quot;</span><span style="color: #339933;">&gt;</span>
      <span style="color: #339933;">&lt;</span>amq<span style="color: #339933;">:</span>dispatchPolicy<span style="color: #339933;">&gt;</span>
       <span style="color: #339933;">&lt;</span>amq<span style="color: #339933;">:</span>strictOrderDispatchPolicy <span style="color: #339933;">/&gt;</span>
      <span style="color: #339933;">&lt;/</span>amq<span style="color: #339933;">:</span>dispatchPolicy<span style="color: #339933;">&gt;</span>
      <span style="color: #339933;">&lt;</span>amq<span style="color: #339933;">:</span>messageGroupMapFactory<span style="color: #339933;">&gt;</span>
       <span style="color: #339933;">&lt;</span>amq<span style="color: #339933;">:</span>simpleMessageGroupMapFactory<span style="color: #339933;">/&gt;</span>
      <span style="color: #339933;">&lt;/</span>amq<span style="color: #339933;">:</span>messageGroupMapFactory<span style="color: #339933;">&gt;</span>
      <span style="color: #339933;">&lt;</span>amq<span style="color: #339933;">:</span>subscriptionRecoveryPolicy<span style="color: #339933;">&gt;</span>
       <span style="color: #339933;">&lt;</span>amq<span style="color: #339933;">:</span>timedSubscriptionRecoveryPolicy recoverDuration<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;360000&quot;</span> <span style="color: #339933;">/&gt;</span>
      <span style="color: #339933;">&lt;/</span>amq<span style="color: #339933;">:</span>subscriptionRecoveryPolicy<span style="color: #339933;">&gt;</span>
     <span style="color: #339933;">&lt;/</span>amq<span style="color: #339933;">:</span>policyEntry<span style="color: #339933;">&gt;</span>
    <span style="color: #339933;">&lt;/</span>amq<span style="color: #339933;">:</span>policyEntries<span style="color: #339933;">&gt;</span>
   <span style="color: #339933;">&lt;/</span>amq<span style="color: #339933;">:</span>policyMap<span style="color: #339933;">&gt;</span>
  <span style="color: #339933;">&lt;/</span>amq<span style="color: #339933;">:</span>destinationPolicy<span style="color: #339933;">&gt;</span></pre></div></div>

<p>For more info on optimizedDispatch see <a href="http://hiramchirino.com/blog/">Hiram</a>&#8216;s article <a href="http://fusesource.com/wiki/display/ProdInfo/Understanding+the+Threads+Allocated+in+ActiveMQ">here</a></p>
<p>3) At the OS level increase the number of file descriptors available to the broker</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #339933;">&gt;</span>ulimit <span style="color: #339933;">-</span>n <span style="color: #cc66cc;">4096</span></pre></div></div>

<p>4) Use a broker with a version > <a href="http://fusesource.com/products/enterprise-activemq/">5.3.0.3</a></p>
<p>5) Tweak your TCP/IP layer to support the connection load</p>
<p>On some operating systems you may need to tune the tcp/ip stack to be able to handle the incoming connection load. Below are the settings I&#8217;ve found worked well for Linux and Solaris.</p>
<p>Linux tcp tuning settings:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">sudo <span style="color: #339933;">/</span>sbin<span style="color: #339933;">/</span>sysctl <span style="color: #339933;">-</span>w net.<span style="color: #006633;">core</span>.<span style="color: #006633;">netdev_max_backlog</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">3000</span>
sudo <span style="color: #339933;">/</span>sbin<span style="color: #339933;">/</span>sysctl <span style="color: #339933;">-</span>w net.<span style="color: #006633;">ipv4</span>.<span style="color: #006633;">tcp_fin_timeout</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">15</span>
sudo <span style="color: #339933;">/</span>sbin<span style="color: #339933;">/</span>sysctl <span style="color: #339933;">-</span>w net.<span style="color: #006633;">core</span>.<span style="color: #006633;">somaxconn</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">3000</span></pre></div></div>

<p>Note: The net.core.netdev_max_backlog controls the size of the incoming packet queue for upper-layer (java) processing. </p>
<p>Solaris tcp tuning settings:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"># ndd <span style="color: #339933;">-</span>set <span style="color: #339933;">/</span>dev<span style="color: #339933;">/</span>tcp tcp_fin_wait_2_flush_interval <span style="color: #cc66cc;">67500</span>
# ndd <span style="color: #339933;">-</span>set <span style="color: #339933;">/</span>dev<span style="color: #339933;">/</span>tcp tcp_keepalive_interval <span style="color: #cc66cc;">30000</span>
# ndd <span style="color: #339933;">-</span>set <span style="color: #339933;">/</span>dev<span style="color: #339933;">/</span>tcp tcp_conn_req_max_q <span style="color: #cc66cc;">8000</span></pre></div></div>

<p>Lastly, when testing I&#8217;ve found the ActiveMQ jmx mbeans and jconsole to be indispensable in terms of monitoring thread counts and the number of concurrent connections. If all is configured properly each 16 incoming connections should result in one new thread in the broker VM.</p>
<p>These minor changes should allow you to support several <strong>thousand</strong> concurrent connections on conventional hardware. If you happen to try the settings above let me know how it goes.</p>


<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand sexy-bookmarks-bg-caring-old">
<ul class="socials">
		<li class="sexy-delicious">
			<a href="http://del.icio.us/post?url=http://www.pepperdust.org/?p=150&amp;title=How+to+configure+ActiveMQ+to+support+a+lot+of+concurrent+connections" rel="nofollow" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=How+to+configure+ActiveMQ+to+support+a+lot+of+concurrent+connections+-+http://b2l.me/fmweq+(via+@dsmoniker)" rel="nofollow" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="sexy-comfeed">
			<a href="http://www.pepperdust.org/?p=150&feed=comments-rss2" rel="nofollow" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="sexy-friendfeed">
			<a href="http://www.friendfeed.com/share?title=How+to+configure+ActiveMQ+to+support+a+lot+of+concurrent+connections&amp;link=http://www.pepperdust.org/?p=150" rel="nofollow" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->

]]></content:encoded>
			<wfw:commentRss>http://www.pepperdust.org/?feed=rss2&#038;p=150</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Cannot find lifecycle mapping for packaging: &#8216;bundle&#8217;.</title>
		<link>http://www.pepperdust.org/?p=135</link>
		<comments>http://www.pepperdust.org/?p=135#comments</comments>
		<pubDate>Tue, 12 Jan 2010 20:10:20 +0000</pubDate>
		<dc:creator>dstanley</dc:creator>
				<category><![CDATA[Home]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.pepperdust.org/?p=135</guid>
		<description><![CDATA[I&#8217;ve hit the error in the title a few times when using the maven bundle plugin to create osgi bundles. [INFO] Cannot find lifecycle mapping for packaging: 'bundle'. Component descriptor cannot be found in the component repository: org.apache.maven.lifecycle.mapping.LifecycleMappingbundle. The fix it, set the &#8216;extensions&#8217; element to true as shown below. &#60;plugin&#62; &#60;groupId&#62;org.apache.felix&#60;/groupId&#62; &#60;artifactId&#62;maven-bundle-plugin&#60;/artifactId&#62; &#60;version&#62;2.0.1&#60;/version&#62; &#60;extensions&#62;true&#60;/extensions&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>
I&#8217;ve hit the error in the title a few times when using the maven bundle plugin to create osgi bundles.
</p>
<pre>
[INFO] Cannot find lifecycle mapping for packaging: 'bundle'.
Component descriptor cannot be found in the component repository: org.apache.maven.lifecycle.mapping.LifecycleMappingbundle.
</pre>
<p>The fix it, set the <b>&#8216;extensions&#8217;</b> element to <b>true</b> as shown below.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>plugin<span style="color: #339933;">&gt;</span>
                <span style="color: #339933;">&lt;</span>groupId<span style="color: #339933;">&gt;</span>org.<span style="color: #006633;">apache</span>.<span style="color: #006633;">felix</span><span style="color: #339933;">&lt;/</span>groupId<span style="color: #339933;">&gt;</span>
                <span style="color: #339933;">&lt;</span>artifactId<span style="color: #339933;">&gt;</span>maven<span style="color: #339933;">-</span>bundle<span style="color: #339933;">-</span>plugin<span style="color: #339933;">&lt;/</span>artifactId<span style="color: #339933;">&gt;</span>
                <span style="color: #339933;">&lt;</span>version<span style="color: #339933;">&gt;</span>2.0.1<span style="color: #339933;">&lt;/</span>version<span style="color: #339933;">&gt;</span>
                <span style="color: #339933;">&lt;</span>extensions<span style="color: #339933;">&gt;</span>true<span style="color: #339933;">&lt;/</span>extensions<span style="color: #339933;">&gt;</span>
                <span style="color: #339933;">&lt;</span>configuration<span style="color: #339933;">&gt;</span>
                    .... 
&nbsp;
                <span style="color: #339933;">&lt;/</span>configuration<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>plugin<span style="color: #339933;">&gt;</span></pre></div></div>

<p>
Hope this saves you some digging!</p>


<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand sexy-bookmarks-bg-caring-old">
<ul class="socials">
		<li class="sexy-delicious">
			<a href="http://del.icio.us/post?url=http://www.pepperdust.org/?p=135&amp;title=Cannot+find+lifecycle+mapping+for+packaging%3A+%27bundle%27." rel="nofollow" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=Cannot+find+lifecycle+mapping+for+packaging%3A+%27bundle%27.+-+http://b2l.me/fmwkt+(via+@dsmoniker)" rel="nofollow" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="sexy-comfeed">
			<a href="http://www.pepperdust.org/?p=135&feed=comments-rss2" rel="nofollow" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="sexy-friendfeed">
			<a href="http://www.friendfeed.com/share?title=Cannot+find+lifecycle+mapping+for+packaging%3A+%27bundle%27.&amp;link=http://www.pepperdust.org/?p=135" rel="nofollow" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->

]]></content:encoded>
			<wfw:commentRss>http://www.pepperdust.org/?feed=rss2&#038;p=135</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Quick Fuse Tooling Tip (org/codehaus/plexus/util/FileUtils$FilterWrapper)</title>
		<link>http://www.pepperdust.org/?p=130</link>
		<comments>http://www.pepperdust.org/?p=130#comments</comments>
		<pubDate>Wed, 19 Nov 2008 22:57:00 +0000</pubDate>
		<dc:creator>dstanley</dc:creator>
				<category><![CDATA[Home]]></category>
		<category><![CDATA[cxf]]></category>
		<category><![CDATA[fuse tooling]]></category>
		<category><![CDATA[servicemix]]></category>

		<guid isPermaLink="false">/2008/11/19/quick-fuse-tooling-tip-org-codehaus-plexus-util-fileutils-filterwrapper</guid>
		<description><![CDATA[If your trying to create a ServiceMix CXF Service Unit using the Fuse 1.4.2 Tooling and you hit the following error trying to generate sources: 11/19/08 5:22:23 PM EST: resources:resources 11/19/08 5:22:23 PM EST: ERROR reactor-execute : /home/davestanley/Work/eclipse/cxf-se/TestTwo : org/codehaus/plexus/util/FileUtils$FilterWrapper The workaround is to add the maven-resources-plugin to your projects pom.xml. 1 2 3 4 [...]]]></description>
			<content:encoded><![CDATA[<p>
If your trying to create a ServiceMix CXF Service Unit using the <a href="http://fusesource.com/wiki/display/ProdInfo/FUSE+Eclipse+Tools">Fuse 1.4.2 Tooling</a> and you hit the following error trying to generate sources:
</p>
<pre><code>11/19/08 5:22:23 PM EST: resources:resources
11/19/08 5:22:23 PM EST: ERROR reactor-execute : /home/davestanley/Work/eclipse/cxf-se/TestTwo : org/codehaus/plexus/util/FileUtils$FilterWrapper</code></pre>
<p>The workaround is to add  the maven-resources-plugin to your projects pom.xml.</p>
<table class="CodeRay">
<tr>
<td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }">
<pre>1<tt>
</tt>2<tt>
</tt>3<tt>
</tt>4<tt>
</tt></pre>
</td>
<td class="code">
<pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"> <span class="ta">&lt;plugin&gt;</span>                <tt>
</tt>           <span class="ta">&lt;artifactId&gt;</span>maven-resources-plugin<span class="ta">&lt;/artifactId&gt;</span><tt>
</tt>           <span class="ta">&lt;version&gt;</span>2.2<span class="ta">&lt;/version&gt;</span><tt>
</tt> <span class="ta">&lt;/plugin&gt;</span></pre>
</td>
</tr>
</table>


<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand sexy-bookmarks-bg-caring-old">
<ul class="socials">
		<li class="sexy-delicious">
			<a href="http://del.icio.us/post?url=http://www.pepperdust.org/?p=130&amp;title=Quick+Fuse+Tooling+Tip+%28org%2Fcodehaus%2Fplexus%2Futil%2FFileUtils%24FilterWrapper%29" rel="nofollow" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=Quick+Fuse+Tooling+Tip+%28org%2Fcodehaus%2Fplexus%2Futil%2FFileUtils%24FilterWrapper%29+-+http://b2l.me/fmwku+(via+@dsmoniker)" rel="nofollow" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="sexy-comfeed">
			<a href="http://www.pepperdust.org/?p=130&feed=comments-rss2" rel="nofollow" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="sexy-friendfeed">
			<a href="http://www.friendfeed.com/share?title=Quick+Fuse+Tooling+Tip+%28org%2Fcodehaus%2Fplexus%2Futil%2FFileUtils%24FilterWrapper%29&amp;link=http://www.pepperdust.org/?p=130" rel="nofollow" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->

]]></content:encoded>
			<wfw:commentRss>http://www.pepperdust.org/?feed=rss2&#038;p=130</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>camel-hibernate now has a mvn repo</title>
		<link>http://www.pepperdust.org/?p=95</link>
		<comments>http://www.pepperdust.org/?p=95#comments</comments>
		<pubDate>Wed, 03 Sep 2008 22:29:00 +0000</pubDate>
		<dc:creator>dstanley</dc:creator>
				<category><![CDATA[camel]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">/2008/09/03/camel-hibernate-now-has-a-mvn-repo</guid>
		<description><![CDATA[A maven repo has been added to the camel-extra google code project, so its no longer necessary to build the camel-hibernate project from scratch. Yay! In order to add the camel-hibernate plugin as a dependency of your camel project you just need to add the repo: 1 2 3 4 5 &#60;repository&#62; &#60;id&#62;camel-extra-release&#60;/id&#62; &#60;name&#62;Camel Extra [...]]]></description>
			<content:encoded><![CDATA[<p>
A maven repo has been added to the <a href="http://code.google.com/p/camel-extra/wiki/AddingMavenRepo">camel-extra google code project</a>, so its no longer necessary to build the camel-hibernate project from scratch. Yay!
</p>
<p>In order to add the camel-hibernate plugin as a dependency of your <a href="http://activemq.apache.org/camel/">camel</a> project you just need to add the repo:</p>
<table class="CodeRay">
<tr>
<td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }">
<pre>1<tt>
</tt>2<tt>
</tt>3<tt>
</tt>4<tt>
</tt>5<tt>
</tt></pre>
</td>
<td class="code">
<pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"><span class="ta">&lt;repository&gt;</span>  <tt>
</tt>  <span class="ta">&lt;id&gt;</span>camel-extra-release<span class="ta">&lt;/id&gt;</span>  <tt>
</tt>  <span class="ta">&lt;name&gt;</span>Camel Extra Maven repository of releases<span class="ta">&lt;/name&gt;</span>  <tt>
</tt>  <span class="ta">&lt;url&gt;</span>http://camel-extra.googlecode.com/svn/maven2/releases<span class="ta">&lt;/url&gt;</span><tt>
</tt><span class="ta">&lt;/repository&gt;</span></pre>
</td>
</tr>
</table>
<p>Then add the dependency for the hibernate component:</p>
<table class="CodeRay">
<tr>
<td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }">
<pre>1<tt>
</tt>2<tt>
</tt>3<tt>
</tt>4<tt>
</tt>5<tt>
</tt></pre>
</td>
<td class="code">
<pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"><span class="ta">&lt;dependency&gt;</span>  <tt>
</tt>   <span class="ta">&lt;groupId&gt;</span>org.apache.camel.extra<span class="ta">&lt;/groupId&gt;</span>  <tt>
</tt>   <span class="ta">&lt;artifactId&gt;</span>camel-hibernate<span class="ta">&lt;/artifactId&gt;</span>  <tt>
</tt>   <span class="ta">&lt;version&gt;</span>1.0<span class="ta">&lt;/version&gt;</span><tt>
</tt><span class="ta">&lt;/dependency&gt;</span></pre>
</td>
</tr>
</table>
<p>
(Thanks Joe for the heads up)</p>


<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand sexy-bookmarks-bg-caring-old">
<ul class="socials">
		<li class="sexy-delicious">
			<a href="http://del.icio.us/post?url=http://www.pepperdust.org/?p=95&amp;title=camel-hibernate+now+has+a+mvn+repo" rel="nofollow" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=camel-hibernate+now+has+a+mvn+repo+-+http://b2l.me/fmwkw+(via+@dsmoniker)" rel="nofollow" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="sexy-comfeed">
			<a href="http://www.pepperdust.org/?p=95&feed=comments-rss2" rel="nofollow" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="sexy-friendfeed">
			<a href="http://www.friendfeed.com/share?title=camel-hibernate+now+has+a+mvn+repo&amp;link=http://www.pepperdust.org/?p=95" rel="nofollow" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->

]]></content:encoded>
			<wfw:commentRss>http://www.pepperdust.org/?feed=rss2&#038;p=95</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tuning Message Bus performance in Servicemix</title>
		<link>http://www.pepperdust.org/?p=63</link>
		<comments>http://www.pepperdust.org/?p=63#comments</comments>
		<pubDate>Thu, 22 May 2008 02:21:00 +0000</pubDate>
		<dc:creator>dstanley</dc:creator>
				<category><![CDATA[activemq]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[servicemix]]></category>

		<guid isPermaLink="false">/2008/05/22/tuning-message-bus-performance-in-servicemix</guid>
		<description><![CDATA[How fast you can send messages through ServiceMix is highly dependent on how the embedded ActiveMQ broker within ServiceMix is configured. This is because the ServiceMix NMR uses ActiveMQ as its messaging engine, so choosing the correct connection factories and persistenceAdapter can give you easy gains in performance. AMQ Message Store In ActiveMQ 5.0, a [...]]]></description>
			<content:encoded><![CDATA[<p>
How fast you can send messages through ServiceMix is highly dependent on how the embedded ActiveMQ broker within ServiceMix is configured. This is because the ServiceMix NMR uses ActiveMQ as its messaging engine, so choosing the correct <a href="http://blog.pepperdust.org/2008/5/14/using-the-spring-based-jms-endpoints-in-servicemix">connection factories</a> and persistenceAdapter can give you easy gains in performance.
</p>
<p><b>AMQ Message Store</b><br/><br/></p>
<p>
In ActiveMQ 5.0, a new high performance journaling persistence adapter was introduced called the <a href="http://activemq.apache.org/amq-message-store.html">AMQ Message Store</a>.
</p>
<p>To enable it, edit <servicemix>/conf/activemq.xml and modify the xbean config, adding the amq:persistenceAdapter element.<br/></p>
<table class="CodeRay">
<tr>
<td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }">
<pre>1<tt>
</tt>2<tt>
</tt>3<tt>
</tt>4<tt>
</tt>5<tt>
</tt>6<tt>
</tt>7<tt>
</tt>8<tt>
</tt></pre>
</td>
<td class="code">
<pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"> <span class="ta">&lt;amq:persistenceAdapter&gt;</span><tt>
</tt>         <span class="c">&lt;!-- Goodbye journaledJDBC --&gt;</span> <tt>
</tt>         <span class="c">&lt;!--amq:journaledJDBC journalLogFiles=&quot;5&quot; dataDirectory=&quot;./data/amq&quot;/ --&gt;</span><tt>
</tt><tt>
</tt>         <span class="c">&lt;!-- Hello AMQ Message Store --&gt;</span><tt>
</tt>         <span class="ta">&lt;amq:amqPersistenceAdapter</span> <span class="an">directory</span>=<span class="s"><span class="dl">&quot;</span><span class="k">file://./data/amq</span><span class="dl">&quot;</span></span><span class="ta">/&gt;</span><tt>
</tt><tt>
</tt> <span class="ta">&lt;/amq:persistenceAdapter&gt;</span></pre>
</td>
</tr>
</table>
<p>
And by the numbers .. <br/><br/><br />
<b>Example Flow:</b> Jms consumer -> JMS provider(w/Marshaller) -> EIP pipeline -> Bean -> JMS Provider<br />
<b>MessageCount:</b> 10000 <br/>
</p>
<pre><code>   With JournaledJDBC:

   [java] Overall time: 137701 ms
   [java] Messages per sec: 7.262111386264443
   [java]
   [java] Time: 139.603
   [java]
   [java] OK (1 test)</code></pre>
<pre><code>   With AMQ Message Store:

   [java] Overall time: 20511 ms
   [java] Messages per sec: 48.75432694651651
   [java]
   [java] Time: 23.556
   [java]
   [java] OK (1 test)</code></pre>
<p>
<b>Two additional steps:</b> <br/><br/></p>
<p>1) The current version of Servicemix trunk is using 4.1.1 of ActiveMQ, so if you want to build a ServiceMix distribution that contains ActiveMQ 5, you need to edit /trunk/pom.xml:
</p>
<table class="CodeRay">
<tr>
<td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }">
<pre>1<tt>
</tt>2<tt>
</tt>3<tt>
</tt></pre>
</td>
<td class="code">
<pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }">/trunk/pom.xml<tt>
</tt>-        <span class="ta">&lt;activemq-version&gt;</span>4.1.1<span class="ta">&lt;/activemq-version&gt;</span><tt>
</tt>+        <span class="ta">&lt;activemq-version&gt;</span>5.1.0<span class="ta">&lt;/activemq-version&gt;</span></pre>
</td>
</tr>
</table>
<p>
2) Once the activemq-version is updated,  the ra namespace in jndi.xml needs to be updated too &#8211; as this changed between AMQ versions.
</p>
<pre><code>/distributions/apache-servicemix/src/main/release/conf/jndi.xml
-       xmlns:amqra="http://activemq.org/ra/1.0"
+       xmlns:amqra="http://activemq.apache.org/schema/ra"</code></pre>
<p>
If your using <a href="http://open.iona.com/downloads">Fuse ESB</a>, it has a 5.x version of the Fuse Message Broker included, so the XML configuration change should be all thats required.</p>


<!-- Begin SexyBookmarks Menu Code -->
<div class="sexy-bookmarks sexy-bookmarks-expand sexy-bookmarks-bg-caring-old">
<ul class="socials">
		<li class="sexy-delicious">
			<a href="http://del.icio.us/post?url=http://www.pepperdust.org/?p=63&amp;title=Tuning+Message+Bus+performance+in+Servicemix" rel="nofollow" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="sexy-twitter">
			<a href="http://twitter.com/home?status=Tuning+Message+Bus+performance+in+Servicemix+-+http://b2l.me/fmvty+(via+@dsmoniker)" rel="nofollow" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="sexy-comfeed">
			<a href="http://www.pepperdust.org/?p=63&feed=comments-rss2" rel="nofollow" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="sexy-friendfeed">
			<a href="http://www.friendfeed.com/share?title=Tuning+Message+Bus+performance+in+Servicemix&amp;link=http://www.pepperdust.org/?p=63" rel="nofollow" title="Share this on FriendFeed">Share this on FriendFeed</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>
<!-- End SexyBookmarks Menu Code -->

]]></content:encoded>
			<wfw:commentRss>http://www.pepperdust.org/?feed=rss2&#038;p=63</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
