Author: gertv
Date: Sun Mar 23 22:46:16 2014
New Revision: 1580647

URL: http://svn.apache.org/r1580647
Log:
[scm-publish] Updating ServiceMix 5.0.x documentation contents

Modified:
    servicemix/site/production/docs/5.0.x/camel/camel-guide.pdf
    servicemix/site/production/docs/5.0.x/quickstart/activemq.html
    servicemix/site/production/docs/5.0.x/quickstart/quickstart.pdf
    servicemix/site/production/docs/5.0.x/quickstart/quickstart.pdf.html

Modified: servicemix/site/production/docs/5.0.x/camel/camel-guide.pdf
URL: 
http://svn.apache.org/viewvc/servicemix/site/production/docs/5.0.x/camel/camel-guide.pdf?rev=1580647&r1=1580646&r2=1580647&view=diff
==============================================================================
Files servicemix/site/production/docs/5.0.x/camel/camel-guide.pdf (original) 
and servicemix/site/production/docs/5.0.x/camel/camel-guide.pdf Sun Mar 23 
22:46:16 2014 differ

Modified: servicemix/site/production/docs/5.0.x/quickstart/activemq.html
URL: 
http://svn.apache.org/viewvc/servicemix/site/production/docs/5.0.x/quickstart/activemq.html?rev=1580647&r1=1580646&r2=1580647&view=diff
==============================================================================
--- servicemix/site/production/docs/5.0.x/quickstart/activemq.html (original)
+++ servicemix/site/production/docs/5.0.x/quickstart/activemq.html Sun Mar 23 
22:46:16 2014
@@ -89,7 +89,7 @@
 </ul>
         </div>
         <div id="body">
-                    <h1 id="AddingActiveMQtotheMix">Adding ActiveMQ to the 
'Mix</h1><p>Out-of-the-box, every Apache ServiceMix instance comes with an 
embedded ActiveMQ JMS broker.  This makes it easy to communicate between Camel 
routes using persistent messages on the same machine, but it will also enable 
you to distribute your routes over multiple instances afterwards for clustering 
or load-balancing.</p><h2 id="Ourscenario">Our scenario</h2><p>In this 
scenario, we also want to move files between directories.  Instead of logging 
the move directly, we are going to send an event JMS message onto a queue.  
Afterwards, we will create a second Camel route to receive the events and log 
them.</p><h2 id="Movingfilesandsendingeventmessages">Moving files and sending 
event messages</h2><p>The first Blueprint XML file we'll create contains a 
Camel route that moves the files from <tt>activemq/input</tt> to the 
<tt>activemq/output</tt> directory.  Afterwards, it will generate an event 
message an
 d send that to an ActiveMQ queue called <tt>events</tt>.</p><div 
class="syntax"><div class="highlight"><pre><span class="cp">&lt;?xml 
version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span>&#x000A;<span 
class="nt">&lt;blueprint</span>&#x000A;    <span class="na">xmlns=</span><span 
class="s">&quot;http://www.osgi.org/xmlns/blueprint/v1.0.0&quot;</span>&#x000A; 
   <span class="na">xmlns:xsi=</span><span 
class="s">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>&#x000A;  
  <span class="na">xsi:schemaLocation=</span><span 
class="s">&quot;</span>&#x000A;<span class="s">      
http://www.osgi.org/xmlns/blueprint/v1.0.0</span>&#x000A;<span class="s">      
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd&quot;</span><span 
class="nt">&gt;</span>&#x000A;&#x000A;    <span 
class="nt">&lt;camelContext</span> <span class="na">xmlns=</span><span 
class="s">&quot;http://camel.apache.org/schema/blueprint&quot;</span><span 
class="nt">&gt;</span>&#x000A;      <span class="nt">
 &lt;route&gt;</span>&#x000A;        <span class="nt">&lt;from</span> <span 
class="na">uri=</span><span 
class="s">&quot;file:activemq/input&quot;</span><span 
class="nt">/&gt;</span>&#x000A;        <span class="nt">&lt;to</span> <span 
class="na">uri=</span><span 
class="s">&quot;file:activemq/output&quot;</span><span 
class="nt">/&gt;</span>&#x000A;&#x000A;        <span 
class="nt">&lt;setBody&gt;</span>&#x000A;          <span 
class="nt">&lt;simple&gt;</span>&#x000A;            FileMovedEvent(file: 
${file:name}, timestamp: ${date:now:hh:MM:ss.SSS})&#x000A;          <span 
class="nt">&lt;/simple&gt;</span>&#x000A;        <span 
class="nt">&lt;/setBody&gt;</span>&#x000A;        <span 
class="nt">&lt;to</span> <span class="na">uri=</span><span 
class="s">&quot;activemq://events&quot;</span> <span 
class="nt">/&gt;</span>&#x000A;      <span 
class="nt">&lt;/route&gt;</span>&#x000A;    <span 
class="nt">&lt;/camelContext&gt;</span>&#x000A;<span 
class="nt">&lt;/blueprint&gt;</span>&#x000A;</pre></div
 >&#x000A;</div><p>Save this file in ServiceMix' <tt>deploy</tt> folder and use 
 ><tt>osgi:list</tt> to check on the bundle status as you did with the simple 
 >Camel example.  You should now be able to put files in the 
 ><tt>activemq/input</tt> directory and see them being moved to 
 ><tt>activemq/output</tt>.</p><h2 id="Receivingtheeventmessages">Receiving the 
 >event messages</h2><p>After deploying the first XML file, you're obviously 
 >not seeing any events being logged yet.  The event messages are sent to an 
 >ActiveMQ queue, but there's nobody to receive the events yet.  Let's change 
 >that now by creating a second Blueprint XML file.</p><div class="syntax"><div 
 >class="highlight"><pre><span class="cp">&lt;?xml version=&quot;1.0&quot; 
 >encoding=&quot;UTF-8&quot;?&gt;</span>&#x000A;<span 
 >class="nt">&lt;blueprint</span>&#x000A;    <span 
 >class="na">xmlns=</span><span 
 >class="s">&quot;http://www.osgi.org/xmlns/blueprint/v1.0.0&quot;</span>&#x000A;
 >    <span class="na">xmlns:xsi=</span><span class="s">&q
 uot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>&#x000A;    <span 
class="na">xsi:schemaLocation=</span><span class="s">&quot;</span>&#x000A;<span 
class="s">      http://www.osgi.org/xmlns/blueprint/v1.0.0</span>&#x000A;<span 
class="s">      
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd&quot;</span><span 
class="nt">&gt;</span>&#x000A;&#x000A;    <span 
class="nt">&lt;camelContext</span> <span class="na">xmlns=</span><span 
class="s">&quot;http://camel.apache.org/schema/blueprint&quot;</span><span 
class="nt">&gt;</span>&#x000A;      <span 
class="nt">&lt;route&gt;</span>&#x000A;        <span class="nt">&lt;from</span> 
<span class="na">uri=</span><span 
class="s">&quot;activemq://events&quot;</span><span 
class="nt">/&gt;</span>&#x000A;        <span class="nt">&lt;to</span> <span 
class="na">uri=</span><span class="s">&quot;log:events&quot;</span><span 
class="nt">/&gt;</span>&#x000A;      <span 
class="nt">&lt;/route&gt;</span>&#x000A;    <span class="nt">&lt;/camelContex
 t&gt;</span>&#x000A;<span 
class="nt">&lt;/blueprint&gt;</span>&#x000A;</pre></div>&#x000A;</div><p>As 
soon as this second file has been deployed, you'll start seeing the event 
messages in your <tt>log:display</tt> output.</p><h2 
id="Usingtheshelltomanagetheroutes">Using the shell to manage the 
routes</h2><p>You can now start and stop both routes from the command shell.  
The important thing to note here is that you can stop the event handler route 
while files are being processed.  As soon as you restart that bundle 
afterwards, you'll receive the events from all files that have been moved while 
the route was not running.</p>
+                    <h1 id="AddingActiveMQtotheMix">Adding ActiveMQ to the 
'Mix</h1><p>Out-of-the-box, every Apache ServiceMix instance comes with an 
embedded ActiveMQ JMS broker.  This makes it easy to communicate between Camel 
routes using persistent messages on the same machine, but it will also enable 
you to distribute your routes over multiple instances afterwards for clustering 
or load-balancing.</p><h2 id="Ourscenario">Our scenario</h2><p>In this 
scenario, we also want to move files between directories.  Instead of logging 
the move directly, we are going to send an event JMS message onto a queue.  
Afterwards, we will create a second Camel route to receive the events and log 
them.</p><h2 id="Beforewestart">Before we start</h2><p>First, we have to 
install an optional feature to allow Camel send and receive JMS messages.  
We'll talk about optional features a bit more in the next page of this 
quickstart guide, but for now, just run the following command in the 
console.</p><div cl
 ass="syntax"><div class="highlight"><pre>karaf@root&gt; features:install 
camel-jms&#x000A;</pre></div>&#x000A;</div><h2 
id="Movingfilesandsendingeventmessages">Moving files and sending event 
messages</h2><p>The first Blueprint XML file we'll create contains a Camel 
route that moves the files from <tt>activemq/input</tt> to the 
<tt>activemq/output</tt> directory.  Afterwards, it will generate an event 
message and send that to an ActiveMQ queue called <tt>events</tt>.</p><div 
class="syntax"><div class="highlight"><pre><span class="cp">&lt;?xml 
version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span>&#x000A;<span 
class="nt">&lt;blueprint</span>&#x000A;    <span class="na">xmlns=</span><span 
class="s">&quot;http://www.osgi.org/xmlns/blueprint/v1.0.0&quot;</span>&#x000A; 
   <span class="na">xmlns:xsi=</span><span 
class="s">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>&#x000A;  
  <span class="na">xsi:schemaLocation=</span><span 
class="s">&quot;</span>&#x000A;<span cla
 ss="s">      http://www.osgi.org/xmlns/blueprint/v1.0.0</span>&#x000A;<span 
class="s">      
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd&quot;</span><span 
class="nt">&gt;</span>&#x000A;&#x000A;    <span 
class="nt">&lt;camelContext</span> <span class="na">xmlns=</span><span 
class="s">&quot;http://camel.apache.org/schema/blueprint&quot;</span><span 
class="nt">&gt;</span>&#x000A;      <span 
class="nt">&lt;route&gt;</span>&#x000A;        <span class="nt">&lt;from</span> 
<span class="na">uri=</span><span 
class="s">&quot;file:activemq/input&quot;</span><span 
class="nt">/&gt;</span>&#x000A;        <span class="nt">&lt;to</span> <span 
class="na">uri=</span><span 
class="s">&quot;file:activemq/output&quot;</span><span 
class="nt">/&gt;</span>&#x000A;&#x000A;        <span 
class="nt">&lt;setBody&gt;</span>&#x000A;          <span 
class="nt">&lt;simple&gt;</span>&#x000A;            FileMovedEvent(file: 
${file:name}, timestamp: ${date:now:hh:MM:ss.SSS})&#x000A;          <span 
class="nt"
 >&lt;/simple&gt;</span>&#x000A;        <span 
 >class="nt">&lt;/setBody&gt;</span>&#x000A;        <span 
 >class="nt">&lt;to</span> <span class="na">uri=</span><span 
 >class="s">&quot;activemq://events&quot;</span> <span 
 >class="nt">/&gt;</span>&#x000A;      <span 
 >class="nt">&lt;/route&gt;</span>&#x000A;    <span 
 >class="nt">&lt;/camelContext&gt;</span>&#x000A;&#x000A;    <span 
 >class="nt">&lt;reference</span> <span class="na">id=</span><span 
 >class="s">&quot;connectionFactory&quot;</span> <span 
 >class="na">interface=</span><span 
 >class="s">&quot;javax.jms.ConnectionFactory&quot;</span> <span 
 >class="nt">/&gt;</span>&#x000A;    <span class="nt">&lt;bean</span> <span 
 >class="na">id=</span><span class="s">&quot;activemq&quot;</span> <span 
 >class="na">class=</span><span 
 >class="s">&quot;org.apache.activemq.camel.component.ActiveMQComponent&quot;</span><span
 > class="nt">&gt;</span>&#x000A;            <span 
 >class="nt">&lt;property</span> <span class="na">name=</span><span 
 >class="s">&quot;brokerURL&quot;</s
 pan> <span class="na">value=</span><span 
class="s">&quot;tcp://localhost:61616&quot;</span><span 
class="nt">/&gt;</span>&#x000A;       <span class="nt">&lt;property</span> 
<span class="na">name=</span><span class="s">&quot;userName&quot;</span> <span 
class="na">value=</span><span class="s">&quot;smx&quot;</span><span 
class="nt">/&gt;</span>&#x000A;         <span class="nt">&lt;property</span> 
<span class="na">name=</span><span class="s">&quot;password&quot;</span> <span 
class="na">value=</span><span class="s">&quot;smx&quot;</span><span 
class="nt">/&gt;</span>&#x000A;    <span 
class="nt">&lt;/bean&gt;</span>&#x000A;&#x000A;<span 
class="nt">&lt;/blueprint&gt;</span>&#x000A;</pre></div>&#x000A;</div><p>Save 
this file in ServiceMix' <tt>deploy</tt> folder and use <tt>osgi:list</tt> to 
check on the bundle status as you did with the simple Camel example.  You 
should now be able to put files in the <tt>activemq/input</tt> directory and 
see them being moved to <tt>activemq/output</tt>.</p><h2 id
 ="Receivingtheeventmessages">Receiving the event messages</h2><p>After 
deploying the first XML file, you're obviously not seeing any events being 
logged yet.  The event messages are sent to an ActiveMQ queue, but there's 
nobody to receive the events yet.  Let's change that now by creating a second 
Blueprint XML file.</p><div class="syntax"><div class="highlight"><pre><span 
class="cp">&lt;?xml version=&quot;1.0&quot; 
encoding=&quot;UTF-8&quot;?&gt;</span>&#x000A;<span 
class="nt">&lt;blueprint</span>&#x000A;    <span class="na">xmlns=</span><span 
class="s">&quot;http://www.osgi.org/xmlns/blueprint/v1.0.0&quot;</span>&#x000A; 
   <span class="na">xmlns:xsi=</span><span 
class="s">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>&#x000A;  
  <span class="na">xsi:schemaLocation=</span><span 
class="s">&quot;</span>&#x000A;<span class="s">      
http://www.osgi.org/xmlns/blueprint/v1.0.0</span>&#x000A;<span class="s">      
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd&quo
 t;</span><span class="nt">&gt;</span>&#x000A;&#x000A;    <span 
class="nt">&lt;camelContext</span> <span class="na">xmlns=</span><span 
class="s">&quot;http://camel.apache.org/schema/blueprint&quot;</span><span 
class="nt">&gt;</span>&#x000A;      <span 
class="nt">&lt;route&gt;</span>&#x000A;        <span class="nt">&lt;from</span> 
<span class="na">uri=</span><span 
class="s">&quot;activemq://events&quot;</span><span 
class="nt">/&gt;</span>&#x000A;        <span class="nt">&lt;to</span> <span 
class="na">uri=</span><span class="s">&quot;log:events&quot;</span><span 
class="nt">/&gt;</span>&#x000A;      <span 
class="nt">&lt;/route&gt;</span>&#x000A;    <span 
class="nt">&lt;/camelContext&gt;</span>&#x000A;&#x000A;    <span 
class="nt">&lt;reference</span> <span class="na">id=</span><span 
class="s">&quot;connectionFactory&quot;</span> <span 
class="na">interface=</span><span 
class="s">&quot;javax.jms.ConnectionFactory&quot;</span> <span 
class="nt">/&gt;</span>&#x000A;    <span class="nt">&lt;be
 an</span> <span class="na">id=</span><span 
class="s">&quot;activemq&quot;</span> <span class="na">class=</span><span 
class="s">&quot;org.apache.activemq.camel.component.ActiveMQComponent&quot;</span><span
 class="nt">&gt;</span>&#x000A;            <span class="nt">&lt;property</span> 
<span class="na">name=</span><span class="s">&quot;brokerURL&quot;</span> <span 
class="na">value=</span><span 
class="s">&quot;tcp://localhost:61616&quot;</span><span 
class="nt">/&gt;</span>&#x000A;      <span class="nt">&lt;property</span> <span 
class="na">name=</span><span class="s">&quot;userName&quot;</span> <span 
class="na">value=</span><span class="s">&quot;smx&quot;</span><span 
class="nt">/&gt;</span>&#x000A;         <span class="nt">&lt;property</span> 
<span class="na">name=</span><span class="s">&quot;password&quot;</span> <span 
class="na">value=</span><span class="s">&quot;smx&quot;</span><span 
class="nt">/&gt;</span>&#x000A;    <span 
class="nt">&lt;/bean&gt;</span>&#x000A;&#x000A;<span class="nt">&l
 t;/blueprint&gt;</span>&#x000A;</pre></div>&#x000A;</div><p>As soon as this 
second file has been deployed, you'll start seeing the event messages in your 
<tt>log:display</tt> output.</p><h2 id="Usingtheshelltomanagetheroutes">Using 
the shell to manage the routes</h2><p>You can now start and stop both routes 
from the command shell.  The important thing to note here is that you can stop 
the event handler route while files are being processed.  As soon as you 
restart that bundle afterwards, you'll receive the events from all files that 
have been moved while the route was not running.</p>
         </div>
       
           </div>

Modified: servicemix/site/production/docs/5.0.x/quickstart/quickstart.pdf
URL: 
http://svn.apache.org/viewvc/servicemix/site/production/docs/5.0.x/quickstart/quickstart.pdf?rev=1580647&r1=1580646&r2=1580647&view=diff
==============================================================================
Files servicemix/site/production/docs/5.0.x/quickstart/quickstart.pdf 
(original) and servicemix/site/production/docs/5.0.x/quickstart/quickstart.pdf 
Sun Mar 23 22:46:16 2014 differ

Modified: servicemix/site/production/docs/5.0.x/quickstart/quickstart.pdf.html
URL: 
http://svn.apache.org/viewvc/servicemix/site/production/docs/5.0.x/quickstart/quickstart.pdf.html?rev=1580647&r1=1580646&r2=1580647&view=diff
==============================================================================
--- servicemix/site/production/docs/5.0.x/quickstart/quickstart.pdf.html 
(original)
+++ servicemix/site/production/docs/5.0.x/quickstart/quickstart.pdf.html Sun 
Mar 23 22:46:16 2014
@@ -16,7 +16,7 @@
     </div>
   </div>
   <div id="main">
-    <h1 id="Introduction">Introduction</h1><p>First of all, welcome to the 
Apache ServiceMix project!</p><p>The goal of this Quickstart guide is to give 
you a 20-minute overview of what ServiceMix is and what you can do with it.  In 
that time, we'll install ServiceMix on your machine, deploy some basic 
integration routes and extend the container with an additional feature.</p><h1 
id="Installation">Installation</h1><p>Before we can start working with Apache 
ServiceMix, we have to get it installed and running on our local machine 
first.</p><h2 id="Systemrequirements">System requirements</h2><p>For running 
Apache ServiceMix itself, you'll need</p><ul><li><p>Java Runtime Environment 
(JRE) 1.6.x (Java 6) or<br/>  Java Runtime Environment (JRE) 1.7.x (Java 
7)</p></li><li><p>About 100 MB of free disk space for the default 
assembly</p></li></ul><p>If you're developing your own integration applications 
and OSGi bundles, you'll also need</p><ul><li><p>Java Developer Kit (JDK) 1.6.x 
(Java 6) o
 r<br/>  Java Developer Kit (JDK) 1.7.x (Java 7)</p></li><li><p>Apache Maven 
3.0.4 or higher</p></li></ul><h2 id="DownloadingApacheServiceMix">Downloading 
Apache ServiceMix</h2><p>Apache ServiceMix 5.0.0-SNAPSHOT is available under 
the Apache License v2 and can be downloaded from <a 
href="http://servicemix.apache.org/downloads.html";>http://servicemix.apache.org/downloads.html</a>.</p><p>Depending
 on your operation system, you should download either the tar.gz or the zip 
file:</p><ul><li><p><tt>tar.gz</tt> for Linux/Unix/MacOS 
X</p></li><li><p><tt>zip</tt> for Windows</p></li></ul><h2 
id="InstallingApacheServiceMix">Installing Apache ServiceMix</h2><p>Installing 
Apache ServiceMix is as simple as uncompressing the downloaded archive on your 
hard disk.  For the rest of this guide, we'll refer to the this location as 
<strong><tt>&lt;SERVICEMIX_HOME></tt></strong>.</p><h2 
id="StartingApacheServiceMix">Starting Apache ServiceMix</h2><p>Depending on 
your platform, start Apache ServiceMix by
  following the instructions below.  After starting the container, you will 
have access to the console from which you can manage the container.</p><h3 
id="OnWindows">On Windows</h3><p>In a command prompt window, navigate to the 
directory where you extracted ServiceMix and run the 
<tt>bin\servicemix.bat</tt> file.</p><p>Example: if ServiceMix in installed in 
the <tt>c:\tools\apache-servicemix-5.0.0-SNAPSHOT</tt> directory</p><div 
class="syntax"><div class="highlight"><pre><span class="p">&gt;</span> <span 
class="n">cd</span> c:\tools\apache-servicemix<span class="m">-5</span>.<span 
class="m">0</span>.<span class="m">0</span>-SNAPSHOT&#x000A;&gt; 
.\bin\servicemix&#x000A;</pre></div>&#x000A;</div><p><img border="0" 
src="images/start-windows.png"/></p><h3 id="OnLinuxUnixMacOSX">On 
Linux/Unix/MacOS X</h3><p>On a command shell, navigate to the directory where 
you extracted ServiceMix and the <tt>bin/servicemix</tt> shell 
script</p><p>Example: if ServiceMix is installed in the <tt>~/Applica
 tions/apache-servicemix-5.0.0-SNAPSHOT</tt> directory.</p><div 
class="syntax"><div class="highlight"><pre><span class="nv">$ </span><span 
class="nb">cd</span> 
~/Applications/apache-servicemix-5.0.0-SNAPSHOT&#x000A;<span class="nv">$ 
</span>./bin/servicemix&#x000A;</pre></div>&#x000A;</div><p>!/quickstart/images/start-linux.png</p>|width=75%|height=75%!<h1
 id="ApacheServiceMixconsole">Apache ServiceMix console</h1><p>Now that we 
successfully installed and started Apache ServiceMix, we'll take a closer look 
at the console.  This is where you manage your ServiceMix instance, add and 
remove bundles, install optional features, ...</p><h2 
id="Workingwithbundles">Working with bundles</h2><p>When ServiceMix is first 
started, a whole set of bundles providing the core features for the product are 
being installed.  Let's use the command console to find out more about 
them...</p><p>The <tt>osgi:list</tt> command can be used to get a list of all 
bundles currently installed.  Enter this</p><div c
 lass="syntax"><div class="highlight"><pre>karaf@root&gt; 
osgi:list&#x000A;</pre></div>&#x000A;</div><p>This is what the output looks 
like if you run this on your ServiceMix 
instance.</p><p>!/quickstart/images/osgi-list.png</p>|title=osgi:list!<p>For 
every bundle, you see:</p><ul><li><p>the bundle id</p></li><li><p>the bundle 
state</p></li><li><p>if the bundle contains a Blueprint or Spring XML file, the 
next 2 columns will show you if the beans defined there were created 
successfully</p></li><li><p>the bundle start level</p></li><li><p>the bundle 
name and version</p></li></ul><p>If you're looking for something specific in 
the list, you can use unix-like pipes and utilities to help you.  An example: 
to look for all Camel related bundles...</p><div class="syntax"><div 
class="highlight"><pre>karaf@root&gt; osgi:list | grep 
camel&#x000A;</pre></div>&#x000A;</div><p>!/quickstart/images/osgi-list-pipegrep.png</p>|title=osgi:list!<h2
 id="Workingwithlogging">Working with logging</h2><p>Many
  of the applications you write will have some form of log output.  To look at 
the message in the log file, you can us the <tt>log:diplay</tt> 
command.</p><div class="syntax"><div class="highlight"><pre>karaf@root&gt; 
log:display&#x000A;</pre></div>&#x000A;</div><p>!/quickstart/images/log-display.png</p>|title=log:display!<p>If
 you're only interested in the latest exception in the log file, you can use 
<tt>log:display-exception</tt> instead.</p><div class="syntax"><div 
class="highlight"><pre>karaf@root&gt; 
log:display-exception&#x000A;</pre></div>&#x000A;</div><p>!/quickstart/images/log-display-exception.png</p>|title=log:display-exception!<p>You
 can also change the log level at runtime by using the <tt>log:set</tt> 
command.  You can try these commands on your instance now by first setting the 
log level to <tt>DEBUG</tt> and then using <tt>grep</tt> to make sure that you 
can actually see the extra logging.</p><div class="syntax"><div 
class="highlight"><pre>karaf@root&gt; log:set DEBU
 G&#x000A;karaf@root&gt; log:display | grep 
DEBUG&#x000A;</pre></div>&#x000A;</div><p>!/quickstart/images/log-set-debug.png</p>|title=log:set
 DEBUG!<p>Afterwards, revert the log level to its original <tt>INFO</tt> value 
again with <tt>log:set</tt>.</p><div class="syntax"><div 
class="highlight"><pre>karaf@root&gt; log:set 
INFO&#x000A;</pre></div>&#x000A;</div><h2 id="...andtheresalotmore">...and 
there's a lot more</h2><p>These are obviously just a few examples of what the 
command shell is all about.  There are a lot more commands in the shell to help 
you deploy, monitor, manage and troubleshoot the applications you're building 
with ServiceMix.</p><h1 id="UsingCamel">Using Camel</h1><p>Now that we know how 
to operate Apache ServiceMix through the shell console, it's time to start 
using it for what it is built for.  Let's build our very first integration 
solution with a Camel route and deploy it on ServiceMix.</p><h2 
id="Oursimplescenario">Our simple scenario</h2><p>In this simple scena
 rio, we're going to move files from an input directory called 
<tt>camel/input</tt> to an output directory called <tt>camel/output</tt>.  To 
ensure we can keep track of which files get moved, we'll also write a message 
to the log file whenever we move a file.</p><h2 id="Creatingtheroute">Creating 
the route</h2><p>One of the most simple ways to deploy a new route on 
ServiceMix, is by defining the route in a Blueprint XML file.</p><div 
class="syntax"><div class="highlight"><pre><span class="cp">&lt;?xml 
version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span>&#x000A;<span 
class="nt">&lt;blueprint</span>&#x000A;    <span class="na">xmlns=</span><span 
class="s">&quot;http://www.osgi.org/xmlns/blueprint/v1.0.0&quot;</span>&#x000A; 
   <span class="na">xmlns:xsi=</span><span 
class="s">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>&#x000A;  
  <span class="na">xsi:schemaLocation=</span><span 
class="s">&quot;</span>&#x000A;<span class="s">      
http://www.osgi.org/xmlns/blu
 eprint/v1.0.0</span>&#x000A;<span class="s">      
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd&quot;</span><span 
class="nt">&gt;</span>&#x000A;&#x000A;    <span 
class="nt">&lt;camelContext</span> <span class="na">xmlns=</span><span 
class="s">&quot;http://camel.apache.org/schema/blueprint&quot;</span><span 
class="nt">&gt;</span>&#x000A;      <span 
class="nt">&lt;route&gt;</span>&#x000A;        <span class="nt">&lt;from</span> 
<span class="na">uri=</span><span 
class="s">&quot;file:camel/input&quot;</span><span 
class="nt">/&gt;</span>&#x000A;        <span class="nt">&lt;log</span> <span 
class="na">message=</span><span class="s">&quot;Moving ${file:name} to the 
output directory&quot;</span><span class="nt">/&gt;</span>&#x000A;        <span 
class="nt">&lt;to</span> <span class="na">uri=</span><span 
class="s">&quot;file:camel/output&quot;</span><span 
class="nt">/&gt;</span>&#x000A;      <span 
class="nt">&lt;/route&gt;</span>&#x000A;    <span 
class="nt">&lt;/camelContext&gt;</s
 pan>&#x000A;&#x000A;<span 
class="nt">&lt;/blueprint&gt;</span>&#x000A;</pre></div>&#x000A;</div><h2 
id="Deployingtheroute">Deploying the route</h2><p>In order to deploy and start 
the route, just copy the XML file you created into ServiceMix' <tt>deploy</tt> 
directory.  The file will get picked up and deployed by ServiceMix.  You will 
see a <tt>camel/input</tt> folder appear in your ServiceMix installation 
directory and any files you copy into that directory will get moved into the 
<tt>camel/output</tt> directory.</p><p>If you do a <tt>log:display</tt> in the 
shell, you will also see the log output for every file that's been 
moved.</p><p><img border="0" src="images/camel-sample-log.png"/></p><h2 
id="Usingtheshelltomanagetheroute">Using the shell to manage the 
route</h2><p>Using <tt>osgi:list</tt>, you'll notice that your XML file has 
been transformed into a bundle and that the Blueprint container has been 
created to start your Camel route.</p><p><img border="0" src="images/camel-samp
 le-deploy.png"/></p><p>From this output, you also learn that the bundle id for 
your XML file is 200.  This allow you to start and stop the route whenever 
necessary.  Let's give this a go now...</p><p>First, stop the route 
with</p><div class="syntax"><div class="highlight"><pre>karaf@root&gt; 
osgi:stop 200&#x000A;</pre></div>&#x000A;</div><p>The route is no longer 
active, so any files you copy into the <tt>orders/input</tt> folder will remain 
there for now.  As soon as you restart the route, the pending files will get 
moving again.</p><div class="syntax"><div class="highlight"><pre>karaf@root&gt; 
osgi:start 200&#x000A;</pre></div>&#x000A;</div><h1 
id="AddingActiveMQtotheMix">Adding ActiveMQ to the 'Mix</h1><p>Out-of-the-box, 
every Apache ServiceMix instance comes with an embedded ActiveMQ JMS broker.  
This makes it easy to communicate between Camel routes using persistent 
messages on the same machine, but it will also enable you to distribute your 
routes over multiple instances after
 wards for clustering or load-balancing.</p><h2 id="Ourscenario">Our 
scenario</h2><p>In this scenario, we also want to move files between 
directories.  Instead of logging the move directly, we are going to send an 
event JMS message onto a queue.  Afterwards, we will create a second Camel 
route to receive the events and log them.</p><h2 
id="Movingfilesandsendingeventmessages">Moving files and sending event 
messages</h2><p>The first Blueprint XML file we'll create contains a Camel 
route that moves the files from <tt>activemq/input</tt> to the 
<tt>activemq/output</tt> directory.  Afterwards, it will generate an event 
message and send that to an ActiveMQ queue called <tt>events</tt>.</p><div 
class="syntax"><div class="highlight"><pre><span class="cp">&lt;?xml 
version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span>&#x000A;<span 
class="nt">&lt;blueprint</span>&#x000A;    <span class="na">xmlns=</span><span 
class="s">&quot;http://www.osgi.org/xmlns/blueprint/v1.0.0&quot;</span>&#x000
 A;    <span class="na">xmlns:xsi=</span><span 
class="s">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>&#x000A;  
  <span class="na">xsi:schemaLocation=</span><span 
class="s">&quot;</span>&#x000A;<span class="s">      
http://www.osgi.org/xmlns/blueprint/v1.0.0</span>&#x000A;<span class="s">      
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd&quot;</span><span 
class="nt">&gt;</span>&#x000A;&#x000A;    <span 
class="nt">&lt;camelContext</span> <span class="na">xmlns=</span><span 
class="s">&quot;http://camel.apache.org/schema/blueprint&quot;</span><span 
class="nt">&gt;</span>&#x000A;      <span 
class="nt">&lt;route&gt;</span>&#x000A;        <span class="nt">&lt;from</span> 
<span class="na">uri=</span><span 
class="s">&quot;file:activemq/input&quot;</span><span 
class="nt">/&gt;</span>&#x000A;        <span class="nt">&lt;to</span> <span 
class="na">uri=</span><span 
class="s">&quot;file:activemq/output&quot;</span><span 
class="nt">/&gt;</span>&#x000A;&#x000A;        <sp
 an class="nt">&lt;setBody&gt;</span>&#x000A;          <span 
class="nt">&lt;simple&gt;</span>&#x000A;            FileMovedEvent(file: 
${file:name}, timestamp: ${date:now:hh:MM:ss.SSS})&#x000A;          <span 
class="nt">&lt;/simple&gt;</span>&#x000A;        <span 
class="nt">&lt;/setBody&gt;</span>&#x000A;        <span 
class="nt">&lt;to</span> <span class="na">uri=</span><span 
class="s">&quot;activemq://events&quot;</span> <span 
class="nt">/&gt;</span>&#x000A;      <span 
class="nt">&lt;/route&gt;</span>&#x000A;    <span 
class="nt">&lt;/camelContext&gt;</span>&#x000A;<span 
class="nt">&lt;/blueprint&gt;</span>&#x000A;</pre></div>&#x000A;</div><p>Save 
this file in ServiceMix' <tt>deploy</tt> folder and use <tt>osgi:list</tt> to 
check on the bundle status as you did with the simple Camel example.  You 
should now be able to put files in the <tt>activemq/input</tt> directory and 
see them being moved to <tt>activemq/output</tt>.</p><h2 
id="Receivingtheeventmessages">Receiving the event messag
 es</h2><p>After deploying the first XML file, you're obviously not seeing any 
events being logged yet.  The event messages are sent to an ActiveMQ queue, but 
there's nobody to receive the events yet.  Let's change that now by creating a 
second Blueprint XML file.</p><div class="syntax"><div 
class="highlight"><pre><span class="cp">&lt;?xml version=&quot;1.0&quot; 
encoding=&quot;UTF-8&quot;?&gt;</span>&#x000A;<span 
class="nt">&lt;blueprint</span>&#x000A;    <span class="na">xmlns=</span><span 
class="s">&quot;http://www.osgi.org/xmlns/blueprint/v1.0.0&quot;</span>&#x000A; 
   <span class="na">xmlns:xsi=</span><span 
class="s">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>&#x000A;  
  <span class="na">xsi:schemaLocation=</span><span 
class="s">&quot;</span>&#x000A;<span class="s">      
http://www.osgi.org/xmlns/blueprint/v1.0.0</span>&#x000A;<span class="s">      
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd&quot;</span><span 
class="nt">&gt;</span>&#x000A;&#x000A;  
   <span class="nt">&lt;camelContext</span> <span class="na">xmlns=</span><span 
class="s">&quot;http://camel.apache.org/schema/blueprint&quot;</span><span 
class="nt">&gt;</span>&#x000A;      <span 
class="nt">&lt;route&gt;</span>&#x000A;        <span class="nt">&lt;from</span> 
<span class="na">uri=</span><span 
class="s">&quot;activemq://events&quot;</span><span 
class="nt">/&gt;</span>&#x000A;        <span class="nt">&lt;to</span> <span 
class="na">uri=</span><span class="s">&quot;log:events&quot;</span><span 
class="nt">/&gt;</span>&#x000A;      <span 
class="nt">&lt;/route&gt;</span>&#x000A;    <span 
class="nt">&lt;/camelContext&gt;</span>&#x000A;<span 
class="nt">&lt;/blueprint&gt;</span>&#x000A;</pre></div>&#x000A;</div><p>As 
soon as this second file has been deployed, you'll start seeing the event 
messages in your <tt>log:display</tt> output.</p><h2 
id="Usingtheshelltomanagetheroutes">Using the shell to manage the 
routes</h2><p>You can now start and stop both routes from the command s
 hell.  The important thing to note here is that you can stop the event handler 
route while files are being processed.  As soon as you restart that bundle 
afterwards, you'll receive the events from all files that have been moved while 
the route was not running.</p><h1 id="Optionalfeatures">Optional 
features</h1><p>Everything discussed in the quickstart guide so far is 
installed out-of-the-box in Apache ServiceMix, but we also have a lot of 
optional features that can be installed in the container when necessary.</p><h2 
id="Listoffeatures">List of features</h2><p>The list of features is available 
with the <tt>features:list</tt> command.  The overview shows you whether or not 
the feature is currently installed, the version and the name of the 
feature.</p><p><img border="0" src="images/featureslist.png"/></p><p>The full 
list contains a lot of different features: optional Camel components, features 
for adding OBR or wrapper support to Serviceix, a web console, ...  Again, you 
can use thin
 gs like {{</p>|}} and <tt>grep</tt> to find the things in the list that you're 
interested in.<div class="syntax"><div class="highlight"><pre>karaf@root&gt; 
features:list | grep camel&#x000A;</pre></div>&#x000A;</div><h2 
id="ExampleWebconsole">Example: Web console</h2><p>To get the web console 
installed in ServiceMix, install the feature from your console</p><div 
class="syntax"><div class="highlight"><pre>karaf@root&gt; features:install 
webconsole&#x000A;</pre></div>&#x000A;</div><p>Afterwards, you can verify that 
the feature is marked installed in the overview.  You'll notice that the 
<tt>webconsole-base</tt> feature has also been installed as a requirement for 
the <tt>webconsole</tt> feature itself.</p><div class="syntax"><div 
class="highlight"><pre>karaf@root&gt; features:list | grep 
webconsole&#x000A;</pre></div>&#x000A;</div><p><img border="0" 
src="images/featureslist-grep-webconsole.png"/></p><p>You will now be able to 
point your browser to http://localhost:8181/system/console 
 and login with user <tt>smx</tt> and password <tt>smx</tt> to access the web 
console.  From the webconsole, you can also start and stop bundles, install 
optional features again, ...</p><h1 id="Wrappingitup...">Wrapping it 
up...</h1><p>This is where our introductory journey through the world of Apache 
ServiceMix ends.  We've obviously just scratched the surface of what is 
possible, but we hope you have an idea of what you can expect from Apache 
ServiceMix and how you can use it in your environment.</p><p>For more in-depth 
information, have a look at our set of user guides.  Also, if you have any 
questions, we welcome you on our user mailing list!</p>
+    <h1 id="Introduction">Introduction</h1><p>First of all, welcome to the 
Apache ServiceMix project!</p><p>The goal of this Quickstart guide is to give 
you a 20-minute overview of what ServiceMix is and what you can do with it.  In 
that time, we'll install ServiceMix on your machine, deploy some basic 
integration routes and extend the container with an additional feature.</p><h1 
id="Installation">Installation</h1><p>Before we can start working with Apache 
ServiceMix, we have to get it installed and running on our local machine 
first.</p><h2 id="Systemrequirements">System requirements</h2><p>For running 
Apache ServiceMix itself, you'll need</p><ul><li><p>Java Runtime Environment 
(JRE) 1.6.x (Java 6) or<br/>  Java Runtime Environment (JRE) 1.7.x (Java 
7)</p></li><li><p>About 100 MB of free disk space for the default 
assembly</p></li></ul><p>If you're developing your own integration applications 
and OSGi bundles, you'll also need</p><ul><li><p>Java Developer Kit (JDK) 1.6.x 
(Java 6) o
 r<br/>  Java Developer Kit (JDK) 1.7.x (Java 7)</p></li><li><p>Apache Maven 
3.0.4 or higher</p></li></ul><h2 id="DownloadingApacheServiceMix">Downloading 
Apache ServiceMix</h2><p>Apache ServiceMix 5.0.0-SNAPSHOT is available under 
the Apache License v2 and can be downloaded from <a 
href="http://servicemix.apache.org/downloads.html";>http://servicemix.apache.org/downloads.html</a>.</p><p>Depending
 on your operation system, you should download either the tar.gz or the zip 
file:</p><ul><li><p><tt>tar.gz</tt> for Linux/Unix/MacOS 
X</p></li><li><p><tt>zip</tt> for Windows</p></li></ul><h2 
id="InstallingApacheServiceMix">Installing Apache ServiceMix</h2><p>Installing 
Apache ServiceMix is as simple as uncompressing the downloaded archive on your 
hard disk.  For the rest of this guide, we'll refer to the this location as 
<strong><tt>&lt;SERVICEMIX_HOME></tt></strong>.</p><h2 
id="StartingApacheServiceMix">Starting Apache ServiceMix</h2><p>Depending on 
your platform, start Apache ServiceMix by
  following the instructions below.  After starting the container, you will 
have access to the console from which you can manage the container.</p><h3 
id="OnWindows">On Windows</h3><p>In a command prompt window, navigate to the 
directory where you extracted ServiceMix and run the 
<tt>bin\servicemix.bat</tt> file.</p><p>Example: if ServiceMix in installed in 
the <tt>c:\tools\apache-servicemix-5.0.0-SNAPSHOT</tt> directory</p><div 
class="syntax"><div class="highlight"><pre><span class="p">&gt;</span> <span 
class="n">cd</span> c:\tools\apache-servicemix<span class="m">-5</span>.<span 
class="m">0</span>.<span class="m">0</span>-SNAPSHOT&#x000A;&gt; 
.\bin\servicemix&#x000A;</pre></div>&#x000A;</div><p><img border="0" 
src="images/start-windows.png"/></p><h3 id="OnLinuxUnixMacOSX">On 
Linux/Unix/MacOS X</h3><p>On a command shell, navigate to the directory where 
you extracted ServiceMix and the <tt>bin/servicemix</tt> shell 
script</p><p>Example: if ServiceMix is installed in the <tt>~/Applica
 tions/apache-servicemix-5.0.0-SNAPSHOT</tt> directory.</p><div 
class="syntax"><div class="highlight"><pre><span class="nv">$ </span><span 
class="nb">cd</span> 
~/Applications/apache-servicemix-5.0.0-SNAPSHOT&#x000A;<span class="nv">$ 
</span>./bin/servicemix&#x000A;</pre></div>&#x000A;</div><p>!/quickstart/images/start-linux.png</p>|width=75%|height=75%!<h1
 id="ApacheServiceMixconsole">Apache ServiceMix console</h1><p>Now that we 
successfully installed and started Apache ServiceMix, we'll take a closer look 
at the console.  This is where you manage your ServiceMix instance, add and 
remove bundles, install optional features, ...</p><h2 
id="Workingwithbundles">Working with bundles</h2><p>When ServiceMix is first 
started, a whole set of bundles providing the core features for the product are 
being installed.  Let's use the command console to find out more about 
them...</p><p>The <tt>osgi:list</tt> command can be used to get a list of all 
bundles currently installed.  Enter this</p><div c
 lass="syntax"><div class="highlight"><pre>karaf@root&gt; 
osgi:list&#x000A;</pre></div>&#x000A;</div><p>This is what the output looks 
like if you run this on your ServiceMix 
instance.</p><p>!/quickstart/images/osgi-list.png</p>|title=osgi:list!<p>For 
every bundle, you see:</p><ul><li><p>the bundle id</p></li><li><p>the bundle 
state</p></li><li><p>if the bundle contains a Blueprint or Spring XML file, the 
next 2 columns will show you if the beans defined there were created 
successfully</p></li><li><p>the bundle start level</p></li><li><p>the bundle 
name and version</p></li></ul><p>If you're looking for something specific in 
the list, you can use unix-like pipes and utilities to help you.  An example: 
to look for all Camel related bundles...</p><div class="syntax"><div 
class="highlight"><pre>karaf@root&gt; osgi:list | grep 
camel&#x000A;</pre></div>&#x000A;</div><p>!/quickstart/images/osgi-list-pipegrep.png</p>|title=osgi:list!<h2
 id="Workingwithlogging">Working with logging</h2><p>Many
  of the applications you write will have some form of log output.  To look at 
the message in the log file, you can us the <tt>log:diplay</tt> 
command.</p><div class="syntax"><div class="highlight"><pre>karaf@root&gt; 
log:display&#x000A;</pre></div>&#x000A;</div><p>!/quickstart/images/log-display.png</p>|title=log:display!<p>If
 you're only interested in the latest exception in the log file, you can use 
<tt>log:display-exception</tt> instead.</p><div class="syntax"><div 
class="highlight"><pre>karaf@root&gt; 
log:display-exception&#x000A;</pre></div>&#x000A;</div><p>!/quickstart/images/log-display-exception.png</p>|title=log:display-exception!<p>You
 can also change the log level at runtime by using the <tt>log:set</tt> 
command.  You can try these commands on your instance now by first setting the 
log level to <tt>DEBUG</tt> and then using <tt>grep</tt> to make sure that you 
can actually see the extra logging.</p><div class="syntax"><div 
class="highlight"><pre>karaf@root&gt; log:set DEBU
 G&#x000A;karaf@root&gt; log:display | grep 
DEBUG&#x000A;</pre></div>&#x000A;</div><p>!/quickstart/images/log-set-debug.png</p>|title=log:set
 DEBUG!<p>Afterwards, revert the log level to its original <tt>INFO</tt> value 
again with <tt>log:set</tt>.</p><div class="syntax"><div 
class="highlight"><pre>karaf@root&gt; log:set 
INFO&#x000A;</pre></div>&#x000A;</div><h2 id="...andtheresalotmore">...and 
there's a lot more</h2><p>These are obviously just a few examples of what the 
command shell is all about.  There are a lot more commands in the shell to help 
you deploy, monitor, manage and troubleshoot the applications you're building 
with ServiceMix.</p><h1 id="UsingCamel">Using Camel</h1><p>Now that we know how 
to operate Apache ServiceMix through the shell console, it's time to start 
using it for what it is built for.  Let's build our very first integration 
solution with a Camel route and deploy it on ServiceMix.</p><h2 
id="Oursimplescenario">Our simple scenario</h2><p>In this simple scena
 rio, we're going to move files from an input directory called 
<tt>camel/input</tt> to an output directory called <tt>camel/output</tt>.  To 
ensure we can keep track of which files get moved, we'll also write a message 
to the log file whenever we move a file.</p><h2 id="Creatingtheroute">Creating 
the route</h2><p>One of the most simple ways to deploy a new route on 
ServiceMix, is by defining the route in a Blueprint XML file.</p><div 
class="syntax"><div class="highlight"><pre><span class="cp">&lt;?xml 
version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;</span>&#x000A;<span 
class="nt">&lt;blueprint</span>&#x000A;    <span class="na">xmlns=</span><span 
class="s">&quot;http://www.osgi.org/xmlns/blueprint/v1.0.0&quot;</span>&#x000A; 
   <span class="na">xmlns:xsi=</span><span 
class="s">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>&#x000A;  
  <span class="na">xsi:schemaLocation=</span><span 
class="s">&quot;</span>&#x000A;<span class="s">      
http://www.osgi.org/xmlns/blu
 eprint/v1.0.0</span>&#x000A;<span class="s">      
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd&quot;</span><span 
class="nt">&gt;</span>&#x000A;&#x000A;    <span 
class="nt">&lt;camelContext</span> <span class="na">xmlns=</span><span 
class="s">&quot;http://camel.apache.org/schema/blueprint&quot;</span><span 
class="nt">&gt;</span>&#x000A;      <span 
class="nt">&lt;route&gt;</span>&#x000A;        <span class="nt">&lt;from</span> 
<span class="na">uri=</span><span 
class="s">&quot;file:camel/input&quot;</span><span 
class="nt">/&gt;</span>&#x000A;        <span class="nt">&lt;log</span> <span 
class="na">message=</span><span class="s">&quot;Moving ${file:name} to the 
output directory&quot;</span><span class="nt">/&gt;</span>&#x000A;        <span 
class="nt">&lt;to</span> <span class="na">uri=</span><span 
class="s">&quot;file:camel/output&quot;</span><span 
class="nt">/&gt;</span>&#x000A;      <span 
class="nt">&lt;/route&gt;</span>&#x000A;    <span 
class="nt">&lt;/camelContext&gt;</s
 pan>&#x000A;&#x000A;<span 
class="nt">&lt;/blueprint&gt;</span>&#x000A;</pre></div>&#x000A;</div><h2 
id="Deployingtheroute">Deploying the route</h2><p>In order to deploy and start 
the route, just copy the XML file you created into ServiceMix' <tt>deploy</tt> 
directory.  The file will get picked up and deployed by ServiceMix.  You will 
see a <tt>camel/input</tt> folder appear in your ServiceMix installation 
directory and any files you copy into that directory will get moved into the 
<tt>camel/output</tt> directory.</p><p>If you do a <tt>log:display</tt> in the 
shell, you will also see the log output for every file that's been 
moved.</p><p><img border="0" src="images/camel-sample-log.png"/></p><h2 
id="Usingtheshelltomanagetheroute">Using the shell to manage the 
route</h2><p>Using <tt>osgi:list</tt>, you'll notice that your XML file has 
been transformed into a bundle and that the Blueprint container has been 
created to start your Camel route.</p><p><img border="0" src="images/camel-samp
 le-deploy.png"/></p><p>From this output, you also learn that the bundle id for 
your XML file is 200.  This allow you to start and stop the route whenever 
necessary.  Let's give this a go now...</p><p>First, stop the route 
with</p><div class="syntax"><div class="highlight"><pre>karaf@root&gt; 
osgi:stop 200&#x000A;</pre></div>&#x000A;</div><p>The route is no longer 
active, so any files you copy into the <tt>orders/input</tt> folder will remain 
there for now.  As soon as you restart the route, the pending files will get 
moving again.</p><div class="syntax"><div class="highlight"><pre>karaf@root&gt; 
osgi:start 200&#x000A;</pre></div>&#x000A;</div><h1 
id="AddingActiveMQtotheMix">Adding ActiveMQ to the 'Mix</h1><p>Out-of-the-box, 
every Apache ServiceMix instance comes with an embedded ActiveMQ JMS broker.  
This makes it easy to communicate between Camel routes using persistent 
messages on the same machine, but it will also enable you to distribute your 
routes over multiple instances after
 wards for clustering or load-balancing.</p><h2 id="Ourscenario">Our 
scenario</h2><p>In this scenario, we also want to move files between 
directories.  Instead of logging the move directly, we are going to send an 
event JMS message onto a queue.  Afterwards, we will create a second Camel 
route to receive the events and log them.</p><h2 id="Beforewestart">Before we 
start</h2><p>First, we have to install an optional feature to allow Camel send 
and receive JMS messages.  We'll talk about optional features a bit more in the 
next page of this quickstart guide, but for now, just run the following command 
in the console.</p><div class="syntax"><div 
class="highlight"><pre>karaf@root&gt; features:install 
camel-jms&#x000A;</pre></div>&#x000A;</div><h2 
id="Movingfilesandsendingeventmessages">Moving files and sending event 
messages</h2><p>The first Blueprint XML file we'll create contains a Camel 
route that moves the files from <tt>activemq/input</tt> to the 
<tt>activemq/output</tt> directory.  
 Afterwards, it will generate an event message and send that to an ActiveMQ 
queue called <tt>events</tt>.</p><div class="syntax"><div 
class="highlight"><pre><span class="cp">&lt;?xml version=&quot;1.0&quot; 
encoding=&quot;UTF-8&quot;?&gt;</span>&#x000A;<span 
class="nt">&lt;blueprint</span>&#x000A;    <span class="na">xmlns=</span><span 
class="s">&quot;http://www.osgi.org/xmlns/blueprint/v1.0.0&quot;</span>&#x000A; 
   <span class="na">xmlns:xsi=</span><span 
class="s">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>&#x000A;  
  <span class="na">xsi:schemaLocation=</span><span 
class="s">&quot;</span>&#x000A;<span class="s">      
http://www.osgi.org/xmlns/blueprint/v1.0.0</span>&#x000A;<span class="s">      
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd&quot;</span><span 
class="nt">&gt;</span>&#x000A;&#x000A;    <span 
class="nt">&lt;camelContext</span> <span class="na">xmlns=</span><span 
class="s">&quot;http://camel.apache.org/schema/blueprint&quot;</span><span class
 ="nt">&gt;</span>&#x000A;      <span class="nt">&lt;route&gt;</span>&#x000A;   
     <span class="nt">&lt;from</span> <span class="na">uri=</span><span 
class="s">&quot;file:activemq/input&quot;</span><span 
class="nt">/&gt;</span>&#x000A;        <span class="nt">&lt;to</span> <span 
class="na">uri=</span><span 
class="s">&quot;file:activemq/output&quot;</span><span 
class="nt">/&gt;</span>&#x000A;&#x000A;        <span 
class="nt">&lt;setBody&gt;</span>&#x000A;          <span 
class="nt">&lt;simple&gt;</span>&#x000A;            FileMovedEvent(file: 
${file:name}, timestamp: ${date:now:hh:MM:ss.SSS})&#x000A;          <span 
class="nt">&lt;/simple&gt;</span>&#x000A;        <span 
class="nt">&lt;/setBody&gt;</span>&#x000A;        <span 
class="nt">&lt;to</span> <span class="na">uri=</span><span 
class="s">&quot;activemq://events&quot;</span> <span 
class="nt">/&gt;</span>&#x000A;      <span 
class="nt">&lt;/route&gt;</span>&#x000A;    <span 
class="nt">&lt;/camelContext&gt;</span>&#x000A;&#x000A;    <
 span class="nt">&lt;reference</span> <span class="na">id=</span><span 
class="s">&quot;connectionFactory&quot;</span> <span 
class="na">interface=</span><span 
class="s">&quot;javax.jms.ConnectionFactory&quot;</span> <span 
class="nt">/&gt;</span>&#x000A;    <span class="nt">&lt;bean</span> <span 
class="na">id=</span><span class="s">&quot;activemq&quot;</span> <span 
class="na">class=</span><span 
class="s">&quot;org.apache.activemq.camel.component.ActiveMQComponent&quot;</span><span
 class="nt">&gt;</span>&#x000A;            <span class="nt">&lt;property</span> 
<span class="na">name=</span><span class="s">&quot;brokerURL&quot;</span> <span 
class="na">value=</span><span 
class="s">&quot;tcp://localhost:61616&quot;</span><span 
class="nt">/&gt;</span>&#x000A;        <span class="nt">&lt;property</span> 
<span class="na">name=</span><span class="s">&quot;userName&quot;</span> <span 
class="na">value=</span><span class="s">&quot;smx&quot;</span><span 
class="nt">/&gt;</span>&#x000A;         <span class="
 nt">&lt;property</span> <span class="na">name=</span><span 
class="s">&quot;password&quot;</span> <span class="na">value=</span><span 
class="s">&quot;smx&quot;</span><span class="nt">/&gt;</span>&#x000A;    <span 
class="nt">&lt;/bean&gt;</span>&#x000A;&#x000A;<span 
class="nt">&lt;/blueprint&gt;</span>&#x000A;</pre></div>&#x000A;</div><p>Save 
this file in ServiceMix' <tt>deploy</tt> folder and use <tt>osgi:list</tt> to 
check on the bundle status as you did with the simple Camel example.  You 
should now be able to put files in the <tt>activemq/input</tt> directory and 
see them being moved to <tt>activemq/output</tt>.</p><h2 
id="Receivingtheeventmessages">Receiving the event messages</h2><p>After 
deploying the first XML file, you're obviously not seeing any events being 
logged yet.  The event messages are sent to an ActiveMQ queue, but there's 
nobody to receive the events yet.  Let's change that now by creating a second 
Blueprint XML file.</p><div class="syntax"><div class="highlight"><
 pre><span class="cp">&lt;?xml version=&quot;1.0&quot; 
encoding=&quot;UTF-8&quot;?&gt;</span>&#x000A;<span 
class="nt">&lt;blueprint</span>&#x000A;    <span class="na">xmlns=</span><span 
class="s">&quot;http://www.osgi.org/xmlns/blueprint/v1.0.0&quot;</span>&#x000A; 
   <span class="na">xmlns:xsi=</span><span 
class="s">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>&#x000A;  
  <span class="na">xsi:schemaLocation=</span><span 
class="s">&quot;</span>&#x000A;<span class="s">      
http://www.osgi.org/xmlns/blueprint/v1.0.0</span>&#x000A;<span class="s">      
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd&quot;</span><span 
class="nt">&gt;</span>&#x000A;&#x000A;    <span 
class="nt">&lt;camelContext</span> <span class="na">xmlns=</span><span 
class="s">&quot;http://camel.apache.org/schema/blueprint&quot;</span><span 
class="nt">&gt;</span>&#x000A;      <span 
class="nt">&lt;route&gt;</span>&#x000A;        <span class="nt">&lt;from</span> 
<span class="na">uri=</span><span c
 lass="s">&quot;activemq://events&quot;</span><span 
class="nt">/&gt;</span>&#x000A;        <span class="nt">&lt;to</span> <span 
class="na">uri=</span><span class="s">&quot;log:events&quot;</span><span 
class="nt">/&gt;</span>&#x000A;      <span 
class="nt">&lt;/route&gt;</span>&#x000A;    <span 
class="nt">&lt;/camelContext&gt;</span>&#x000A;&#x000A;    <span 
class="nt">&lt;reference</span> <span class="na">id=</span><span 
class="s">&quot;connectionFactory&quot;</span> <span 
class="na">interface=</span><span 
class="s">&quot;javax.jms.ConnectionFactory&quot;</span> <span 
class="nt">/&gt;</span>&#x000A;    <span class="nt">&lt;bean</span> <span 
class="na">id=</span><span class="s">&quot;activemq&quot;</span> <span 
class="na">class=</span><span 
class="s">&quot;org.apache.activemq.camel.component.ActiveMQComponent&quot;</span><span
 class="nt">&gt;</span>&#x000A;            <span class="nt">&lt;property</span> 
<span class="na">name=</span><span class="s">&quot;brokerURL&quot;</span> <span 
cl
 ass="na">value=</span><span 
class="s">&quot;tcp://localhost:61616&quot;</span><span 
class="nt">/&gt;</span>&#x000A;            <span class="nt">&lt;property</span> 
<span class="na">name=</span><span class="s">&quot;userName&quot;</span> <span 
class="na">value=</span><span class="s">&quot;smx&quot;</span><span 
class="nt">/&gt;</span>&#x000A;         <span class="nt">&lt;property</span> 
<span class="na">name=</span><span class="s">&quot;password&quot;</span> <span 
class="na">value=</span><span class="s">&quot;smx&quot;</span><span 
class="nt">/&gt;</span>&#x000A;    <span 
class="nt">&lt;/bean&gt;</span>&#x000A;&#x000A;<span 
class="nt">&lt;/blueprint&gt;</span>&#x000A;</pre></div>&#x000A;</div><p>As 
soon as this second file has been deployed, you'll start seeing the event 
messages in your <tt>log:display</tt> output.</p><h2 
id="Usingtheshelltomanagetheroutes">Using the shell to manage the 
routes</h2><p>You can now start and stop both routes from the command shell.  
The important thing to note here
  is that you can stop the event handler route while files are being processed. 
 As soon as you restart that bundle afterwards, you'll receive the events from 
all files that have been moved while the route was not running.</p><h1 
id="Optionalfeatures">Optional features</h1><p>Everything discussed in the 
quickstart guide so far is installed out-of-the-box in Apache ServiceMix, but 
we also have a lot of optional features that can be installed in the container 
when necessary.</p><h2 id="Listoffeatures">List of features</h2><p>The list of 
features is available with the <tt>features:list</tt> command.  The overview 
shows you whether or not the feature is currently installed, the version and 
the name of the feature.</p><p><img border="0" 
src="images/featureslist.png"/></p><p>The full list contains a lot of different 
features: optional Camel components, features for adding OBR or wrapper support 
to Serviceix, a web console, ...  Again, you can use things like {{</p>|}} and 
<tt>grep</tt> to 
 find the things in the list that you're interested in.<div class="syntax"><div 
class="highlight"><pre>karaf@root&gt; features:list | grep 
camel&#x000A;</pre></div>&#x000A;</div><h2 id="ExampleWebconsole">Example: Web 
console</h2><p>To get the web console installed in ServiceMix, install the 
feature from your console</p><div class="syntax"><div 
class="highlight"><pre>karaf@root&gt; features:install 
webconsole&#x000A;</pre></div>&#x000A;</div><p>Afterwards, you can verify that 
the feature is marked installed in the overview.  You'll notice that the 
<tt>webconsole-base</tt> feature has also been installed as a requirement for 
the <tt>webconsole</tt> feature itself.</p><div class="syntax"><div 
class="highlight"><pre>karaf@root&gt; features:list | grep 
webconsole&#x000A;</pre></div>&#x000A;</div><p><img border="0" 
src="images/featureslist-grep-webconsole.png"/></p><p>You will now be able to 
point your browser to http://localhost:8181/system/console and login with user 
<tt>smx</tt> and pa
 ssword <tt>smx</tt> to access the web console.  From the webconsole, you can 
also start and stop bundles, install optional features again, ...</p><h1 
id="Wrappingitup...">Wrapping it up...</h1><p>This is where our introductory 
journey through the world of Apache ServiceMix ends.  We've obviously just 
scratched the surface of what is possible, but we hope you have an idea of what 
you can expect from Apache ServiceMix and how you can use it in your 
environment.</p><p>For more in-depth information, have a look at our set of 
user guides.  Also, if you have any questions, we welcome you on our user 
mailing list!</p>
   </div>
 </body>
 </html>
\ No newline at end of file


Reply via email to