Author: ksobkowiak
Date: Fri Feb 12 21:55:15 2016
New Revision: 1730121
URL: http://svn.apache.org/viewvc?rev=1730121&view=rev
Log:
[scm-publish] Updating ServiceMix 7.x documentation contents
Added:
servicemix/site/production/docs/7.x/developers-guide/
servicemix/site/production/docs/7.x/developers-guide/creating-bundles.html
servicemix/site/production/docs/7.x/developers-guide/developer-commands.html
servicemix/site/production/docs/7.x/developers-guide/extending.html
servicemix/site/production/docs/7.x/developers-guide/github-contributions.html
servicemix/site/production/docs/7.x/developers-guide/karaf-maven-plugin.html
servicemix/site/production/docs/7.x/developers-guide/services.html
servicemix/site/production/docs/7.x/index.html
Added:
servicemix/site/production/docs/7.x/developers-guide/creating-bundles.html
URL:
http://svn.apache.org/viewvc/servicemix/site/production/docs/7.x/developers-guide/creating-bundles.html?rev=1730121&view=auto
==============================================================================
--- servicemix/site/production/docs/7.x/developers-guide/creating-bundles.html
(added)
+++ servicemix/site/production/docs/7.x/developers-guide/creating-bundles.html
Fri Feb 12 21:55:15 2016
@@ -0,0 +1,253 @@
+
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Apache ServiceMix Documentation - </title>
+
+ <link href="../theme/master.css" rel="stylesheet" type="text/css" />
+ <link href="../theme/pygmentize.css" rel="stylesheet" type="text/css" />
+
+ <script type="text/javascript" src="../scripts/jquery.js"></script>
+ <script type="text/javascript" src="../scripts/jquery.cookie.js"></script>
+ <script type="text/javascript" src="../scripts/jquery.jstree.js"></script>
+
+ <script>
+ $(document).ready(function(){
+ $("#nav").jstree({
+ "themes": {
+ "theme": "apple", "dots": false
+ },
+ "plugins" : [ "themes", "html_data", "cookies", "themes" ]
+ });
+ });
+ </script>
+ <script type="text/javascript">
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-398545-1']);
+ _gaq.push(['_trackPageview']);
+
+ (function() {
+ var ga = document.createElement('script'); ga.type = 'text/javascript';
ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
+ })();
+ </script>
+</head>
+<body>
+ <div id="page">
+ <div id="siteHeader">
+ <table width="100%">
+ <tr valign="middle">
+ <td align="left">
+ <a href="http://servicemix.apache.org/" title="An open source ESB">
+ <img border="0" src="../images/logodesign.png" height="80"/><img
border="0" height="80" src="../images/new-logo.png" />
+ </a>
+ </td>
+ <td align="right">
+ <a href="http://www.apache.org/" title="The Apache Sofware
Foundation">
+ <img border="0" height="60" src="../images/ASF-logo.png">
+ </a>
+ <ul class="siteNav">
+ <li><a href="../index.html" title="Overview">Guides
Overview</a></li>
+ <li><a href="../contribute.html"
title="Contributing?">Contributing?</a></li>
+ <li>
+ <form action="http://www.google.com/search" method="get"
style="font-size: 10px;">
+ <input name="ie" type="hidden" value="UTF-8"></input>
+ <input name="oe" type="hidden" value="UTF-8"></input>
+ <input maxlength="255" name="q" size="15" type="text"
value=""></input>
+ <input name="btnG" type="submit" value="Search"></input>
+ <input name="domains" type="hidden"
value="servicemix.apache.org/docs/4.4.x"></input>
+ <input name="sitesearch" type="hidden"
value="servicemix.apache.org/docs/4.4.x"></input>
+ </form>
+ </li>
+ </ul>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <div id="content">
+ <div id="nav">
+ <ul>
+ <li id="karaf-developers-guide">
+ <a href="#">Developer's Guide</a>
+ <ul>
+ <li id="extending-console">
+ <a href="extending-console.html">Extending Console</a>
+ </li>
+ <li id="writing-tests">
+ <a href="writing-tests.html">Tests with Pax Exam</a>
+ </li>
+ <li id="debugging">
+ <a href="debugging.html">Debug Karaf</a>
+ </li>
+ <li id="creating-bundles">
+ <a href="creating-bundles.html">Creating bundles</a>
+ </li>
+ <li id="connect-console">
+ <a href="connect-console.html">Connect to the console</a>
+ </li>
+ <li id="shell-syntax">
+ <a href="shell-syntax.html">Console shell syntax</a>
+ </li>
+ </ul>
+ </li>
+</ul>
+ </div>
+ <div id="body">
+ <h1
id="BasicbundlecreationusingtheFelixmavenbundleplugin">Basic bundle creation
using the Felix maven-bundle-plugin</h1><p>Create a bundle instead of a normal
jar by using a pom file like this:</p><pre>
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>my.groupId</groupId>
+ <artifactId>my.bundle</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <name>My Bundle</name>
+ <description>My bundle short description</description>
+
+ <build>
+ <resources>
+ <resource>
+
<directory>/x1/asf/karaf/k40x/target/checkout/manual/src/main/resources</directory>
+ <filtering>true</filtering>
+ <includes>
+ <include>**/*</include>
+ </includes>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <version>2.4.0</version>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+ <Bundle-SymbolicName>manual</Bundle-SymbolicName>
+ ...
+ </instructions>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
+</pre><h2 id="Addextendedinformationtobundles">Add extended information to
bundles</h2><p>Karaf supports a OSGI-INF/bundle.info file in a bundle. This
file is extended description of the bundle. It supports ASCII character
declarations (for adding color, formatting, etc) and some simple Wiki
syntax.</p><p>Simply add a src/main/resources/OSGI-INF/bundle.info file
containing, for instance:</p><pre>
+h1. SYNOPSIS
+ The Apache Software Foundation provides support for the Apache community
of open-source software projects.
+ The Apache projects are characterized by a collaborative, consensus based
development process, an open and
+ pragmatic software license, and a desire to create high quality software
that leads the way in its field.
+ We consider ourselves not simply a group of projects sharing a server, but
rather a community of developers
+ and users.
+
+h1. DESCRIPTION
+ Long description of your bundle, including usage, etc.
+
+h1.SEE ALSO
+ [http://yourside\]
+ [http://yourside/docs\]
+</pre><p>You can display this extended information using:</p><pre>
+root@karaf> bundles:info
+</pre><h2 id="WikiSyntax">Wiki Syntax</h2><p>Karaf supports some simple wiki
syntax in bunde info files:</p><pre>
+h1., h2., ... : Headings
+* : Enumerations
+[http://....] : links
+</pre><h1 id="CreatingbundlesfornonOSGithirdpartydependencies">Creating
bundles for non OSGi third party dependencies</h1><h2
id="Dynamicallywrappingjars">Dynamically wrapping jars</h2><p>Karaf supports
the wrap: protocol execution.</p><p>It allows for directly deploying third
party dependencies, like Apache Commons Lang:</p><pre>
+root@karaf> bundles:install wrap:mvn:commons-lang/commons-lang/2.4
+</pre><p>The wrap protocol creates a bundle dynamically using the bnd.
Confiugurations can be added in the wrap URL:</p><p>from the shell</p><pre>
+root@karaf> bundles:install
'wrap:mvn:commons-lang/commons-lang/2.4$Bundle-SymbolicName=commons-lang&Bundle-Version=2.4'
+</pre><p>from features.xml</p><pre>
+<bundle>wrap:mvn:commons-lang/commons-lang/2.4$Bundle-SymbolicName=commons-lang&undle-Version=2.4</bundle>
+</pre><h2 id="Staticallybundlingjars">Statically bundling jars</h2><p>You can
also create a wrap bundle for a third party dependency.<br/>This bundle is
simply a Maven POM that shades an existing jar and package into a jar
bundle.</p><p>For instance, to create an OSGi bundle that wraps Apache Commons
Lang, simply define the following Maven POM:</p><pre>
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>osgi.commons-lang</groupId>
+ <artifactId>osgi.commons-lang</artifactId>
+ <version>2.4</version>
+ <packaging>bundle</packaging>
+ <name>commons-lang OSGi Bundle</name>
+ <description>This OSGi bundle simply wraps commons-lang-2.4.jar
artifact.</description>
+
+ <dependencies>
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.4</version>
+ <optional>true</optional>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <defaultGoal>install</defaultGoal>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-shade-plugin</artifactId>
+ <version>1.1</version>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>shade</goal>
+ </goals>
+ <configuration>
+ <artifactSet>
+ <includes>
+
<include>commons-lang:commons-lang</include>
+ </includes>
+ </artifactSet>
+ <filters>
+ <filter>
+
<artifact>commons-lang:commons-lang</artifact>
+ <excludes>
+ <exclude>**</exclude>
+ </excludes>
+ </filter>
+ </filters>
+
<promoteTransitiveDependencies>true</promoteTransitiveDependencies>
+
<createDependencyReducedPom>true</createDependencyReducedPom>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <version>2.1.0</version>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+ <Bundle-SymbolicName>manual</Bundle-SymbolicName>
+ <Export-Package></Export-Package>
+ <Import-Package></Import-Package>
+
<_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>
+
<_removeheaders>Ignore-Package,Include-Resource,Private-Package,Embed-Dependency</_removeheaders>
+ </instructions>
+ <unpackBundle>true</unpackBundle>
+ </configuration>
+ </plugin>
+ </build>
+
+</project>
+</pre><p>The resulting OSGi bundle can now be deployed directly:</p><pre>
+root@karaf> bundles:install -s mvn:osgi.commons-lang/osgi.commons-lang/2.4
+</pre><p>Some more information is available at <a
href="http://gnodet.blogspot.com/2008/09/id-like-to-talk-bit-about-third-party.html">http://gnodet.blogspot.com/2008/09/id-like-to-talk-bit-about-third-party.html</a>,
<a
href="http://blog.springsource.com/2008/02/18/creating-osgi-bundles/">http://blog.springsource.com/2008/02/18/creating-osgi-bundles/</a>
and <a
href="http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html">http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html</a>.</p>
+ </div>
+
+ </div>
+ <div id="siteFooter">
+ © 2008-2014 The Apache Software Foundation - <a
href="http://servicemix.apache.org/site/privacy-policy.html">Privacy Policy</a>
+ <br/>
+ Apache ServiceMix, ServiceMix, Apache, the Apache feather logo, and the
Apache ServiceMix project logo are trademarks of The Apache Software Foundation.
+ </div>
+ </div>
+</body>
+</html>
\ No newline at end of file
Added:
servicemix/site/production/docs/7.x/developers-guide/developer-commands.html
URL:
http://svn.apache.org/viewvc/servicemix/site/production/docs/7.x/developers-guide/developer-commands.html?rev=1730121&view=auto
==============================================================================
---
servicemix/site/production/docs/7.x/developers-guide/developer-commands.html
(added)
+++
servicemix/site/production/docs/7.x/developers-guide/developer-commands.html
Fri Feb 12 21:55:15 2016
@@ -0,0 +1,234 @@
+
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Apache ServiceMix Documentation - </title>
+
+ <link href="../theme/master.css" rel="stylesheet" type="text/css" />
+ <link href="../theme/pygmentize.css" rel="stylesheet" type="text/css" />
+
+ <script type="text/javascript" src="../scripts/jquery.js"></script>
+ <script type="text/javascript" src="../scripts/jquery.cookie.js"></script>
+ <script type="text/javascript" src="../scripts/jquery.jstree.js"></script>
+
+ <script>
+ $(document).ready(function(){
+ $("#nav").jstree({
+ "themes": {
+ "theme": "apple", "dots": false
+ },
+ "plugins" : [ "themes", "html_data", "cookies", "themes" ]
+ });
+ });
+ </script>
+ <script type="text/javascript">
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-398545-1']);
+ _gaq.push(['_trackPageview']);
+
+ (function() {
+ var ga = document.createElement('script'); ga.type = 'text/javascript';
ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
+ })();
+ </script>
+</head>
+<body>
+ <div id="page">
+ <div id="siteHeader">
+ <table width="100%">
+ <tr valign="middle">
+ <td align="left">
+ <a href="http://servicemix.apache.org/" title="An open source ESB">
+ <img border="0" src="../images/logodesign.png" height="80"/><img
border="0" height="80" src="../images/new-logo.png" />
+ </a>
+ </td>
+ <td align="right">
+ <a href="http://www.apache.org/" title="The Apache Sofware
Foundation">
+ <img border="0" height="60" src="../images/ASF-logo.png">
+ </a>
+ <ul class="siteNav">
+ <li><a href="../index.html" title="Overview">Guides
Overview</a></li>
+ <li><a href="../contribute.html"
title="Contributing?">Contributing?</a></li>
+ <li>
+ <form action="http://www.google.com/search" method="get"
style="font-size: 10px;">
+ <input name="ie" type="hidden" value="UTF-8"></input>
+ <input name="oe" type="hidden" value="UTF-8"></input>
+ <input maxlength="255" name="q" size="15" type="text"
value=""></input>
+ <input name="btnG" type="submit" value="Search"></input>
+ <input name="domains" type="hidden"
value="servicemix.apache.org/docs/4.4.x"></input>
+ <input name="sitesearch" type="hidden"
value="servicemix.apache.org/docs/4.4.x"></input>
+ </form>
+ </li>
+ </ul>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <div id="content">
+ <div id="nav">
+ <ul>
+ <li id="karaf-developers-guide">
+ <a href="#">Developer's Guide</a>
+ <ul>
+ <li id="extending-console">
+ <a href="extending-console.html">Extending Console</a>
+ </li>
+ <li id="writing-tests">
+ <a href="writing-tests.html">Tests with Pax Exam</a>
+ </li>
+ <li id="debugging">
+ <a href="debugging.html">Debug Karaf</a>
+ </li>
+ <li id="creating-bundles">
+ <a href="creating-bundles.html">Creating bundles</a>
+ </li>
+ <li id="connect-console">
+ <a href="connect-console.html">Connect to the console</a>
+ </li>
+ <li id="shell-syntax">
+ <a href="shell-syntax.html">Console shell syntax</a>
+ </li>
+ </ul>
+ </li>
+</ul>
+ </div>
+ <div id="body">
+ <h1 id="Developercommands">Developer
commands</h1><p>As you can see in the users guide, Apache Karaf is an
enterprise ready OSGi container.</p><p>It's also a container designed to
simplify the life for developers and administrators to get details about
the<br/>running container.</p><h2 id="Dump">Dump</h2><p>If you encounter issues
like performance degradations, weird behaviour, it could be helpful to have a
kind of snapshot<br/>about the current activity of the container.</p><p>The
<tt>dev:dump-create</tt> command creates a dump file
containing:</p><ul><li><p>the <tt>bundles.txt</tt> file contains the list of
all OSGi bundles, with id, symbolic name, version, current
status</p></li><li><p>the <tt>environment.txt</tt> file contains details about
Apache Karaf, OSGi framework, Operating System, JVM, system<br/> properties,
threads count, classes loaded</p></li><li><p>the <tt>features.txt</tt> file
contains the list of Apache Karaf features repositories, fe
atures with version, current<br/> status, and bundles
provided.</p></li><li><p>the <tt>threads.txt</tt> file contains a thread dump,
with all threads, waiting status, etc.</p></li><li><p>the <tt>log</tt> folder
contains the <tt>data/log</tt> folder, with all log files.</p></li></ul><p>By
default, the <tt>dev:dump-create</tt> command creates a zip file in the
<tt>KARAF_BASE</tt> folder, with the timestamp of the<br/>dump
creation:</p><pre>
+karaf@root()> dev:dump-create
+Diagnostic dump created.
+</pre><p>We can see the file generated in the <tt>KARAF_BASE</tt>
folder:</p><pre>
+$ cd /opt/apache-karaf-3.0.0
+$ ls -lh *.zip
+-rw-r--r-- 1 user group 11K Dec 23 16:08 2013-12-23_160858.zip
+</pre><p>You can specify the file name of the zip archive:</p><pre>
+karaf@root()> dev:dump-create mydump.zip
+Diagnostic dump created.
+</pre><p>Instead of a zip archive, you can create the dump (exploded) in a
directory using the <tt>-d</tt> (<tt>--directory</tt>) option:</p><pre>
+karaf@root()> dev:dump-create -d /tmp/mydump
+Diagnostic dump created.
+</pre><h2 id="Diagnostic">Diagnostic</h2><p>It's not always easy for the
developers to understand why a bundle is not active.</p><p>It could be because
the Activator failed, the Blueprint container start failed, etc.</p><p>The
<tt>bundle:diag</tt> command gives you details about a bundle is not
active:</p><pre>
+karaf@root()> bundle:diag
+Apache ServiceMix :: Bundles :: avro-ipc (81)
+---------------------------------------------
+Status: Installed
+Unsatisfied Requirements:
+[81.0] osgi.wiring.package;
(&(osgi.wiring.package=javax.servlet)(version>=2.5.0)(!(version>=3.0.0)))
+[81.0] osgi.wiring.package;
(&(osgi.wiring.package=javax.servlet.http)(version>=2.5.0)(!(version>=3.0.0)))
+[81.0] osgi.wiring.package;
(&(osgi.wiring.package=org.apache.avro)(version>=1.7.0)(!(version>=2.0.0)))
+[81.0] osgi.wiring.package;
(&(osgi.wiring.package=org.apache.avro.data)(version>=1.7.0)(!(version>=2.0.0)))
+[81.0] osgi.wiring.package;
(&(osgi.wiring.package=org.apache.avro.file)(version>=1.7.0)(!(version>=2.0.0)))
+[81.0] osgi.wiring.package;
(&(osgi.wiring.package=org.apache.avro.generic)(version>=1.7.0)(!(version>=2.0.0)))
+[81.0] osgi.wiring.package;
(&(osgi.wiring.package=org.apache.avro.io)(version>=1.7.0)(!(version>=2.0.0)))
+[81.0] osgi.wiring.package;
(&(osgi.wiring.package=org.apache.avro.reflect)(version>=1.7.0)(!(version>=2.0.0)))
+[81.0] osgi.wiring.package;
(&(osgi.wiring.package=org.apache.avro.specific)(version>=1.7.0)(!(version>=2.0.0)))
+[81.0] osgi.wiring.package;
(&(osgi.wiring.package=org.apache.avro.util)(version>=1.7.0)(!(version>=2.0.0)))
+[81.0] osgi.wiring.package; (osgi.wiring.package=org.apache.velocity)
+[81.0] osgi.wiring.package; (osgi.wiring.package=org.apache.velocity.app)
+[81.0] osgi.wiring.package; (osgi.wiring.package=org.apache.velocity.context)
+[81.0] osgi.wiring.package; (osgi.wiring.package=org.apache.velocity.exception)
+[81.0] osgi.wiring.package;
(&(osgi.wiring.package=org.jboss.netty.bootstrap)(version>=3.4.0)(!(version>=4.0.0)))
+[81.0] osgi.wiring.package;
(&(osgi.wiring.package=org.jboss.netty.buffer)(version>=3.4.0)(!(version>=4.0.0)))
+[81.0] osgi.wiring.package;
(&(osgi.wiring.package=org.jboss.netty.channel)(version>=3.4.0)(!(version>=4.0.0)))
+[81.0] osgi.wiring.package;
(&(osgi.wiring.package=org.jboss.netty.channel.group)(version>=3.4.0)(!(version>=4.0.0)))
+[81.0] osgi.wiring.package;
(&(osgi.wiring.package=org.jboss.netty.channel.socket.nio)(version>=3.4.0)(!(version>=4.0.0)))
+[81.0] osgi.wiring.package;
(&(osgi.wiring.package=org.jboss.netty.handler.codec.frame)(version>=3.4.0)(!(version>=4.0.0)))
+[81.0] osgi.wiring.package;
(&(osgi.wiring.package=org.jboss.netty.handler.codec.oneone)(version>=3.4.0)(!(version>=4.0.0)))
+[81.0] osgi.wiring.package;
(&(osgi.wiring.package=org.jboss.netty.handler.execution)(version>=3.4.0)(!(version>=4.0.0)))
+[81.0] osgi.wiring.package;
(&(osgi.wiring.package=org.mortbay.jetty)(version>=6.1.0)(!(version>=7.0.0)))
+[81.0] osgi.wiring.package;
(&(osgi.wiring.package=org.mortbay.jetty.bio)(version>=6.1.0)(!(version>=7.0.0)))
+[81.0] osgi.wiring.package;
(&(osgi.wiring.package=org.mortbay.jetty.nio)(version>=6.1.0)(!(version>=7.0.0)))
+[81.0] osgi.wiring.package;
(&(osgi.wiring.package=org.mortbay.jetty.servlet)(version>=6.1.0)(!(version>=7.0.0)))
+[81.0] osgi.wiring.package;
(&(osgi.wiring.package=org.mortbay.resource)(version>=6.1.0)(!(version>=7.0.0)))
+</pre><h2 id="Dynamicimport">Dynamic import</h2><p>The
<tt>bundle:dynamic-import</tt> command allows you to enable or disable the
dynamic import of a given bundle:</p><pre>
+karaf@root()> bundle:dynamic-import 77
+Enabling dynamic imports on bundle org.apache.karaf.config.core [77]
+</pre><p>The purpose of dynamic import is to allow a bundle to be wired up to
packages that may not be knwon about in advance.<br/>When a class is requested,
if it cannot be solved via the bundle's existing imports, the dynamic import
allows other<br/>bundles to be considered for a wiring import to be
added.</p><p>The <tt>bundle:dynamic-import</tt> command allows or doesn't allow
this behaviour.</p><h2 id="OSGiframework">OSGi framework</h2><p>The
<tt>system:framework</tt> command allows to display the current OSGi framework
in use, and enable/disable debugging inside the OSGi framework.</p><pre>
+karaf@root()> system:framework
+Current OSGi framework is felix
+karaf@root()> system:framework -debug
+Enabling debug for OSGi framework (felix)
+karaf@root()> system:framework -nodebug
+Disabling debug for OSGi framework (felix)
+</pre><h2 id="Stacktracesprintout">Stack traces printout</h2><p>The
<tt>shell:stack-traces-print</tt> command prints the full stack trace when the
execution of a command<br/>throws an exception.</p><p>You can enable or disable
this behaviour by passing true (to enable) or false (to disable) on the command
on the fly:</p><pre>
+karaf@root()> stack-traces-print
+Printing of stacktraces set to true
+karaf@root()> bundle:start
+java.lang.RuntimeException: Access to system bundle 0 denied. You can override
with -f
+ at
org.apache.karaf.bundle.command.BundlesCommand.assertNoSystemBundles(BundlesCommand.java:57)
+ at
org.apache.karaf.bundle.command.BundlesCommand.doExecute(BundlesCommand.java:48)
+ at
org.apache.karaf.bundle.command.BundlesCommandWithConfirmation.doExecute(BundlesCommandWithConfirmation.java:41)
+ at
org.apache.karaf.shell.console.AbstractAction.execute(AbstractAction.java:33)
+ at
org.apache.karaf.shell.console.OsgiCommandSupport.execute(OsgiCommandSupport.java:39)
+ at
org.apache.karaf.shell.commands.basic.AbstractCommand.execute(AbstractCommand.java:33)
+ at sun.reflect.GeneratedMethodAccessor30.invoke(Unknown Source)
+ at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.lang.reflect.Method.invoke(Method.java:601)
+ at
org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:54)
+ at
org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:119)
+ at
org.apache.karaf.shell.console.commands.$BlueprintCommand14083304.execute(Unknown
Source)
+ at sun.reflect.GeneratedMethodAccessor30.invoke(Unknown Source)
+ at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
+ at java.lang.reflect.Method.invoke(Method.java:601)
+ at
org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:54)
+ at
org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:119)
+ at
org.apache.karaf.shell.console.commands.$BlueprintCommand14083304.execute(Unknown
Source)
+ at
org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:78)
+ at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:477)
+ at
org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:403)
+ at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)
+ at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)
+ at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)
+ at
org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:89)
+ at
org.apache.karaf.shell.console.impl.jline.ConsoleImpl$DelegateSession.execute(ConsoleImpl.java:497)
+ at
org.apache.karaf.shell.console.impl.jline.ConsoleImpl.run(ConsoleImpl.java:198)
+ at java.lang.Thread.run(Thread.java:722)
+ at
org.apache.karaf.shell.console.impl.jline.ConsoleFactoryService$3.doRun(ConsoleFactoryService.java:118)
+ at
org.apache.karaf.shell.console.impl.jline.ConsoleFactoryService$3$1.run(ConsoleFactoryService.java:109)
+ at java.security.AccessController.doPrivileged(Native Method)
+ at org.apache.karaf.jaas.modules.JaasHelper.doAs(JaasHelper.java:47)
+ at
org.apache.karaf.shell.console.impl.jline.ConsoleFactoryService$3.run(ConsoleFactoryService.java:107)
+karaf@root()> stack-traces-print false
+Printing of stacktraces set to false
+karaf@root()> bundle:start
+Error executing command: Access to system bundle 0 denied. You can override
with -f
+</pre><h2 id="Bundletree">Bundle tree</h2><p>The <tt>bundle:tree-show</tt>
command shows the bundle dependency tree based on the wiring information of a
given single bundle<br/>ID.</p><pre>
+karaf@root()> bundle:tree-show 40
+Bundle org.ops4j.pax.url.wrap [40] is currently ACTIVE
+
+org.ops4j.pax.url.wrap [40]
++- org.ops4j.base.util.property [14]
++- org.ops4j.pax.url.commons [49]
+| +- org.ops4j.base.util.property [14]
+| +- org.ops4j.pax.logging.pax-logging-api [23]
+| +- org.ops4j.pax.swissbox.property [31]
+| | +- org.ops4j.base.util.property [14]
+| | +- org.ops4j.base.lang [41]
+| +- org.apache.felix.configadmin [43]
+| | +- org.ops4j.pax.logging.pax-logging-api [23]
+| +- org.ops4j.base.lang [41]
++- org.ops4j.pax.logging.pax-logging-api [23]
++- org.ops4j.pax.swissbox.bnd [25]
+| +- biz.aQute.bndlib [30]
+| | +- org.apache.servicemix.bundles.junit [36]
+| +- org.ops4j.pax.logging.pax-logging-api [23]
+| +- org.ops4j.base.lang [41]
++- org.apache.felix.configadmin [43]
++- org.ops4j.base.net [29]
+| +- org.ops4j.base.monitors [37]
+| +- org.ops4j.base.lang [41]
++- org.ops4j.base.lang [41]
+</pre><h2 id="Watch">Watch</h2><p>The <tt>bundle:watch</tt> command enables
watching the local Maven repository for updates on bundles.<br/>If the bundle
file changes on the Maven repository, Apache Karaf will automatically update
the bundle.</p><p>The <tt>bundle:watch</tt> allows you to configure a set of
URLs to monitore. All bundles bundles whose location matches the<br/>given URL
will be automatically updated. It avoids needing to manually update the bundles
or even copy the bundle to the<br/>system folder.</p><div class="warning"
style="border: 1px solid #c00;background-color: #fcc;margin: 20px;padding: 0px
6px 0px 6px;"><p>Only Maven based URLs and Maven SNAPSHOTs will actually be
updated automatically.</p></div><p>The following command:</p><pre>
+karaf@root> dev:watch *
+</pre><p>will monitor all bundles that have a location matching mvn:* and
'-SNAPSHOT' in their URL.</p>
+ </div>
+
+ </div>
+ <div id="siteFooter">
+ © 2008-2014 The Apache Software Foundation - <a
href="http://servicemix.apache.org/site/privacy-policy.html">Privacy Policy</a>
+ <br/>
+ Apache ServiceMix, ServiceMix, Apache, the Apache feather logo, and the
Apache ServiceMix project logo are trademarks of The Apache Software Foundation.
+ </div>
+ </div>
+</body>
+</html>
\ No newline at end of file
Added: servicemix/site/production/docs/7.x/developers-guide/extending.html
URL:
http://svn.apache.org/viewvc/servicemix/site/production/docs/7.x/developers-guide/extending.html?rev=1730121&view=auto
==============================================================================
--- servicemix/site/production/docs/7.x/developers-guide/extending.html (added)
+++ servicemix/site/production/docs/7.x/developers-guide/extending.html Fri Feb
12 21:55:15 2016
@@ -0,0 +1,305 @@
+
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Apache ServiceMix Documentation - </title>
+
+ <link href="../theme/master.css" rel="stylesheet" type="text/css" />
+ <link href="../theme/pygmentize.css" rel="stylesheet" type="text/css" />
+
+ <script type="text/javascript" src="../scripts/jquery.js"></script>
+ <script type="text/javascript" src="../scripts/jquery.cookie.js"></script>
+ <script type="text/javascript" src="../scripts/jquery.jstree.js"></script>
+
+ <script>
+ $(document).ready(function(){
+ $("#nav").jstree({
+ "themes": {
+ "theme": "apple", "dots": false
+ },
+ "plugins" : [ "themes", "html_data", "cookies", "themes" ]
+ });
+ });
+ </script>
+ <script type="text/javascript">
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-398545-1']);
+ _gaq.push(['_trackPageview']);
+
+ (function() {
+ var ga = document.createElement('script'); ga.type = 'text/javascript';
ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
+ })();
+ </script>
+</head>
+<body>
+ <div id="page">
+ <div id="siteHeader">
+ <table width="100%">
+ <tr valign="middle">
+ <td align="left">
+ <a href="http://servicemix.apache.org/" title="An open source ESB">
+ <img border="0" src="../images/logodesign.png" height="80"/><img
border="0" height="80" src="../images/new-logo.png" />
+ </a>
+ </td>
+ <td align="right">
+ <a href="http://www.apache.org/" title="The Apache Sofware
Foundation">
+ <img border="0" height="60" src="../images/ASF-logo.png">
+ </a>
+ <ul class="siteNav">
+ <li><a href="../index.html" title="Overview">Guides
Overview</a></li>
+ <li><a href="../contribute.html"
title="Contributing?">Contributing?</a></li>
+ <li>
+ <form action="http://www.google.com/search" method="get"
style="font-size: 10px;">
+ <input name="ie" type="hidden" value="UTF-8"></input>
+ <input name="oe" type="hidden" value="UTF-8"></input>
+ <input maxlength="255" name="q" size="15" type="text"
value=""></input>
+ <input name="btnG" type="submit" value="Search"></input>
+ <input name="domains" type="hidden"
value="servicemix.apache.org/docs/4.4.x"></input>
+ <input name="sitesearch" type="hidden"
value="servicemix.apache.org/docs/4.4.x"></input>
+ </form>
+ </li>
+ </ul>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <div id="content">
+ <div id="nav">
+ <ul>
+ <li id="karaf-developers-guide">
+ <a href="#">Developer's Guide</a>
+ <ul>
+ <li id="extending-console">
+ <a href="extending-console.html">Extending Console</a>
+ </li>
+ <li id="writing-tests">
+ <a href="writing-tests.html">Tests with Pax Exam</a>
+ </li>
+ <li id="debugging">
+ <a href="debugging.html">Debug Karaf</a>
+ </li>
+ <li id="creating-bundles">
+ <a href="creating-bundles.html">Creating bundles</a>
+ </li>
+ <li id="connect-console">
+ <a href="connect-console.html">Connect to the console</a>
+ </li>
+ <li id="shell-syntax">
+ <a href="shell-syntax.html">Console shell syntax</a>
+ </li>
+ </ul>
+ </li>
+</ul>
+ </div>
+ <div id="body">
+ <h1 id="Extending">Extending</h1><p>Apache Karaf
is a very flexible container that you can extend very easily.</p><h2
id="Console">Console</h2><p>In this section, you will see how to extend the
console by adding your own command.</p><p>We will leverage Apache Maven to
create and build the OSGi bundle.<br/>This OSGi bundle will use Blueprint. We
don't cover the details of OSGi bundle and Blueprint, see the
specific<br/>sections for details.</p><h3 id="CreatetheMavenproject">Create the
Maven project</h3><p>To create the Maven project, we can:</p><ul><li><p>use a
Maven archetype</p></li><li><p>create by hand</p></li></ul><h4
id="Usingarchetype">Using archetype</h4><p>The Maven Quickstart archetype can
create an empty Maven project where you can put your project
definition.</p><p>You can directly use:</p><pre>
+mvn archetype:create \
+ -DarchetypeArtifactId=maven-archetype-quickstart \
+ -DgroupId=org.apache.karaf.shell.samples \
+ -DartifactId=shell-sample-commands \
+ -Dversion=1.0-SNAPSHOT
+</pre><p>It results to a ready to use project, including a
<tt>pom.xml</tt>.</p><p>You can also use Maven archetype in interactive mode.
You will have to answer to some questions used to generate<br/>the project with
the <tt>pom.xml</tt>:</p><pre>
+mvn archetype:generate
+Choose a number: (1/2/3/4/5/6/7/.../32/33/34/35/36) 15: : 15
+Define value for groupId: : org.apache.karaf.shell.samples
+Define value for artifactId: : shell-sample-commands
+Define value for version: 1.0-SNAPSHOT: :
+Define value for package: : org.apache.karaf.shell.samples
+</pre><h3 id="Byhand">By hand</h3><p>Alternatively, you can simply create the
directory <tt>shell-sample-commands</tt> and create the <tt>pom.xml</tt> file
inside it:</p><pre>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.karaf.shell.samples</groupId>
+ <artifactId>shell-sample-commands<artifactId>
+ <packaging>bundle</packaging>
+ <version>1.0-SNAPSHOT</version>
+ <name>shell-sample-commmands</name>
+
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.karaf.shell</groupId>
+ <artifactId>org.apache.karaf.shell.console</artifactId>
+ <version>4.0.0</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <version>2.5.4</version>
+ <configuration>
+ <instructions>
+ <Import-Package>
+ org.apache.felix.service.command,
+ org.apache.karaf.shell.commands,
+ org.apache.karaf.shell.console,
+ *
+ </Import-Package>
+ </instructions>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
+</pre><h3 id="ConfiguringforJava67">Configuring for Java 6/7</h3><p>We are
using annotations to define commands, so we need to ensure Maven will actually
use JDK 1.6 or 1.7 to compile the jar.<br/>Just add the following snippet after
the <tt>dependencies</tt> section.</p><pre>
+<build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <target>1.6</target>
+ <source>1.6</source>
+ </configuration>
+ </plugin>
+ </plugins>
+</build>
+</pre><h3 id="LoadingtheprojectinyourIDE">Loading the project in your
IDE</h3><p>We can use Maven to generate the needed files for your
IDE:</p><p>Inside the project, run the following command</p><pre>
+mvn eclipse:eclipse
+</pre><p>or</p><pre>
+mvn idea:idea
+</pre><p>The project files for your IDE should now be created. Just open the
IDE and load the project.</p><h3 id="Creatingabasiccommandclass">Creating a
basic command class</h3><p>We can now create the command class
<tt>HelloShellCommand.java</tt></p><pre>
+package org.apache.karaf.shell.samples;
+
+import org.apache.karaf.shell.api.action.Action;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+
+@Command(scope = "test", name = "hello", description="Says hello")
+@Service
+public class HelloShellCommand implements Action {
+
+ @Override
+ public Object execute() throws Exception {
+ System.out.println("Executing Hello command");
+ return null;
+ }
+}
+</pre><h3 id="Manifest">Manifest</h3><p>In order for Karaf to find your
command, you need to add the <tt>Karaf-Commands=*</tt> manifest
header.</p><p>This is usually done by modifying the maven bundle plugin
configuration</p><pre>
+<plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <configuration>
+ <instructions>
+ <Karaf-Commands>*</Karaf-Commands>
+ </instructions>
+ </configuration>
+</plugin>
+</pre><h3 id="Compile">Compile</h3><p>Let's try to build the jar. Remove the
test classes and sample classes if you used the artifact, then from the command
line, run:</p><pre>
+mvn install
+</pre><p>The end of the maven output should look like:</p><pre>
+[INFO] ------------------------------------------------------------------------
+[INFO] BUILD SUCCESSFUL
+[INFO] ------------------------------------------------------------------------
+</pre><h3 id="Test">Test</h3><p>Launch Apache Karaf and install your
bundle:</p><pre>
+karaf@root()> bundle:install -s
mvn:org.apache.karaf.shell.samples/shell-sample-commands/1.0-SNAPSHOT
+</pre><p>Let's try running the command:</p><pre>
+karaf@root()> test:hello
+Executing Hello command
+</pre><h3 id="Commandcompleter">Command completer</h3><p>A completer allows
you to automatically complete a command argument using <tab>. A completer is
simply a bean which is<br/>injected to a command.</p><p>Of course to be able to
complete it, the command should require an argument.</p><h3
id="Commandargument">Command argument</h3><p>We add an argument to the
HelloCommand:</p><pre>
+package org.apache.karaf.shell.samples;
+
+import org.apache.karaf.shell.api.action.Action;
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.Completion;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+
+@Command(scope = "test", name = "hello", description="Says hello")
+@Service
+public class HelloShellCommand implements Action {
+
+ @Argument(index = 0, name = "name", description = "The name that sends the
greet.", required = true, multiValued = false)
+ @Completion(SimpleNameCompleter.class)
+ String name = null;
+
+ @Override
+ public Object execute() throws Exception {
+ System.out.println("Hello " + name);
+ return null;
+ }
+}
+</pre><h3 id="Completerbean">Completer bean</h3><p>A completer is a bean which
implements the Completer interface:</p><pre>
+package org.apache.karaf.shell.samples;
+
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.apache.karaf.shell.api.console.CommandLine;
+import org.apache.karaf.shell.api.console.Completer;
+import org.apache.karaf.shell.api.console.Session;
+import org.apache.karaf.shell.support.completers.StringsCompleter;
+
+/**
+ * <p>
+ * A very simple completer.
+ * </p>
+ */
+@Service
+public class SimpleNameCompleter implements Completer {
+
+ public int complete(Session session, CommandLine commandLine,
List<String> candidates) {
+ StringsCompleter delegate = new StringsCompleter();
+ delegate.getStrings().add("Mike");
+ delegate.getStrings().add("Eric");
+ delegate.getStrings().add("Jenny");
+ return delegate.complete(buffer, cursor, candidates);
+ }
+
+}
+</pre><h3 id="Completersforoptionvalues">Completers for option
values</h3><p>Quite often your commands will not have just arguments, but also
options. You can provide completers for option values.<br/>The snippet below
shows the HelloShellCommand with an option to specify what the greet message
will be.</p><pre>
+package org.apache.karaf.shell.samples;
+
+import org.apache.karaf.shell.api.action.Action;
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.Completion;
+import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+
+@Command(scope = "test", name = "hello", description="Says hello")
+@Service
+public class HelloShellCommand implements Action {
+
+ @Argument(index = 0, name = "name", description = "The name that sends the
greet.", required = true, multiValued = false)
+ @Completion(SimpleNameCompleter.class)
+ String name = null;
+
+ @Option(name = "-g", aliases = "--greet", description = "The configuration
pid", required = false, multiValued = false)
+ @Completion(GreetCompleter.class)
+ String greet = "Hello;
+
+ @Override
+ public Object execute() throws Exception {
+ System.out.println(greet + " " + name);
+ return null;
+ }
+}
+</pre><h3 id="Completerswithstate">Completers with state</h3><p>Some times we
want to tune the behavior of the completer depending on the commands already
executed, in the current shell<br/>or even the rest of the arguments that have
been already passed to the command. Such example is the
config:set-property<br/>command which will provide auto completion for only for
the properties of the pid specified by a previously issued
config:edit<br/>command or by the option --pid.</p><p>The Session object
provides map like methods for storing key/value pairs and can be used to
put/get the state.<br/>The pre-parsed CommandLine objects allows you to check
the previous arguments and options on the command line and to fine tune<br/>the
behavior of the Completer.<br/>Those two objects are given to the Completer
when calling the <tt>complete</tt> method.</p><h3 id="Test2">Test</h3><p>Launch
a Karaf instance and run the following command to install the newly created
bundle:</p><pre>
+karaf@root()> bundle:install -s
mvn:org.apache.karaf.shell.samples/shell-sample-commands/1.0-SNAPSHOT
+</pre><p>Let's try running the command:</p><pre>
+karaf@root> test:hello <tab>
+ one two three
+</pre><h2 id="WebConsole">WebConsole</h2><p>You can also extend the Apache
Karaf WebConsole by providing and installing a webconsole plugin.</p><p>A
plugin is an OSGi bundle that register a Servlet as an OSGi service with some
webconsole properties.</p>
+ </div>
+
+ </div>
+ <div id="siteFooter">
+ © 2008-2014 The Apache Software Foundation - <a
href="http://servicemix.apache.org/site/privacy-policy.html">Privacy Policy</a>
+ <br/>
+ Apache ServiceMix, ServiceMix, Apache, the Apache feather logo, and the
Apache ServiceMix project logo are trademarks of The Apache Software Foundation.
+ </div>
+ </div>
+</body>
+</html>
\ No newline at end of file
Added:
servicemix/site/production/docs/7.x/developers-guide/github-contributions.html
URL:
http://svn.apache.org/viewvc/servicemix/site/production/docs/7.x/developers-guide/github-contributions.html?rev=1730121&view=auto
==============================================================================
---
servicemix/site/production/docs/7.x/developers-guide/github-contributions.html
(added)
+++
servicemix/site/production/docs/7.x/developers-guide/github-contributions.html
Fri Feb 12 21:55:15 2016
@@ -0,0 +1,142 @@
+
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Apache ServiceMix Documentation - </title>
+
+ <link href="../theme/master.css" rel="stylesheet" type="text/css" />
+ <link href="../theme/pygmentize.css" rel="stylesheet" type="text/css" />
+
+ <script type="text/javascript" src="../scripts/jquery.js"></script>
+ <script type="text/javascript" src="../scripts/jquery.cookie.js"></script>
+ <script type="text/javascript" src="../scripts/jquery.jstree.js"></script>
+
+ <script>
+ $(document).ready(function(){
+ $("#nav").jstree({
+ "themes": {
+ "theme": "apple", "dots": false
+ },
+ "plugins" : [ "themes", "html_data", "cookies", "themes" ]
+ });
+ });
+ </script>
+ <script type="text/javascript">
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-398545-1']);
+ _gaq.push(['_trackPageview']);
+
+ (function() {
+ var ga = document.createElement('script'); ga.type = 'text/javascript';
ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
+ })();
+ </script>
+</head>
+<body>
+ <div id="page">
+ <div id="siteHeader">
+ <table width="100%">
+ <tr valign="middle">
+ <td align="left">
+ <a href="http://servicemix.apache.org/" title="An open source ESB">
+ <img border="0" src="../images/logodesign.png" height="80"/><img
border="0" height="80" src="../images/new-logo.png" />
+ </a>
+ </td>
+ <td align="right">
+ <a href="http://www.apache.org/" title="The Apache Sofware
Foundation">
+ <img border="0" height="60" src="../images/ASF-logo.png">
+ </a>
+ <ul class="siteNav">
+ <li><a href="../index.html" title="Overview">Guides
Overview</a></li>
+ <li><a href="../contribute.html"
title="Contributing?">Contributing?</a></li>
+ <li>
+ <form action="http://www.google.com/search" method="get"
style="font-size: 10px;">
+ <input name="ie" type="hidden" value="UTF-8"></input>
+ <input name="oe" type="hidden" value="UTF-8"></input>
+ <input maxlength="255" name="q" size="15" type="text"
value=""></input>
+ <input name="btnG" type="submit" value="Search"></input>
+ <input name="domains" type="hidden"
value="servicemix.apache.org/docs/4.4.x"></input>
+ <input name="sitesearch" type="hidden"
value="servicemix.apache.org/docs/4.4.x"></input>
+ </form>
+ </li>
+ </ul>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <div id="content">
+ <div id="nav">
+ <ul>
+ <li id="karaf-developers-guide">
+ <a href="#">Developer's Guide</a>
+ <ul>
+ <li id="extending-console">
+ <a href="extending-console.html">Extending Console</a>
+ </li>
+ <li id="writing-tests">
+ <a href="writing-tests.html">Tests with Pax Exam</a>
+ </li>
+ <li id="debugging">
+ <a href="debugging.html">Debug Karaf</a>
+ </li>
+ <li id="creating-bundles">
+ <a href="creating-bundles.html">Creating bundles</a>
+ </li>
+ <li id="connect-console">
+ <a href="connect-console.html">Connect to the console</a>
+ </li>
+ <li id="shell-syntax">
+ <a href="shell-syntax.html">Console shell syntax</a>
+ </li>
+ </ul>
+ </li>
+</ul>
+ </div>
+ <div id="body">
+ <h1 id="GithubContributions">Github
Contributions</h1><p>Some people prefer to make contributions to karaf source
via github. If you are one of them, this is for you!</p><h2
id="Introduction">Introduction</h2><p>Apache Karaf is available as a
periodically replicated mirror on: <a
href="https://github.com/apache/karaf">https://github.com/apache/karaf</a>
</p><h2 id="SuggestedWorkflow">Suggested Workflow</h2><ol><li><p>make a fork of
karaf repo github mirror</p></li><li><p>do all your new work on your own karaf
fork</p></li><li><p>when ready, file a jira issue <a
href="https://issues.apache.org/jira/browse/KARAF">https://issues.apache.org/jira/browse/KARAF</a>,
attach the link to your github pull request, and ask for a
review</p></li><li><p>one of karaf committers will discuss your pull request on
github; and at some point your pull request will be accepted
</p></li><li><p>when your pull request is accepted, squash it into a single
commit and attach singl
e patch file to the original jira, with ASF grant check box selected
</p></li><li><p>now pray to your favorite ASF committer to really accept the
patch :-)</p></li><li><p>when your patch is committed to the svn, and you can
verify it in the latest karaf snapshot, close your pull request on github
</p></li></ol><h2 id="LicenseReminder">License Reminder</h2><p>in order for
your contributions to be accepted:</p><ul><li><p>all files must contain ASL
license grant header</p></li></ul><ul><li><p>you must select ASF grant check
box when attaching patch to the jira</p></li></ul><h2
id="HowtoGenerateaOneFilePatchViaThrowAwayBranch">How to Generate a
One-File-Patch Via Throw-Away Branch</h2><p>here is one way to generate squash
of your commits:</p><p><a
href="http://stackoverflow.com/questions/616556/how-do-you-squash-commits-into-one-patch-with-git-format-patch">http://stackoverflow.com/questions/616556/how-do-you-squash-commits-into-one-patch-with-git-format-patch</a></p><pre>
+
+#
+# 'archon' referers to karaf mirror
+# 'origin' referers to your own fork
+#
+
+# attach karaf mirror as remote, if not done yet
+git remote add archon https://github.com/apache/karaf
+
+# fetch latest karaf mirror
+git fetch archon
+
+# ensure you are on your fork trunk
+git checkout origin/trunk
+
+# kill previous patch delivery, if you had one
+git branch -D delivery
+
+# make new delivery throw-away branch, based on latest karaf mirror
+git branch delivery archon/trunk
+
+# use it
+git checkout delivery
+
+# squash all your local development into a single commit
+git merge --squash trunk
+
+# commit it to the delivery branch
+git commit -m "delivery"
+
+# generate a patch file against the mirror
+git format-patch archon/trunk
+
+</pre><p>root of your karaf source now contains a file named
"0001-delivery.patch.txt" (please attach the .txt ending;this will allow
commiters to open your patch directly in the browser and give it a short look
there) which you should attach to your karaf jira, and ask to commit to the svn
trunk</p>
+ </div>
+
+ </div>
+ <div id="siteFooter">
+ © 2008-2014 The Apache Software Foundation - <a
href="http://servicemix.apache.org/site/privacy-policy.html">Privacy Policy</a>
+ <br/>
+ Apache ServiceMix, ServiceMix, Apache, the Apache feather logo, and the
Apache ServiceMix project logo are trademarks of The Apache Software Foundation.
+ </div>
+ </div>
+</body>
+</html>
\ No newline at end of file
Added:
servicemix/site/production/docs/7.x/developers-guide/karaf-maven-plugin.html
URL:
http://svn.apache.org/viewvc/servicemix/site/production/docs/7.x/developers-guide/karaf-maven-plugin.html?rev=1730121&view=auto
==============================================================================
---
servicemix/site/production/docs/7.x/developers-guide/karaf-maven-plugin.html
(added)
+++
servicemix/site/production/docs/7.x/developers-guide/karaf-maven-plugin.html
Fri Feb 12 21:55:15 2016
@@ -0,0 +1,129 @@
+
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Apache ServiceMix Documentation - </title>
+
+ <link href="../theme/master.css" rel="stylesheet" type="text/css" />
+ <link href="../theme/pygmentize.css" rel="stylesheet" type="text/css" />
+
+ <script type="text/javascript" src="../scripts/jquery.js"></script>
+ <script type="text/javascript" src="../scripts/jquery.cookie.js"></script>
+ <script type="text/javascript" src="../scripts/jquery.jstree.js"></script>
+
+ <script>
+ $(document).ready(function(){
+ $("#nav").jstree({
+ "themes": {
+ "theme": "apple", "dots": false
+ },
+ "plugins" : [ "themes", "html_data", "cookies", "themes" ]
+ });
+ });
+ </script>
+ <script type="text/javascript">
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-398545-1']);
+ _gaq.push(['_trackPageview']);
+
+ (function() {
+ var ga = document.createElement('script'); ga.type = 'text/javascript';
ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
+ })();
+ </script>
+</head>
+<body>
+ <div id="page">
+ <div id="siteHeader">
+ <table width="100%">
+ <tr valign="middle">
+ <td align="left">
+ <a href="http://servicemix.apache.org/" title="An open source ESB">
+ <img border="0" src="../images/logodesign.png" height="80"/><img
border="0" height="80" src="../images/new-logo.png" />
+ </a>
+ </td>
+ <td align="right">
+ <a href="http://www.apache.org/" title="The Apache Sofware
Foundation">
+ <img border="0" height="60" src="../images/ASF-logo.png">
+ </a>
+ <ul class="siteNav">
+ <li><a href="../index.html" title="Overview">Guides
Overview</a></li>
+ <li><a href="../contribute.html"
title="Contributing?">Contributing?</a></li>
+ <li>
+ <form action="http://www.google.com/search" method="get"
style="font-size: 10px;">
+ <input name="ie" type="hidden" value="UTF-8"></input>
+ <input name="oe" type="hidden" value="UTF-8"></input>
+ <input maxlength="255" name="q" size="15" type="text"
value=""></input>
+ <input name="btnG" type="submit" value="Search"></input>
+ <input name="domains" type="hidden"
value="servicemix.apache.org/docs/4.4.x"></input>
+ <input name="sitesearch" type="hidden"
value="servicemix.apache.org/docs/4.4.x"></input>
+ </form>
+ </li>
+ </ul>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <div id="content">
+ <div id="nav">
+ <ul>
+ <li id="karaf-developers-guide">
+ <a href="#">Developer's Guide</a>
+ <ul>
+ <li id="extending-console">
+ <a href="extending-console.html">Extending Console</a>
+ </li>
+ <li id="writing-tests">
+ <a href="writing-tests.html">Tests with Pax Exam</a>
+ </li>
+ <li id="debugging">
+ <a href="debugging.html">Debug Karaf</a>
+ </li>
+ <li id="creating-bundles">
+ <a href="creating-bundles.html">Creating bundles</a>
+ </li>
+ <li id="connect-console">
+ <a href="connect-console.html">Connect to the console</a>
+ </li>
+ <li id="shell-syntax">
+ <a href="shell-syntax.html">Console shell syntax</a>
+ </li>
+ </ul>
+ </li>
+</ul>
+ </div>
+ <div id="body">
+ <h1 id="Usingthekarafmavenplugin">Using the
karaf-maven-plugin</h1><p>The Karaf Maven plugin allows you:</p><p> * to
work with Karaf features: validate a features descriptor, add features bundle
into a repository, create a KAR archive from a features descriptor, etc.<br/>
* to create Karaf commands help: it generates help from Karaf commands<br/>
* to modify Karaf instances and create distributions</p><h2
id="Packagings">Packagings</h2><p>The most generally useful features of the
karaf-maven-plugin are exposed as packagings. To use the packagings the pom or
an ancestor must configure the karaf-maven-plugin with extensions:</p><pre>
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.karaf.tooling</groupId>
+ <artifactId>karaf-maven-plugin</artifactId>
+ <version>4.0.0</version>
+ <extensions>true</extensions>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.karaf.tooling</groupId>
+ <artifactId>karaf-maven-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+</pre><p>Then specify the packaging in your project as usual, e.g.</p><pre>
+ <packaging>kar</packaging>
+</pre><div class="table-wrap"><table class="confluenceTable"><tr><th
class="confluenceTh"> Packaging </th><th class="confluenceTh"> Description
</th></tr><tr><td class="confluenceTd"> feature </td><td class="confluenceTd">
The feature packaging generates a features.xml descriptor using the <tt><a
href="karaf-maven-plugin-features-generate-descriptor.html">karaf:features-generate-descriptor</a></tt>
</td></tr><tr><td class="confluenceTd"> kar </td><td class="confluenceTd"> The
kar packaging generates a features.xml descriptor using the <tt><a
href="karaf-maven-plugin-features-generate-descriptor.html">karaf:features-generate-descriptor</a></tt>
and then packages a kar using the <tt><a
href="karaf-maven-plugin-features-create-kar.html">karaf:features-create-kar</a></tt>
</td></tr><tr><td class="confluenceTd"> <tt><a
href="custom-distribution.html">karaf-assembly</a></tt> </td><td
class="confluenceTd"> Assembles a Karaf server based on the features
descriptors and kar files listed as M
aven dependencies. </td></tr></table></div><h2 id="Commandsgoals">Commands
goals</h2><p>The <tt>karaf-maven-plugin</tt> is able to generate documentation
for Karaf commands:</p><div class="table-wrap"><table
class="confluenceTable"><tr><th class="confluenceTh"> Goal </th><th
class="confluenceTh"> Description </th></tr><tr><td class="confluenceTd">
<tt><a
href="karaf-maven-plugin-commands-generate-help.html">karaf:commands-generate-help</a></tt>
</td><td class="confluenceTd"> Generates help for Karaf commands.
</td></tr></table></div><h2 id="Featuresgoals">Features goals</h2><p>Normally
you should use the features or kar packagings instead of these individual
goals.<br/>The <tt>karaf-maven-plugin</tt> provides several goals to help you
create and validate features XML descriptors as well as leverage your features
to create a custom Karaf distribution.</p><div class="table-wrap"><table
class="confluenceTable"><tr><th class="confluenceTh"> Goal </th><th
class="confluenceTh"> Descriptio
n </th></tr><tr><td class="confluenceTd"> <tt><a
href="karaf-maven-plugin-features-generate-descriptor.html">karaf:features-generate-descriptor</a></tt>
</td><td class="confluenceTd"> Generates a features XML descriptor for a set
of bundles. Used in feature and kar packagings. </td></tr><tr><td
class="confluenceTd"> <tt><a
href="karaf-maven-plugin-features-validate-descriptor.html">karaf:features-validate-descriptor</a></tt>
</td><td class="confluenceTd"> Validate a features XML descriptor by checking
if all the required imports can be matched to exports </td></tr><tr><td
class="confluenceTd"> <tt><a
href="karaf-maven-plugin-features-create-kar.html">karaf:kar</a></tt> </td><td
class="confluenceTd"> Assemble a KAR archive from a features XML descriptor.
Used in kar packaging.</td></tr></table></div><h2
id="Instancesanddistributionsgoals">Instances and distributions
goals</h2><p>Normally you should use the karaf-assembly packaging instead of
this individual goal.<br/>The <tt>karaf-m
aven-plugin</tt> helps you to build custom Karaf distributions or archives
existing Karaf instances:</p><div class="table-wrap"><table
class="confluenceTable"><tr><th class="confluenceTh"> Goal </th><th
class="confluenceTh"> Description </th></tr><tr><td class="confluenceTd">
<tt>karaf:assembly</tt> </td><td class="confluenceTd"> Assemble a server from
Maven feature-repo and kar dependencies. Used in karaf-assembly packaging. See
<tt><a href="custom-distribution.html">karaf-assembly</a></tt>.
</td></tr><tr><td class="confluenceTd"> <tt><a
href="karaf-maven-plugin-instance-create-archive.html">karaf:archive</a></tt>
</td><td class="confluenceTd"> Package a server archive from an assembled
server. . Used in karaf-assembly packaging. See also <tt><a
href="custom-distribution.html">karaf-assembly</a></tt>.</td></tr><tr><td
class="confluenceTd"> <tt><a
href="karaf-maven-plugin-features-add-to-repository.html">karaf:features-add-to-repository</a></tt>
</td><td class="confluenceTd"> (old
style manual assemblies) Copies all the bundles required for a given set of
features into a directory <br/> (e.g. for creating your own Karaf-based
distribution) </td></tr></table></div>
+ </div>
+
+ </div>
+ <div id="siteFooter">
+ © 2008-2014 The Apache Software Foundation - <a
href="http://servicemix.apache.org/site/privacy-policy.html">Privacy Policy</a>
+ <br/>
+ Apache ServiceMix, ServiceMix, Apache, the Apache feather logo, and the
Apache ServiceMix project logo are trademarks of The Apache Software Foundation.
+ </div>
+ </div>
+</body>
+</html>
\ No newline at end of file
Added: servicemix/site/production/docs/7.x/developers-guide/services.html
URL:
http://svn.apache.org/viewvc/servicemix/site/production/docs/7.x/developers-guide/services.html?rev=1730121&view=auto
==============================================================================
--- servicemix/site/production/docs/7.x/developers-guide/services.html (added)
+++ servicemix/site/production/docs/7.x/developers-guide/services.html Fri Feb
12 21:55:15 2016
@@ -0,0 +1,108 @@
+
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Apache ServiceMix Documentation - </title>
+
+ <link href="../theme/master.css" rel="stylesheet" type="text/css" />
+ <link href="../theme/pygmentize.css" rel="stylesheet" type="text/css" />
+
+ <script type="text/javascript" src="../scripts/jquery.js"></script>
+ <script type="text/javascript" src="../scripts/jquery.cookie.js"></script>
+ <script type="text/javascript" src="../scripts/jquery.jstree.js"></script>
+
+ <script>
+ $(document).ready(function(){
+ $("#nav").jstree({
+ "themes": {
+ "theme": "apple", "dots": false
+ },
+ "plugins" : [ "themes", "html_data", "cookies", "themes" ]
+ });
+ });
+ </script>
+ <script type="text/javascript">
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-398545-1']);
+ _gaq.push(['_trackPageview']);
+
+ (function() {
+ var ga = document.createElement('script'); ga.type = 'text/javascript';
ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
+ })();
+ </script>
+</head>
+<body>
+ <div id="page">
+ <div id="siteHeader">
+ <table width="100%">
+ <tr valign="middle">
+ <td align="left">
+ <a href="http://servicemix.apache.org/" title="An open source ESB">
+ <img border="0" src="../images/logodesign.png" height="80"/><img
border="0" height="80" src="../images/new-logo.png" />
+ </a>
+ </td>
+ <td align="right">
+ <a href="http://www.apache.org/" title="The Apache Sofware
Foundation">
+ <img border="0" height="60" src="../images/ASF-logo.png">
+ </a>
+ <ul class="siteNav">
+ <li><a href="../index.html" title="Overview">Guides
Overview</a></li>
+ <li><a href="../contribute.html"
title="Contributing?">Contributing?</a></li>
+ <li>
+ <form action="http://www.google.com/search" method="get"
style="font-size: 10px;">
+ <input name="ie" type="hidden" value="UTF-8"></input>
+ <input name="oe" type="hidden" value="UTF-8"></input>
+ <input maxlength="255" name="q" size="15" type="text"
value=""></input>
+ <input name="btnG" type="submit" value="Search"></input>
+ <input name="domains" type="hidden"
value="servicemix.apache.org/docs/4.4.x"></input>
+ <input name="sitesearch" type="hidden"
value="servicemix.apache.org/docs/4.4.x"></input>
+ </form>
+ </li>
+ </ul>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <div id="content">
+ <div id="nav">
+ <ul>
+ <li id="karaf-developers-guide">
+ <a href="#">Developer's Guide</a>
+ <ul>
+ <li id="extending-console">
+ <a href="extending-console.html">Extending Console</a>
+ </li>
+ <li id="writing-tests">
+ <a href="writing-tests.html">Tests with Pax Exam</a>
+ </li>
+ <li id="debugging">
+ <a href="debugging.html">Debug Karaf</a>
+ </li>
+ <li id="creating-bundles">
+ <a href="creating-bundles.html">Creating bundles</a>
+ </li>
+ <li id="connect-console">
+ <a href="connect-console.html">Connect to the console</a>
+ </li>
+ <li id="shell-syntax">
+ <a href="shell-syntax.html">Console shell syntax</a>
+ </li>
+ </ul>
+ </li>
+</ul>
+ </div>
+ <div id="body">
+ <h1 id="OSGiservices">OSGi services</h1>
+ </div>
+
+ </div>
+ <div id="siteFooter">
+ © 2008-2014 The Apache Software Foundation - <a
href="http://servicemix.apache.org/site/privacy-policy.html">Privacy Policy</a>
+ <br/>
+ Apache ServiceMix, ServiceMix, Apache, the Apache feather logo, and the
Apache ServiceMix project logo are trademarks of The Apache Software Foundation.
+ </div>
+ </div>
+</body>
+</html>
\ No newline at end of file
Added: servicemix/site/production/docs/7.x/index.html
URL:
http://svn.apache.org/viewvc/servicemix/site/production/docs/7.x/index.html?rev=1730121&view=auto
==============================================================================
--- servicemix/site/production/docs/7.x/index.html (added)
+++ servicemix/site/production/docs/7.x/index.html Fri Feb 12 21:55:15 2016
@@ -0,0 +1,182 @@
+
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Apache ServiceMix Documentation - Home</title>
+
+ <link href="theme/master.css" rel="stylesheet" type="text/css" />
+ <link href="theme/pygmentize.css" rel="stylesheet" type="text/css" />
+ <link href="theme/picker.css" rel="stylesheet" type="text/css" />
+
+ <script type="text/javascript" src="scripts/jquery.js"></script>
+ <script type="text/javascript" src="scripts/jquery.cookie.js"></script>
+ <script type="text/javascript" src="scripts/jquery.jstree.js"></script>
+
+ <script>
+ $(document).ready(function(){
+ $("#nav").jstree({
+ "themes": {
+ "theme": "apple", "dots": false
+ },
+ "plugins" : [ "themes", "html_data", "cookies", "themes" ]
+ });
+ });
+ </script>
+ <script type="text/javascript">
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-398545-1']);
+ _gaq.push(['_trackPageview']);
+
+ (function() {
+ var ga = document.createElement('script'); ga.type = 'text/javascript';
ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
+ })();
+ </script>
+</head>
+<body>
+ <div id="page">
+ <div id="siteHeader">
+ <table width="100%">
+ <tr valign="middle">
+ <td align="left">
+ <a href="http://servicemix.apache.org/" title="An open source ESB">
+ <img border="0" src="images/logodesign.png" height="80"/><img
border="0" height="80" src="images/new-logo.png" />
+ </a>
+ </td>
+ <td align="right">
+ <a href="http://www.apache.org/" title="The Apache Sofware
Foundation">
+ <img border="0" height="60" src="images/ASF-logo.png">
+ </a>
+ <ul class="siteNav">
+ <li><a href="index.html" title="Overview">Guides
Overview</a></li>
+ <li><a href="contribute.html"
title="Contributing?">Contributing?</a></li>
+ <li>
+ <form action="http://www.google.com/search" method="get"
style="font-size: 10px;">
+ <input name="ie" type="hidden" value="UTF-8"></input>
+ <input name="oe" type="hidden" value="UTF-8"></input>
+ <input maxlength="255" name="q" size="15" type="text"
value=""></input>
+ <input name="btnG" type="submit" value="Search"></input>
+ <input name="domains" type="hidden"
value="servicemix.apache.org/docs/4.4.x"></input>
+ <input name="sitesearch" type="hidden"
value="servicemix.apache.org/docs/4.4.x"></input>
+ </form>
+ </li>
+ </ul>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <div id="content">
+
+ <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>
+ <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>
+ <div class="pdf">
+ <a href="camel/camel-guide.pdf" class="pdf">PDF document</a>
+ </div>
+ </div>
+
+<div class="left">
+ <a href="activiti/index.html">
+ <h2>Activiti Guide</h2>
+ </a>
+</div>
+
+<div class="right">
+ <p>Apache ServiceMix embeds Activiti to provide a light-weight workflow and
Business Process Management (BPM) Platform targeted at business people,
developers and system admins, ...</p>
+</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>
+
+ </div>
+ <div id="siteFooter">
+ © 2008-2014 The Apache Software Foundation - <a
href="http://servicemix.apache.org/site/privacy-policy.html">Privacy Policy</a>
+ <br/>
+ Apache ServiceMix, ServiceMix, Apache, the Apache feather logo, and the
Apache ServiceMix project logo are trademarks of The Apache Software Foundation.
+ </div>
+ </div>
+</body>
+</html>
\ No newline at end of file