JBoss MDB-JMSBytesMessage类强制转换异常

JBoss MDB-JMSBytesMessage类强制转换异常,jboss,jms,message-driven-bean,jboss-mdb,Jboss,Jms,Message Driven Bean,Jboss Mdb,我正在开发一个EJB3 MDB,它侦听远程服务器中的MQ队列。 除MDB所做的处理外,所有操作都正常(当消息放入已侦听队列时触发MDB)。有关信息,我使用WMQ资源适配器映射队列 在MDB的方法“onMessage”中,我尝试将给定的消息强制转换为类“com.ibm.jms.JMSBytesMessage”,但收到一条奇怪的错误消息 代码如下(示例很简单): 以及异常消息: 读取输入请求时出现异常:com.ibm.jms.jmsbytes消息与com.ibm.jms.jmsbytes消息不兼容

我正在开发一个EJB3 MDB,它侦听远程服务器中的MQ队列。 除MDB所做的处理外,所有操作都正常(当消息放入已侦听队列时触发MDB)。有关信息,我使用WMQ资源适配器映射队列

在MDB的方法“onMessage”中,我尝试将给定的消息强制转换为类“com.ibm.jms.JMSBytesMessage”,但收到一条奇怪的错误消息

代码如下(示例很简单):

以及异常消息:

读取输入请求时出现异常:com.ibm.jms.jmsbytes消息与com.ibm.jms.jmsbytes消息不兼容

好的,收到的消息应该是(并且是)类型“com.ibm.jms.jmsbytes消息”,那么为什么应用程序不能工作?我的JBoss服务器是否可能已经使用了另一个版本的库“com.ibm.mqjms.jar”(包括jmsbytes消息类)并导致这种错误

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

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

提前感谢您的帮助

问候,


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

也可以复制我的评论作为答案:


不要强制转换到MQ特定的
com.ibm.jms.jmsbytes消息
,强制转换到jms标准
javax.jms.BytesMessage
。将代码耦合到特定于实现的类型与JMS试图实现的目标背道而驰。

为什么要全部强制转换?如果您不坚持JMS提供的接口,那么使用JMS就没有意义。您不能转换为
javax.jms.BytesMessage
吗?我尝试转换BytesMessage,但MDB有一个奇怪的行为(从输入队列读取消息,但看起来像是回滚消息并再次读取)。但是错误消息和其他处理跟踪都没有出现(因此MDB中没有执行任何操作):我尝试捕获“异常”和“错误”类型并显示跟踪,但日志中没有显示任何内容。所以目前,使用javax.jms.BytesMessage进行强制转换不起作用,但我不知道为什么。但是您是对的,没有必要使用javax.jms.BytesMessage以外的其他内容进行强制转换。最终,它可以很好地对javax.jms.BytesMessage进行强制转换。我的代码后面有问题。谢谢你的帮助好的,现在可以了。真的不知道为什么它以前不起作用。。。现在我使用javax.jms.BytesMessage。谢谢你的帮助
public void onMessage(Message theMessage) {
  ((JMSBytesMessage) theMessage).readBytes(myBytes);
}