我正在研究一个 EJB3 MDB,它侦听远程服务器中的 MQ 队列。除了由 MDB 完成的处理外,一切工作正常(当将消息放入侦听队列时触发 MDB)。有关信息,我使用 WMQ 资源适配器来映射队列。
在 MDB 的方法“onMessage”中,我尝试将给定消息转换为“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:我已经在linux系统下的JBoss服务器4.2.3版本上部署了应用程序。我已经使用相同版本的 JBoss 服务器但在窗口系统下(相同的配置、相同的库等)使应用程序在我的本地机器上运行
有人知道这种错误的原因吗?
提前感谢您的帮助。
问候,
编辑:解决方案:使用 javax.jms.BytesMessage 而不是 com.ibm.jms.JMSBytesMessage 进行强制转换