反序列化JMS消息中的对象

时间:2012-09-21 14:26:51

标签: java jms websphere ibm-mq

是否有人尝试从IBM MQ Visual Edit反序列化JMS对象消息?我需要解密一个通过MQ作为JMS消息发送的对象。我将消息保存到文件中并尝试使用ObjectInputStream读取它,如下所示:

ObjectInputStream objectStream = new ObjectInputStream(new DataInputStream(new FileInputStream("PATH TO THE FILE")));
SomeObject result = ((SomeObject)objectStream.readObject());

但是我收到了一个错误:

java.io.StreamCorruptedException: invalid stream header: 52464820
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:794)
    at java.io.ObjectInputStream.<init>(ObjectInputStream.java:291)
    at com.railinc.emis.transaction.model.DeserializerClass.main(DeserializerClass.java:14)

我对此进行了一些研究,发现用于序列化的相同类应该用于反序列化。

如果有人之前尝试过此操作,请告诉我您的使用经验。

1 个答案:

答案 0 :(得分:0)

我不了解IBM MQ Visual Edit,但如果它具有保存ObjectMessage的功能,那么它可能不仅会保存消息中包含的对象,还会保存标头(包含JMS属性)。我不认为您只需使用ObjectInputStream就可以从文件中读取对象。为什么不将该消息放在测试队列中并从那里读取它?