如何从JBossMQ中的SpyMessage获取底层对象

时间:2013-03-04 09:04:11

标签: jboss jbossmq

我正在尝试编写一个简单的Java程序,它使用JDBC从JBossMQ的jms_messages表中读取。我正在使用JBoss 4.0.4.GA。

我可以获得SpyMessage,但是如何获取实际的消息内容(在我正在查看的特定情况下是一个Object)。

我从这个陈述中得到了一个结果集“rs”:

SELECT messageid, messageblob FROM jms_messages WHERE DESTINATION LIKE 'TOPIC.MyTopic%' limit 3"

然后我这样做(基于JBoss代码):

long messageid = rs.getLong(1);
SpyMessage message = null;
byte[] st = rs.getBytes(2);
ByteArrayInputStream baip = new ByteArrayInputStream(st);
ObjectInputStream ois = new ObjectInputStream(baip);

message = SpyMessage.readMessage(ois);
message.header.messageId = messageid;

String jmstype = message.getJMSType();
String jms_message_id = message.getJMSMessageID();
System.out.println("jmstype=" +jmstype);
System.out.println("jms_message_id=" +jms_message_id);

String propertyName;
Enumeration e = message.getPropertyNames();
while (e.hasMoreElements())
{
    propertyName = (String)e.nextElement();
    System.out.println("property name = " +propertyName);
}

但我没有打印任何属性,我不知道如何从SpyMessage(实际上是SpyObjectMessage)获取我的实际对象。我会感激任何指示。

我试过在JBoss论坛上提出这个问题而没有回复,所以我希望在这里能有更好的运气。

感谢。

1 个答案:

答案 0 :(得分:0)

对不起 - 答案是如此明显我在发布问题时并不确定我在想什么 - 只是:

Object objMessage = ((SpyObjectMessage)message).getObject();