Hello Camel !

I am currently trying to configure my route, deployed in Fuse 4.3, to poll
messages from a WebSphere MQ Queue.

The issue is more related to OSGI than Camel but maybe someone experienced
the same issue before, so I take my chance to post it here...

The idea is to create a feature that could load the WebSphere 7 thin jms
client bundles and the route which transport messages from WebSphere MQ
queue to an ActiveMQ queue.

The client jars are the following (from the /runtime directory):

* com.ibm.ws.ejb.thinclient_7.0.0.jar
* com.ibm.ws.orb_7.0.0.jar
* com.ibm.ws.sib.client.thin.jms_7.0.0.jar

Here is the JmsComponent configuration:

        <bean id="wasmq" class="org.apache.camel.component.jms.JmsComponent">
                <property name="configuration" ref="wasJmsConfiguration" />
                <property name="destinationResolver" 
ref="wasDestinationResolver" />
        </bean>

        <bean id="wasJmsConfiguration"
class="org.apache.camel.component.jms.JmsConfiguration">
                <property name="connectionFactory" ref="wasConnectionFactory" />
                <property name="concurrentConsumers" value="1" />
        </bean>

        <bean id="wasJndiTemplate" 
class="org.springframework.jndi.JndiTemplate">
                <property name="environment">
                        <props>
                                <prop
key="java.naming.factory.initial">com.ibm.websphere.naming.WsnInitialContextFactory</prop>
                                <prop 
key="java.naming.provider.url">${was.jms.broker.url}</prop>
                        </props>
                </property>
        </bean>

        <bean id="wasConnectionFactory"
class="org.springframework.jndi.JndiObjectFactoryBean">
                <property name="jndiTemplate" ref="wasJndiTemplate" />
                <property name="jndiName" value="${messaging.cf.jndi.name}" />
        </bean>

The bundle required some tweaking to have the correct import-packages (might
need more I am afraid):

                                                <Import-Package>
                                                        
org.apache.activemq.camel.component,
                                                        
org.apache.camel.component.jms,
                                                        
org.apache.servicemix.camel.nmr,
                                                        
org.apache.servicemix.nmr.api,
                                                        
org.springframework.jndi,
                                                        org.springframework.jms,
                                                        
org.springframework.jms.support,
                                                        
org.springframework.jms.support.destination,
                                                        
org.springframework.beans,
                                                        
org.springframework.beans.factory,
                                                        org.apache.activemq,
                                                       
com.ibm.websphere.naming,
                                                        com.ibm.CORBA.iiop,
                                                       
com.ibm.ws.sib.api.jmsra.impl,
                                                        com.ibm.ejs.j2c,
                                                        javax.naming,
                                                        javax.naming.spi,
                                                        javax.net,
                                                        *
                        </Import-Package>

Here is the stack I get at Runtime (
http://camel.465427.n5.nabble.com/file/n3380989/WebSphere.camel.stack.txt
full stack enclosed )

Caused by: java.lang.IllegalStateException: Cannot convert value of type
[com.ibm.ws.sib.api.jms.impl.JmsConnectionFactoryImpl] to required type
[javax.jms.ConnectionFactory] for property 'connectionFactory': no matching
editors or conversion strategy found

I did some googling and according to 
http://forum.springframework.org/showthread.php?t=34920 This post , the
cause might be related to the JMS api being present at multiple level in the
classpath...

I am far from being an OSGi expert and I have some difficulties to see how I
could solve this issue.
-- 
View this message in context: 
http://camel.465427.n5.nabble.com/OSGi-JmsComponent-config-for-WebSphere-Queue-tp3380989p3380989.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to