Janne, 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.
Not sure what's wrong with the 4.2.0 test either -- if you need to use multiple versions of ServiceMix and want me to look into it a bit more, just send me the osgi:headers output for the Camel route bundle and a list of the bundles you have installed in the system to see if I can reproduce it or give you an idea what's missing in there. In the other case, I would recommend you to use the 4.3.0 version regardless of this issue, because the newer versions of ActiveMQ, Camel and CXF it embeds provide a lot of new functionality and bug fixes. 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... >>>>>> >>>>> >>>> >>> >> >
