JBoss MDB - исключение приведения класса JMSBytesMessage
Я работаю над EJB3 MDB, который слушает очередь MQ на удаленном сервере. Все работает нормально (MDB срабатывает, когда сообщение помещается в очередь прослушивания), кроме обработки, выполняемой MDB. Для информации я использую адаптер ресурсов WMQ для сопоставления очереди.
В методе onMessage MDB я пытаюсь преобразовать данное сообщение в класс com.ibm.jms.JMSBytesMessage, но получаю странное сообщение об ошибке.
Код следующий (простой для примера):
public void onMessage(Message theMessage) {
((JMSBytesMessage) theMessage).readBytes(myBytes);
}
И сообщение об исключении:
Исключение при чтении запроса ввода: com.ibm.jms.JMSBytesMessage несовместимо с com.ibm.jms.JMSBytesMessage
Хорошо, полученное сообщение должно быть (и есть) типа "com.ibm.jms.JMSBytesMessage", так почему приложение не работает? Возможно ли, что мой сервер JBoss уже использует другую версию библиотеки com.ibm.mqjms.jar (включая класс JMSBytesMessage) и вызывает такую ошибку?
PS: я развернул приложение на сервере JBoss версии 4.2.3 в системе Linux. Я уже заставляю приложение работать на моей локальной машине с той же версией сервера JBoss, но под оконной системой (та же конфигурация, те же библиотеки и т. Д.)
У кого-нибудь есть представление о причине такой ошибки?
Заранее благодарю за любую помощь.
С Уважением,
РЕДАКТИРОВАТЬ: РЕШЕНИЕ: приведение с javax.jms.BytesMessage вместо com.ibm.jms.JMSBytesMessage
1 ответ
Можно также воспроизвести мой комментарий как ответ:
Не применяйте MQ com.ibm.jms.JMSBytesMessage
приведение к стандарту JMS javax.jms.BytesMessage
, Связывание вашего кода с типами, специфичными для реализации, противоречит тому, что JMS пытается достичь.