Possible Bug in org.jboss.resource.adapter.jms.inflow.JmsAct
fjcarretero Apr 10, 2005 11:36 AMHi all,
I am trying to configure a QueueConnectionFactory with an external JMS Provider.
I getting the following error:
java.lang.ClassCastException: Object at 'WSMQXAQueueConnectionFactory' in context {java.naming.factory.initial=com.sun.jndi.fscontext.RefFSContextFactory, java.naming.provider.url=file:/D:/JNDI-Directory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces:org.jboss.naming:org.jnp.interfaces} is not an instance of [class=javax.jms.TopicConnectionFactory classloader=org.jboss.mx.loading.UnifiedClassLoader3@fcfa52{ url=file:/D:/jboss-4.0.1sp1/server/default/tmp/deploy/tmp33423jboss-service.xml ,addedOrder=2} interfaces={interface=javax.jms.ConnectionFactory classloader=org.jboss.mx.loading.UnifiedClassLoader3@fcfa52{ url=file:/D:/jboss-4.0.1sp1/server/default/tmp/deploy/tmp33423jboss-service.xml ,addedOrder=2}}] object class is [class=com.ibm.mq.jms.MQXAQueueConnectionFactory classloader=org.jboss.mx.loading.UnifiedClassLoader3@fcfa52{ url=file:/D:/jboss-4.0.1sp1/server/default/tmp/deploy/tmp33423jboss-service.xml ,addedOrder=2} interfaces={interface=javax.jms.XAQueueConnectionFactory classloader=org.jboss.mx.loading.UnifiedClassLoader3@fcfa52{ url=file:/D:/jboss-4.0.1sp1/server/default/tmp/deploy/tmp33423jboss-service.xml ,addedOrder=2}}]
Looking at the code (org.jboss.resource.adapter.jms.inflow.JmsActivation) I have seen the following:
protected QueueConnection setupQueueConnection(Context ctx, String user, String pass, String clientID) throws Exception { String queueFactoryRef = adapter.getQueueFactoryRef(); log.debug("Attempting to lookup queue connection factory " + queueFactoryRef); QueueConnectionFactory qcf = (QueueConnectionFactory)Util.lookup(ctx, queueFactoryRef, javax.jms.TopicConnectionFactory.class); log.debug("Got queue connection factory " + qcf + " from " + queueFactoryRef); log.debug("Attempting to create queue connection with user " + user); QueueConnection result; if(user != null) result = qcf.createQueueConnection(user, pass); else result = qcf.createQueueConnection(); if(clientID != null) result.setClientID(clientID); result.setExceptionListener(this); log.debug("Using queue connection " + result); return result; }
I think the code should be like:
QueueConnectionFactory qcf = (QueueConnectionFactory)Util.lookup(ctx, queueFactoryRef, javax.jms.QueueConnectionFactory.class);
Thx
Felipe