首页 文章

JBoss MDB - JMSBytesMessage类强制转换异常

提问于
浏览
1

我正在研究一个侦听远程服务器中的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不兼容

好的, the message received should be (and is) type 'com.ibm.jms.JMSBytesMessage', so why the application doesn't work ? 我的JBoss服务器是否可能已经使用了另一个版本的库'com.ibm.mqjms.jar'(包括JMSBytesMessage类)并导致这种错误?

ps:我已经在linux系统下的JBoss服务器版本4.2.3上部署了该应用程序 . 我已经在我的本地机器上使用相同版本的JBoss服务器但在窗口系统下(相同的配置,相同的库等)使应用程序工作

有人知道这种错误的原因吗?

在此先感谢您的帮助 .

问候,

编辑:解决方案:使用javax.jms.BytesMessage而不是com.ibm.jms.JMSBytesMessage进行强制转换

1 回答

  • 3

    不妨重现我的评论作为答案:

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

相关问题