客户端调用服务器上的JMS报错
1、com.ibm.ws.naming.util.Helpers
WARNING: jndiGetObjInstNoop
Exception in thread "P=451515:O=0:CT" java.lang.ClassCastException: javax.naming.Reference incompatible with javax.jms.QueueConnectionFactory
at com.ztesoft.oss.js.flowbus.client.Test.sendJms(Test.java:146)
at com.ztesoft.oss.js.flowbus.client.Test.main(Test.java:93)
代码如下:
private void sendJms(String xml) throws Exception {
QueueConnection queueConnection = null;
//Connection queueConnection = null;
QueueBrowser queueSender = null;
QueueSession queueSession = null;
try {
logger.info("FACTORY_INITIAL: "+FACTORY_INITIAL);
Context context = NamingHelper.singleton().getInitialContext(FACTORY_INITIAL, PROVIDER_URL, null, null, null);
QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) context.lookup(FACTORY_NAME); //ConnectionFactory queueConnectionFactory = (javax.jms.ConnectionFactory ) context.lookup(FACTORY_NAME);
//javax.jms.ConnectionFactory
logger.info("队列的地址:" + PROVIDER_URL);
logger.debug("获取队列连接工厂成功");
logger.info("queueConnectionFactory OK FACTORY_NAME="+ FACTORY_NAME);
queueConnection = queueConnectionFactory.createQueueConnection();
//queueConnection = queueConnectionFactory.createConnection();
logger.debug("连接队列工厂成功");
queueConnection.start();
queueSession = queueConnection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
//queueSession = (QueueSession) queueConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Message message = queueSession.createTextMessage(xml);
// 发送消息到mdb
javax.jms.Queue queue = (javax.jms.Queue) context.lookup(QUEUE_NAME);
logger.debug("获取队列成功");
logger.info("context.lookup(QUEUE_NAME) OK QUEUE_NAME="+ QUEUE_NAME);
queueSender = (QueueBrowser) queueSession.createSender(queue);
logger.debug("发送的消息为:" + xml);
((QueueSender) queueSender).send(message);
logger.debug("发送消息成功");
} finally {
if (queueSender != null) {
try {
queueSender.close();
} catch (JMSException ex1) {
}
}
if (queueSession != null) {
try {
queueSession.close();
} catch (JMSException ex2) {
}
}
if (queueConnection != null) {
try {
queueConnection.close();
} catch (JMSException ex3) {
}
}
}
}
在本地直接调用,使用的是IBM的JDK。