簡體   English   中英

java.lang.ClassCastException:com.tibco.tibjms.TibjmsxSessionImp無法轉換為javax.jms.QueueSession

[英]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) {

是什么導致您造成這種可憎的? 請改用JmsTemplateJmsMessagingTemplate

以此替換您的代碼

JmsMessagingTemplate jms = new JmsMessagingTemplate(jmsTemplate);
String reply = jms.convertSendAndReceive(message, String.class);

或者,如果要使用簡單的JmsTemplatesendAndReceive方法,則缺點是您需要自己處理消息的創建和轉換。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM