There are a few different ways to deploy Camel routes on ServiceMix ${servicemix.version}:
* deploy routes in a plain Blueprint XML file
* deploy routes in a plain Spring XML file
* deploy a bundle containing a Blueprint XML file
* deploy a bundle containing a Spring XML file

Camel routes can also be deployed as part of a JBI SA, allowing you use Camel for routing between JBI endpoints - this option will be discussed later when we are talking about using JBI inside ServiceMix 4.

h3. Benefits and drawbacks

h4. Plain XML or OSGi bundles
Choose a plain XML file:
* if you want to get routes deployed as quickly as possible \\ all you need for developing routes is a simple text editor, no compilation, building, ... required at all
* if you prefer the XML syntax over the Java of Scala DSL

Choose an OSGi bundle:
* if you want to package helper classes together with your route definitions
* if you prefer developing routes in the Java or Scala DSL \\ you can package the RouteBuilder implementations inside the bundle

h4. Blueprint or Spring
Choose Blueprint:
* if you want the best possible integration with the OSGi Framework and Service Registy \\ the Blueprint specification has been developed specifically for the OSGi Framework by the OSGi Alliance

Choose Spring:
* if you already invested in Spring for creating and running Camel routes