| = Using OSGi blueprint with Camel |
| :page-source: components/camel-blueprint/src/main/docs/blueprint.adoc |
| |
| 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 Apache Aries Blueprint |
| implementation, which is the one used by Apache Karaf. |
| |
| == 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` and `<export>` are specific to Spring and are not in use |
| |
| However, using Blueprint when you deploy your applications in an OSGi environment 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 |
| |
| |
| == 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-xml and its dependencies. |
| |
| If you use Karaf, you can use the feature named camel-blueprint which will install all the required bundles. |