Я работаю над 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