<% import org.apache.servicemix.documentation.Helper._ %>
<% attributes("title") = "Home" %>
<% attributes("navigation") = false %>
<% attributes("style") = uri("/theme/picker.css") %>
<div id="bookpicker">

<div class="left">
  <a href="quickstart/index.html">
    <h2>Quickstart Guide</h2>
  </a>
</div>

<div class="right">
  <p>If you're new to Apache ServiceMix, this document will guide you in your first steps in Apache ServiceMix.</p>
  <% if (sitegen(engine)) { %>
    <div class="pdf">
      <a href="quickstart/quickstart.pdf" class="pdf">PDF document</a>
    </div>
  <% } %>
</div>

<div class="left">
  <a href="user/index.html">
    <h2>User Guide</h2>
  </a>
</div>

<div class="right">
  <p>Apache ServiceMix contains a lot of different components and it embeds a lot of other Apache projects.  This user guide will help you select and configure the right components when building your own solution.</p>
</div>

<div class="left">
  <a href="activemq/index.html">
    <h2>ActiveMQ Guide</h2>
  </a>
</div>

<div class="right">
  <p>Apache ServiceMix embeds Apache ActiveMQ to provide a JMS message broker that you can interact with from your Camel routes, providing support for message persistence, clustering, failover, ...</p>
</div>

<div class="left">
  <a href="camel/index.html">
    <h2>Camel Guide</h2>
  </a>
</div>

<div class="right">
  <p>Apache Camel is a core component of Apache ServiceMix.  This guide will show you how to build and deploy Camel routes for Apache ServiceMix.</p>
  <% if (sitegen(engine)) { %>
    <div class="pdf">
      <a href="camel/camel-guide.pdf" class="pdf">PDF document</a>
    </div>
  <% } %>
</div>

<div class="left">
  <a href="nmr/index.html">
    <h2>NMR Guide</h2>
  </a>
</div>

<div class="right">
  <p>The NMR is a lightweight mechanism for communicating between Camel routes and CXF endpoints.  It also provides listener interfaces to learn about exchanges and endpoints at runtime.</p>
  <% if (sitegen(engine)) { %>
    <div class="pdf">
      <a href="nmr/nmr-guide.pdf" class="pdf">PDF document</a>
    </div>
  <% } %>
</div>

<div class="left">
  <a href="jbi/index.html">
    <h2>JBI Guide</h2>
  </a>
</div>

<div class="right">
  <p>Information about the JBI (Java Business Integration) support in Apache ServiceMix and a description for all the JBI components.</p>
  <% if (sitegen(engine)) { %>
    <div class="pdf">
      <a href="jbi/jbi-guide.pdf" class="pdf">PDF document</a>
    </div>
  <% } %>
</div>

<div class="left">
  <a href="commands/index.html">
    <h2>Command Reference</h2>
  </a>
</div>

<div class="right">
  <p>Help pages for all the available commands in the Apache ServiceMix console.</p>
</div>

<div class="left">
  <a href="users-guide/index.html">
    <h2>Karaf User guide</h2>
  </a>
</div>

<div class="right">
  <p>Apache ServiceMix uses Apache Karaf as the underlying OSGi server runtime. This manual explains about the features and functionality provided by Karaf.</p>
</div>

<div class="left">
  <a href="developers-guide/index.html">
    <h2>Karaf Developer guide</h2>
  </a>
</div>

<div class="right">
  <p>The Apache Karaf Developer Guide gives you some information about developing with and for the OSGi server runtime.</p>
</div>


<div class="left">
  <a href="commercial.html">
    <h2>Commercial Guides</h2>
  </a>
</div>

<div class="right">
  <p>Documentation from commercial providers and books you can buy.</p>
</div>
</div>

<div class="clearing"></div>
