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...
>>>>>>
>>>>>
>>>>
>>>
>>
>

Reply via email to