2012-11-06 21 views
1

我正在編寫一個應用程序,對WebSphere MQ隊列執行一些操作。該方法特別將消息從一個隊列移動到另一個隊列。我沒有遇到問題,下面的代碼:在MQ應用程序中接收異常:com.ibm.mq.jms.MQQueue與javax.jms.ConnectionFactory不兼容

Context ctx = new InitialContext(); 
ConnectionFactory retrieveConnectionFactory = (ConnectionFactory) ctx.lookup(jndiPrefix + "/" + qcfName); 
retrieveConnection = retrieveConnectionFactory.createConnection(); 
Queue source = (Queue) ctx.lookup(jndiPrefix + "/" + sourceQueue); 
retrieveConnection.start(); 
retrieveSession = retrieveConnection.createSession(true, Session.AUTO_ACKNOWLEDGE); 
String queueSearchSpec = buildSearchSpec(searchSpec); 
consumer = retrieveSession.createConsumer(source, queueSearchSpec); 

do { 
    qMessage = consumer.receiveNoWait(); 
    if (qMessage != null) { 
     messages.add(qMessage); 
     numberOfMessages++; 
    } 
} while (qMessage != null); 

但是,後來下來,我在做一些非常相似,除了我收到一個鑄造例外:

ConnectionFactory putConnectionFactory = (ConnectionFactory) ctx.lookup(jndiPrefix + "/" + destinationQueue);   
// this is where the exception is occurring-- Error: com.ibm.mq.jms.MQQueue incompatible with javax.jms.ConnectionFactory 
putConnection = putConnectionFactory.createConnection(); 
Queue destination = (Queue) ctx.lookup(jndiPrefix + "/" + destinationQueue); 
putConnection.start(); 
putSession = putConnection.createSession(true, Session.AUTO_ACKNOWLEDGE); 
MessageProducer producer = putSession.createProducer(destination); 
for(int i = 0; i < messages.size(); i++) 
{ 
    producer.send(messages.get(i)); 
} 

注意在第二行註釋上面的摘錄:這是我收到異常消息「com.ibm.mq.jms.MQQueue與javax.jms.ConnectionFactory不兼容。」我不知道爲什麼我會在這裏得到它,但不是以上。我甚至嘗試使用'javax.jms顯式聲明所有對象。 ''前綴,但我仍然收到相同的錯誤。

我正在WebSphere Application Server v7.0上運行我的應用程序。任何幫助,將不勝感激。

回答

0

我的部分愚蠢的錯誤。在這條線:

ConnectionFactory putConnectionFactory = (ConnectionFactory) ctx.lookup(jndiPrefix + "/" + destinationQueue); 

在ctx.lookup第二可變本來應該隊列連接工廠,qcfName,像在上面的代碼。我已經包含destinationQueue,它指的是消息將被移動到的隊列。

相關問題