Hi guys, I worked on several changes on camel-karaf that I would like to propose as PR asap:
Short term (now): 1. Remove platform module to directly use features module I've removed the platform maven module, and moved camel-karaf features directly in a new features module (as we do directly in Karaf). 2. Add whiteboard support in the core The idea is to add CamelContext and Route whiteboard support directly in camel-core-osgi. The core will directly have a whiteboard for CamelContext and RouteBuilder services. It means that the users won't have to create the CamelContext explicitly but just register a CamelContext service. For the RouteBuilder, it's possible to use a single CamelContext for all routes, or to define a CamelContext ID, controlling the routes register in each CamelContext. 3. Extending itests I added a bunch of itests, at least testing camel component features deployment and, when possible, simple test case. Those itests are not executed by default but by a dedicated profile. Mid term (during summer): 4. As already proposed, I created a tool that creates "uber" camel component bundles, using a descriptor. The purpose is to avoid maintenance/creation of camel component features, and use a single classloader for the component in Karaf (that allows us to work with any component, OSGi compliant or not). For licensing reasons, we won't provide directly the binary bundle, but the descriptor of the component that will be created at build time or runtime. For instance, deploying camel-azure-cosmosdb won't require a feature anymore, just: bundle:install bundle:org.apache.camel/camel-azure-cosmosdb/3.16.0?descriptor=http://github.com/apache/camel-karaf/descriptors/camel-azure-cosmosdb.json I'm testing right now if I can use the component pom.xml directly (instead of having a dedicated json file). I'm currently testing the deployment (runtime/buildtime/static). I will provide more details. I will use this approach as replacement of ServiceMix Bundles too. I'm still working on this one, but you have the rough idea. 5. As part of camel-karaf, I will introduce a new tooling named karamel. The purpose is to create Karaf4 (and later Karaf5) runtime with routes easily. Basically, you can do something like: $ karamel build --style k4 myroute1.jar myroute2.xml ... It creates a tar.gz karamel runtime (karaf with camel) ready to run. You can also do: $ karamel image myroute1.jar myroute2.xml ... Then it creates a docker image on the local docker daemon, ready to be run. Thoughts ? If there's no objection, I will move forward on the "short term" tasks. If you have any questions/comments, please let me know. As you can see, we are "restarting" camel-karaf with new cool stuff ;) Thanks, Regards JB