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));
}
上記の抜粋の 2 行目のコメントに注意してください。ここで、「com.ibm.mq.jms.MQQueue incompatible with javax.jms.ConnectionFactory.」という例外メッセージが表示されます。ここにありますが、上にはありません。すべてのオブジェクトを「javax.jms. 'プレフィックスですが、それでも同じエラーを受け取りました。
WebSphere Application Server v7.0 でアプリケーションを実行しています。どんな助けでも大歓迎です。