Just to make sure I understand this correctly - installing the feature
with the console should be enough?

Let's say my OSGi bundle would use some exotic camel component, for
example "kestrel". I would just do features:install camel-kestrel and
configure my route definition to have for example <to
uri="kestrel://ks02:22133/stuff"/>

I would not need to modify my own OSGi bundle's Import-Package
settings? Or add the "feature" as a maven dependency for my OSGi
bundle project?


> If you happen to come across a component that's not installed, you
> should be able to install it from the console by typing
> 'features:install camel-<component>" to start using it.
>
> Regards,
>
> Gert Vanthienen
> ------------------------
> FuseSource
> Web: http://fusesource.com
> Blog: http://gertvanthienen.blogspot.com/
>
>
>
> On Tue, Mar 8, 2011 at 8:01 PM, janne postilista
> <[email protected]> wrote:
>> I see.
>>
>> Great, I got the dummy example working on FuseESB 4.3
>>
>> 1) added camel-activemq to example's feature
>> (apache-servicemix-4.3.1-fuse-00-00-features.xml)
>>
>>    <feature name="examples-camel-osgi" version="4.3.1-fuse-00-00">
>>        <feature>camel-activemq</feature>
>>        <feature version="2.6.0-fuse-00-00">camel</feature>
>>        
>> <bundle>mvn:org.apache.servicemix.examples/camel-osgi/4.3.1-fuse-00-00</bundle>
>>    </feature>
>>
>> 2) did not touch pom.xml maven-bundle-plugin confifuguration at all
>>
>> 3) configured a few routes:
>>
>>  <route>
>>   <from uri="file:c:/projects/esb-files/jms-start" />
>>   <setBody>
>>    <simple>
>>      Moving File to queue(file: ${file:name}, timestamp:
>> ${date:now:hh:MM:ss.SSS})
>>      ${in.body}
>>    </simple>
>>   </setBody>
>>   <to uri="activemq://events" />
>>  </route>
>>
>>  <route>
>>   <from uri="activemq://events" />
>>   <setBody>
>>    <simple>
>>     Receiving file from queue:[${in.body}]
>>    </simple>
>>   </setBody>
>>   <to uri="file:c:/projects/esb-files/jms-end" />
>>  </route>
>>
>> Transformed messages are popping in the target directory as expected.
>>
>> Still a bit confused about what was the problem with ServiceMix 4.2,
>> what I should have done differently - should I have e.g. configured
>> maven-bundle-plugin differently - and are there perhaps some camel
>> components that are not yet "preinstalled" in ServiceMix 4.3 that I
>> may need to fight with at later point, if need to use them presents
>> itself...
>>
>> I any case, a good start, thanks for assisting!
>>
>> On Tue, Mar 8, 2011 at 8:03 PM, Gert Vanthienen
>> <[email protected]> wrote:
>>> Janne,
>>>
>>> No, this should work out-of-the-box -- you can still configure the
>>> ActiveMQ component yourself if you want more control over how things
>>> are set up, but there are some default settings for the activemq:
>>> endpoints that make it possible to just deploy those routes as they're
>>> printed out in the quickstart guide.
>>>
>>> Regards,
>>>
>>> Gert Vanthienen
>>> ------------------------
>>> FuseSource
>>> Web: http://fusesource.com
>>> Blog: http://gertvanthienen.blogspot.com/
>>>
>>>
>>>
>>> On Tue, Mar 8, 2011 at 6:55 PM, janne postilista
>>> <[email protected]> wrote:
>>>> Thanks for the quickstart pointer! Very helpful. I have been using
>>>> different versions, ServiceMix 4.2 and 4.3, and Fuse ESB, so much that
>>>> it seems I'm starting to lose track myself....the ClassCastException
>>>> is from ServiceMix 4.2.
>>>>
>>>> I will try to follow the quickstart on SM 4.3 and get back to the
>>>> issue after it. I guess I still need to introduce active mq bean and
>>>> broker:
>>>>
>>>>   <bean id="activemq"
>>>> class="org.apache.activemq.camel.component.ActiveMQComponent"
>>>> depends-on="my-broker">
>>>>               <property name="brokerURL" value="tcp://localhost:61616" />
>>>>   </bean>
>>>>
>>>>   <broker:broker id="my-broker" useJmx="false" persistent="false"
>>>> brokerName="localhost">
>>>>       <broker:transportConnectors>
>>>>           <broker:transportConnector uri="tcp://localhost:61616"/>
>>>>       </broker:transportConnectors>
>>>>   </broker:broker>
>>>>
>>>> ? Those are not included the quickstart blueprint xml file (probably
>>>> since it is assumed they are configured somewhere else?).
>>>>
>>>> On Tue, Mar 8, 2011 at 6:53 PM, Gert Vanthienen
>>>> <[email protected]> wrote:
>>>>> L.S,
>>>>>
>>>>> What version of ServiceMix are you using for this scenario?  In some
>>>>> other post, I see you mention 4.3.0 but this features.xml file seems
>>>>> to indicate that you're using 4.2.0.  In ServiceMix 4.3.0, camel-jms
>>>>> and activemq-camel are both preinstalled.  As far as 4.3.0 is
>>>>> concerned, our new quickstart guide has a similar example that just
>>>>> seems to work out of the box for me (cfr.
>>>>> http://servicemix.apache.org/docs/4.3.0-SNAPSHOT/quickstart/activemq.html).
>>>>>
>>>>> Could you paste the output for the osgi:headers command for the bundle
>>>>> you're deploying and I'll try to add a similar example using bundles
>>>>> instead of plain XML files to our Camel guide?
>>>>>
>>>>> Regards,
>>>>>
>>>>> Gert Vanthienen
>>>>> ------------------------
>>>>> FuseSource
>>>>> Web: http://fusesource.com
>>>>> Blog: http://gertvanthienen.blogspot.com/
>>>>>
>>>>>
>>>>>
>>>>> On Tue, Mar 8, 2011 at 3:26 PM, janne postilista
>>>>> <[email protected]> wrote:
>>>>>> Camel's ActiveMQ component http://camel.apache.org/activemq.html lists
>>>>>> that it needs dependencies:
>>>>>>
>>>>>>    * camel-jms
>>>>>>    * activemq-camel
>>>>>>
>>>>>> If I would be running Camel in standalone environment, I guess I would
>>>>>> be putting those as maven pom dependencies (examples in
>>>>>> http://camel.apache.org/activemq.html)
>>>>>>
>>>>>> But since I am running my solution as OGSi bundle deployed in
>>>>>> ServiceMix, I am not sure. Should I put those as maven pom.xml
>>>>>> dependencies, or reference the OSGi bundles that already exist in
>>>>>> ServiceMix?
>>>>>>
>>>>>> - what do I put in my maven pom.xml dependencies, what in
>>>>>> maven-bundle-plugin Import-Packages?
>>>>>> - are there any configuration examples / documentation on how to
>>>>>> configure servicemix OSGi bundle that contains camel route which uses
>>>>>> camel activemq component?
>>>>>>
>>>>>> camel-osgi example starts with pom.xml with:
>>>>>>
>>>>>>    <dependencies>
>>>>>>        <dependency>
>>>>>>            <groupId>commons-logging</groupId>
>>>>>>            <artifactId>commons-logging</artifactId>
>>>>>>            <scope>provided</scope>
>>>>>>        </dependency>
>>>>>>        <dependency>
>>>>>>            <groupId>org.apache.camel</groupId>
>>>>>>            <artifactId>camel-spring</artifactId>
>>>>>>            <version>${camel.version}</version>
>>>>>>        </dependency>
>>>>>>    </dependencies>
>>>>>>
>>>>>>    <build>
>>>>>>        <plugins>
>>>>>>            <plugin>
>>>>>>                <groupId>org.apache.felix</groupId>
>>>>>>                <artifactId>maven-bundle-plugin</artifactId>
>>>>>>                <configuration>
>>>>>>                    <instructions>
>>>>>>
>>>>>> <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
>>>>>>                        
>>>>>> <Import-Package>*,org.apache.camel.osgi</Import-Package>
>>>>>>
>>>>>> <Private-Package>org.apache.servicemix.examples.camel</Private-Package>
>>>>>>                    </instructions>
>>>>>>                </configuration>
>>>>>>            </plugin>
>>>>>>        </plugins>
>>>>>>    </build>
>>>>>>
>>>>>> How should I change it? Seems that no matter whether I add
>>>>>> org.apache.camel.component.jms to Import-Packages, or add
>>>>>>
>>>>>>                <dependency>
>>>>>>                        <groupId>org.apache.camel</groupId>
>>>>>>                        <artifactId>camel-jms</artifactId>
>>>>>>                        <version>${camel.version}</version>
>>>>>>                </dependency>
>>>>>>
>>>>>> I always get java.lang.ClassNotFoundException:
>>>>>> org.apache.camel.component.jms.JmsComponent when I try to deploy my
>>>>>> bundle.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Tue, Mar 8, 2011 at 2:35 PM, janne postilista
>>>>>> <[email protected]> wrote:
>>>>>>> I'm trying to run a simple camel test route which reads files from a
>>>>>>> directory, puts them into an ActiveMQ queue, and another one reads the
>>>>>>> files from the queue and writes them to another directory.
>>>>>>>
>>>>>>> I took examples/camel-osgi and started building on top of it.
>>>>>>>
>>>>>>> beans.xml:
>>>>>>>
>>>>>>>    <route>
>>>>>>>      <from uri="activemq:queue:someq"/>
>>>>>>>      <to uri="file:d:/servicemix-files/out" />
>>>>>>>    </route>
>>>>>>>    <route>
>>>>>>>      <from uri="file:d:/servicemix-files/in"/>
>>>>>>>      <to uri="activemq:queue:someq"/>
>>>>>>>    </route>
>>>>>>>
>>>>>>>    <bean id="activemq"
>>>>>>> class="org.apache.activemq.camel.component.ActiveMQComponent"
>>>>>>> depends-on="my-broker">
>>>>>>>                <property name="brokerURL" value="tcp://localhost:61616" 
>>>>>>> />
>>>>>>>    </bean>
>>>>>>>
>>>>>>>    <broker:broker id="my-broker" useJmx="false" persistent="false"
>>>>>>> brokerName="localhost">
>>>>>>>        <broker:transportConnectors>
>>>>>>>            <broker:transportConnector uri="tcp://localhost:61616"/>
>>>>>>>        </broker:transportConnectors>
>>>>>>>    </broker:broker>
>>>>>>>
>>>>>>> At first I got a bunch of osgi "unresolved constraint in bundle
>>>>>>> camel-osgi errors". After a while of trial and error I ended up with
>>>>>>> following changes:
>>>>>>>
>>>>>>> features.xml:
>>>>>>>
>>>>>>>    <feature name="examples-camel-osgi" version="4.2.0">
>>>>>>>        <feature version="2.2.0">camel</feature>
>>>>>>>        <feature version="5.3.0">activemq</feature>
>>>>>>>        <feature version="4.2.0">camel-activemq</feature>
>>>>>>>        
>>>>>>> <bundle>mvn:org.apache.servicemix.examples/camel-osgi/4.2.0</bundle>
>>>>>>>    </feature>
>>>>>>>
>>>>>>> pom.xml:
>>>>>>>                <artifactId>maven-bundle-plugin</artifactId>
>>>>>>>  ...
>>>>>>>
>>>>>>> <Import-Package>*,org.apache.camel.component.jms,org.apache.activemq.xbean,org.apache.camel.osgi,org.apache.activemq.camel.component,org.apache.activemq.broker,org.apache.activemq.pool</Import-Package>
>>>>>>>
>>>>>>> But still I do get a ClassNotFoundException when I try to deploy  the 
>>>>>>> feature:
>>>>>>>
>>>>>>> Caused by: 
>>>>>>> org.springframework.beans.factory.CannotLoadBeanClassException:
>>>>>>> Error loading class
>>>>>>> [org.apache.activemq.camel.component.ActiveMQComponent] for bean with
>>>>>>> name 'activemq' defined in URL [bun
>>>>>>> dle://222.0:0/META-INF/spring/beans.xml]: problem with class file or
>>>>>>> dependent class; nested exception is java.lang.NoClassDefFoundError:
>>>>>>> org.apache.activemq.camel.component.ActiveMQComponent not foun
>>>>>>> d from bundle [Apache ServiceMix Example :: Camel OSGi (camel-osgi)]
>>>>>>>        at 
>>>>>>> org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1144)
>>>>>>> ....
>>>>>>> Caused by: java.lang.ClassNotFoundException:
>>>>>>> org.apache.camel.component.jms.JmsComponent
>>>>>>>
>>>>>>> 1) What do I need to do to fix this ClassNotFoundException
>>>>>>> 2) How can I know what I need to configure into features.xml, pom.xml
>>>>>>> import-packages and dependencies when I want to use camel and it's
>>>>>>> activemq component from servicemix? Is this information documented
>>>>>>> somewhere? Doing it by trial-and-error gets frustrating pretty fast...
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Reply via email to