是否有可能从Weblogic JMS文件存储中挽救消息?

时间:2012-02-03 18:34:09

标签: java jms weblogic weblogic-10.x

我有一些来自Weblogic 10.3服务器的JMS文件存储,如果可能的话,我想在不使用Weblogic的情况下检索它们中包含的消息。这可能吗?

很多年前,我能够使用Java序列化(ObjectInputStream)读取以前版本的Weblogic的JMS文件存储,但是我拥有的文件正在给我一个

java.io.StreamCorruptedException: invalid stream header: C001BEAD
当我使用ObjectInputStream打开它们时出现

异常。我想知道在我反序列化消息之前是否需要跳过文件头,或者这个版本的Weblogic根本不使用Java序列化。

文件中的消息是MapMessages。我可以看到与地图键对应的字符串,当我十六进制转储文件时,但当然这些值不可读。但是,我可以看到地图键的事实让我希望消息在文件中被序列化。

有关如何挽救数据的任何想法?

2 个答案:

答案 0 :(得分:2)

  1. 将您希望打捞的所有* .dat文件放在一个安全的地方。
  2. 启动weblogic并登录管理控制台
  3. 转到主页 - > JMS服务器摘要 - > XL-JMS-Server
  4. 启用“在启动时暂停插入”
  5. 启用“在启动时暂停生产”
  6. 启用“暂停时暂停使用的消耗”暂停
  7. 保存设置
  8. 关闭Weblogic
  9. 交换您希望挽救的JMS数据存储
  10. 启动Weblogic
  11. 浏览JMS监控页面,查看哪些队列和主题保留了邮件。
  12. 此时,数据存储区已准备好使用您编写的QueueBrowser或TopicSubscriber进行检查/转储。或者,您可以使用Hermes JMS(http://www.hermesjms.com)临时处理消息。 Hermes具有可以为您的自定义消息类型实现的消息呈现器。

答案 1 :(得分:0)

我们和Oracle支持能够提出的唯一方法是创建另一个以相同方式配置的Weblogic实例,并让该Weblogic实例接收并处理消息。