1

有没有人尝试过从 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)

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

如果有人以前试过这个,请告诉我你的经验。

4

1 回答 1

0

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

于 2012-09-22T15:45:16.870 回答