我正在编写一个对 WebSphere MQ 队列执行一些操作的应用程序。此方法特别将消息从一个队列移动到另一个队列。我遇到以下代码没有问题:
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 incompatible with javax.jms.ConnectionFactory. ”的地方。我不知道为什么会得到它在这里,但不在上面。我什至尝试用' javax.jms 显式声明所有对象。' 前缀,但我仍然收到相同的错误。
我在 WebSphere Application Server v7.0 上运行我的应用程序。任何帮助,将不胜感激。