If you are using camel-cxf endpoint in your OSGi bundle and want to get full of control of CXF component loading. (eg. you just want to use the http jetty transport, soap binding and don't want to load jms transport, jaxrs modules). You may need to tell SpringBusFactory which module should be load, in this way you need to import bunch of cxf packages or using the * on the DynamicImport-Package section of your application's OSGi meta information.
As the CXF bundle have the most cxf configuration file, here is a way to do it by setting the right thread context class loader to load the cxf module configures, without any additional setting.
NOTE, if you have other CXF configuration which want to be load, you need to make sure the thread context class loader can load it.
From Camel 2.2.0, we introduced a SpringBusFactoryBean which leverage the BusApplicationContext will use the BusApplicationContext.class classloader as a fall back classloader, so you can configure the SpringBusFactoryBean and set the bus directly into the camel-cxf endpoint without using any java code. The Spring configuration snippet is below: