[[UsingOSGiblueprintwithCamel-UsingOSGiblueprintwithCamel]]
=== Using OSGi blueprint with Camel

*Available as of Camel 2.4*

A custom XML namespace for Blueprint has been created to let you
leverage the nice XML dialect. Given Blueprint custom namespaces are not
standardized yet, this namespace can only be used on the
http://incubator.apache.org/aries/[Apache Aries] Blueprint
implementation, which is the one used by http://karaf.apache.org[Apache
Karaf].

[[UsingOSGiblueprintwithCamel-Overview]]
==== Overview

The XML schema is mostly the same as the one for Spring, so all the xml
snippets throughout the documentation referring to Spring XML also apply
to Blueprint routes.

Here is a very simple route definition using blueprint:

[source,xml]
-------------------------------------------------------------------
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">

    <camelContext xmlns="http://camel.apache.org/schema/blueprint">
        <route>
            <from uri="timer:test" />
            <to uri="log:test" />
        </route>
    </camelContext>

</blueprint>
-------------------------------------------------------------------

There are a few limitations at this point about the supported xml
elements (compared to the Spring xml syntax):

* beanPostProcessor are specific to Spring and aren't allowed

However, using blueprint when you deploy your applications in an OSGi
enviroment has several advantages:

* when upgrading to a new camel version, you don't have to change the
namespace, as the correct version will be selected based on the camel
packages that are imported by your bundle
* no startup ordering issue with respect to the custom namespaces and
your bundles
* you can use Blueprint property placeholders, see more at
link:using-propertyplaceholder.html[Using PropertyPlaceholder]

[[UsingOSGiblueprintwithCamel-Usingcamel-blueprint]]
==== Using camel-blueprint

To leverage camel-blueprint in OSGi, you only need the Aries Blueprint
bundle and the camel-blueprint bundle, in addition to camel-core and its
dependencies.

If you use Karaf, you can use the feature named `camel-blueprint` which
will install all the required bundles.
