![](/img/trans.png)
[英]java.lang.ClassCastException: com.tibco.tibjms.naming.TibjmsFederatedQueueConnectionFactory cannot be cast to javax.jms.QueueConnectionFactory
[英]java.lang.ClassCastException: com.tibco.tibjms.TibjmsxSessionImp cannot be cast to javax.jms.QueueSession
當我嘗試創建JMS會話時,出現上述錯誤。請注意。使用的JMS服務器是TIBCO。 而且我在類路徑中有tibjms.jar和jms.1.1 jars。我能夠創建連接。 而spring-jms版本是4.1.4-Release版本。
String reply = null;
QueueConnection connection = null;
QueueSession requestSession = null;
QueueSession replySession = null;
QueueReceiver receiver = null;
TemporaryQueue replyQueue = null;
try {
connection = (QueueConnection)jmsTemplate.createConnection();
connection.start();
requestSession = (QueueSession) jmsTemplate.createSession(connection);
replySession = (QueueSession) jmsTemplate.createSession(connection);
Queue queue = (Queue)jmsTemplate.getDestination(requestSession, jmsTemplate.getDefaultDestinationName());
replyQueue = replySession.createTemporaryQueue();
TextMessage requestMessage = requestSession.createTextMessage(message);
requestMessage.setJMSReplyTo(replyQueue);
LOGGER.debug("sending request/reply message "
+ jmsTemplate.getConnectionFactory()
+ requestMessage);
QueueSender queueSender = requestSession.createSender(queue);
queueSender.send(requestMessage);
receiver = replySession.createReceiver(replyQueue);
TextMessage replyMessage = (TextMessage)receiver.receive(jmsTemplate.getReceiveTimeout());
if(replyMessage != null){
reply = replyMessage.getText();
}
}catch(JMSException ex) {
是什么導致您造成這種可憎的? 請改用JmsTemplate
和JmsMessagingTemplate
。
以此替換您的代碼
JmsMessagingTemplate jms = new JmsMessagingTemplate(jmsTemplate);
String reply = jms.convertSendAndReceive(message, String.class);
或者,如果要使用簡單的JmsTemplate
和sendAndReceive
方法,則缺點是您需要自己處理消息的創建和轉換。
Message response = jmsTemplate.sendAndReceive(new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage(message);
}
});
String reply = ((TextMessage) replyMessage).getText();
無論哪種方式,一切都會為您處理。 您正在使用Spring,然后也可以從中受益。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.