Show Table of Contents
Chapter 10. OSGi Bundle Tutorials
Abstract
This chapter presents tutorials for Apache Camel and Apache CXF applications. Each tutorial describes how to generate, build, run, and deploy an application as an OSGi bundle.
10.1. Generating and Running an EIP Bundle
Overview
This section explains how to generate, build, and run a complete Apache Camel example as an OSGi bundle, where the starting point code is generated with the help of a Maven archetype.
Prerequisites
In order to generate a project using an Red Hat JBoss Fuse Maven archetype, you must have the following prerequisites:
- Maven installation—Maven is a free, open source build tool from Apache. You can download the latest version from http://maven.apache.org/download.html (minimum is 2.0.9).
- Internet connection—whilst performing a build, Maven dynamically searches external repositories and downloads the required artifacts on the fly. In order for this to work, your build machine must be connected to the Internet.
- fusesource Maven repository is configured—in order to locate the archetypes, Maven's
settings.xmlfile must be configured with the location of thefusesourceMaven repository. For details of how to set this up, see the section called “Adding the Red Hat JBoss Fuse repository”.
Generating an EIP bundle
The
servicemix-camel-osgi-bundle archetype creates a router project, which is configured to deploy as a bundle. To generate a Maven project with the coordinates, org.fusesource.example:camel-bundle, enter the following command:
mvn archetype:generate -DarchetypeGroupId=org.apache.servicemix.tooling -DarchetypeArtifactId=servicemix-camel-osgi-bundle -DarchetypeVersion=2013.01.0.redhat-610379 -DgroupId=org.fusesource.example -DartifactId=camel-bundle
The result of this command is a directory,
ProjectDir/camel-bundle, containing the files for the generated bundle project.
Running the EIP bundle
To install and run the generated
camel-bundle project, perform the following steps:
- Build the project—open a command prompt and change directory to
ProjectDir/camel-bundle. Use Maven to build the demonstration by entering the following command:mvn install
If this command runs successfully, theProjectDir/camel-bundle/targetdirectory should contain the bundle file,camel-bundle-1.0-SNAPSHOT.jarand the bundle will also be installed in the local Maven repository. - Install prerequisite features (optional)—by default, the
camel-corefeature and some related features are pre-installed in the OSGi container. But many of the Apache Camel components are not installed by default. To check which features are available and whether or not they are installed, enter the following console command:JBossFuse:karaf@root> features:list
Apache Camel features are identifiable by thecamel-prefix. For example, if one of your routes requires the HTTP component, you can make sure that it is installed in the OSGi container by issuing the following console command:JBossFuse:karaf@root> features:install camel-http
- Install and start the camel-bundle bundle—at the Red Hat JBoss Fuse console, enter the following command to install the bundle from the local Maven repository (see Section A.3, “Mvn URL Handler”):
JBossFuse:karaf@root> osgi:install -s mvn:org.fusesource.example/camel-bundle
After entering this command, you should soon see output like the following being logged to the console screen:>>>> MyTransform set body: Mon Sep 22 11:43:42 BST 2008 >>>> MyTransform set body: Mon Sep 22 11:43:44 BST 2008 >>>> MyTransform set body: Mon Sep 22 11:43:46 BST 2008
NoteOn Windows machines, be careful how you format thefileURL—for details of the syntax understood by thefileURL handler, see Section A.1, “File URL Handler”. - Stop the camel-bundle bundle—to stop the
camel-bundlebundle, you first need to discover the relevant bundle number. To find the bundle number, enter the following console command (this might look a bit confusing, because the text you are typing will intermingle with the output that is being logged to the screen):JBossFuse:karaf@root> osgi:list
At the end of the listing, you should see an entry like the following:[ 189] [Active ] [ ] [ ] [ 60] A Camel OSGi Service Unit (1.0.0.SNAPSHOT)
Where, in this example, the bundle number is 189. To stop this bundle, enter the following console command:JBossFuse:karaf@root> osgi:stop 189

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.