E 02/07/19-07: 51: 49.358 [-5] Исключение JMSListener: java.lang.ClassCastException: com.ibm.jms.JMSMessage не может быть приведено к javax.jms.TextMessage - PullRequest
0 голосов
/ 03 июля 2019
E 02/07/19-07:51:49.358 [-5]  JMSListener exception : java.lang.ClassCastException: com.ibm.jms.JMSMessage cannot be cast to javax.jms.TextMessage

Это галочка.Мы помещаем сообщение xml в очередь, и наш код потребляет его без проблем.На следующий день мы поместили еще одно xml-сообщение в ту же очередь, и тот же код вызвал эту ошибку.

Я ищу предложения о том, как получить больше информации о том, что на самом деле происходит, или, если кто-то ещебыли случайные исключения приведения классов, как это с JMS.

1 Ответ

1 голос
/ 08 июля 2019

Обратите внимание, что не все сообщения XML отправляются как JMS TextMessage.Я сталкивался с тем же самым.Некоторые приложения решат отправить вам содержимое XML в виде JMS BytesMessage (и поместить текст в тело байтового массива).Поэтому убедитесь, что ваша отправка действительно отправляет вам TextMessage.

Один из способов убедиться в этом - остановить своего потребителя и просмотреть сообщения в очереди с помощью MQExplorer: в именованном свойстве mcd.Msd должно отображаться jms_text, если оно было отправлено как правильный MQ JMS TextMessage.Если данные получены из не-JMS-приложения, формат MQ имеет значение.Если формат MQFMT_STRING, сообщение принимается как текстовое сообщение JMS.В противном случае оно принимается как JMS BytesMessage!

. Поэтому либо измените своего издателя, чтобы установить значение формата MQFMT_STRING, либо измените приложение-потребитель, чтобы удалить приведение к TextMessage, а вместо этого также примите BytesMessages и создайте текстиз байтового массива тела.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...