Hi,

Yes, in servicemix-camel component, we can use the Spring namespace for
OSGi and non-OSGi environment. That is because ServiceMix take charge of
the Camel Spring handler itself, and the Spring handler of camel-spring
will detect the CamelContextFactoryBean of OSGi (in the camel-osgi
bundle) by using Class.forName() and replace the CamelContextFactoryBean
of Spring with the OSGi one.

But if we deploy a camel context spring configure file into ServiceMix
directly, the Spring handler will be inited by Spring DM first, and the
Class.forName() detection will not work for camel-spring bundle anymore,
since the camel-osgi bundle is not be installed at that time.

Maybe we need to find some other way to accomplish this kind of auto
replacing work.

BTW, I don't if we can achieve this by using Spring java config ?

Willem


James Strachan wrote:
> BTW I remember having a chat with Guillaume a while back and I don't
> think the OSGi namespace in the XML is required any more; I think he
> figured out how to wire in the OSGi injection without having to change
> the XML namespace. Though I've not tested it to be sure though - want
> to give it a try?
> 
> Then in OSGi you add camel-osgi but when not using OSGi you can omit
> this dependency?
> 
> 2009/3/25 Willem Jiang <willem.ji...@gmail.com>:
>> Hi Aaron
>>
>> The CamelContextFactoryBean of OSGi version extends the
>> CamelContextFactoryBean of Spring version. It only add the handle of
>> bundle context injection. For non-OSGi container it will not inject the
>>  bundle context into the OSGi CamelContextFactoryBean, so the OSGi
>> CamelContextFactoryBean will act as Spring CamelContextFactoryBean.
>>
>> The only side effect is you need to add the camel-osgi dependented third
>> party jars into the class path.
>>
>> Willem
>>
>> Aaron Crickenberger wrote:
>>> I have the following XML I'd like to deploy both in an OSGi container, and a
>>> non-OSGi container.  To deploy in the OSGi container, I have to use the
>>> "osgi" schema so that the "quartz" component is resolved to the camel-quartz
>>> bundle.
>>>
>>> To deploy in a non-OSGi container, I had to add spring-osgi-core-1.1.2.jar
>>> and org.osg.core-1.2.0.jar to the classpath.  It appears to be working, but
>>> I wanted to double-check with the experts.  Can you think of any
>>> side-effects I might see from deploying this way vs. deploying w/ the "
>>> http://activemq.apache.org/camel/schema/spring"; schema?
>>>
>>> <beans xmlns="http://www.springframework.org/schema/beans";
>>>        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>>        xmlns:camel="http://activemq.apache.org/camel/schema/spring";
>>>        xsi:schemaLocation="
>>>        http://www.springframework.org/schema/beans
>>> http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
>>>        http://activemq.apache.org/camel/schema/spring
>>> http://activemq.apache.org/camel/schema/spring/camel-spring.xsd
>>>        http://activemq.apache.org/camel/schema/osgi
>>> http://activemq.apache.org/camel/schema/osgi/camel-osgi.xsd";>
>>>
>>>   <camelContext xmlns="http://activemq.apache.org/camel/schema/osgi";>
>>>     <camel:route>
>>>       <camel:from uri="quartz://groupName/timerName/0,15,30,45/*/*/*/*/$" />
>>>       <camel:to uri="log:ExampleRouter"/>
>>>     </camel:route>
>>>   </camelContext>
>>>
>>> </beans>
>>>
>>> - aaron
>>>
>>
> 
> 
> 

Reply via email to