我正在研究侦听远程服务器中的MQ队列的EJB3 MDB。 除MDB完成的处理外,所有工作都正常(MDB在将消息放入侦听队列时触发)。有关信息,我使用WMQ资源适配器来映射队列。JBoss MDB - JMSBytesMessage类抛出异常
在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
投
你为什么要投它一切?如果您不打算继续使用JMS提供的接口,那么使用JMS就毫无意义。你不能转换为`javax.jms.BytesMessage`吗? – skaffman 2011-01-25 13:52:16
我试图转换BytesMessage,但MDB有一个奇怪的行为(从输入队列读取消息,但看起来像回滚消息并再次读取)。但是这个错误信息都没有出现,也没有其他的处理痕迹(因此MDB中没有做任何事情):我试图捕获'Exception'和'Error'类型并显示一个跟踪,但是日志中没有显示任何内容。所以目前,使用javax.jms.BytesMessage进行投射不起作用,但我不知道为什么。但是你是对的,没有必要使用javax.jms.BytesMesasge – kij 2011-01-25 15:49:32