JBoss MDB - JMSBytesMessage类强制转换异常

时间:2011-01-25 13:49:41

标签: jboss jms message-driven-bean jboss-mdb

我正在研究侦听远程服务器中的MQ队列的EJB3 MDB。 一切正常(除了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进行强制转换

1 个答案:

答案 0 :(得分:3)

也可以将我的评论重现为答案:

不要强制转换为特定于MQ的com.ibm.jms.JMSBytesMessage,强制转换为JMS标准javax.jms.BytesMessage。将代码与特定于实现的类型相结合,与JMS试图实现的目标相反。