【问题标题】:Is it possible to salvage messages from Weblogic JMS file store?是否可以从 Weblogic JMS 文件存储中抢救消息?
【发布时间】:2012-02-26 08:52:29
【问题描述】:

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

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

java.io.StreamCorruptedException: invalid stream header: C001BEAD

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

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

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

【问题讨论】:

  • BEA 提供了一个实用程序 - weblogic.store.Admin,它能够转储 JMS 队列文件的内容。不幸的是,在我的情况下这没有用,因为它只是以十六进制格式转储消息的内容 - 它不会以可读格式公开消息的内容。如果消息是 TextMessages 可能会很有用,但在我的情况下它们是 MapMesssages。

标签: java jms weblogic weblogic-10.x


【解决方案1】:
  1. 将您希望挽救的所有 *.dat 文件放在一个安全的地方。
  2. 启动 weblogic 并登录管理控制台
  3. 转到首页->JMS 服务器摘要->XL-JMS-Server
  4. 启用“插入在启动时暂停”
  5. 启用“启动时暂停生产”
  6. 启用“启动时暂停消耗”已暂停
  7. 保存设置
  8. 关闭 Weblogic
  9. 换入您希望挽救的 JMS 数据存储
  10. 启动 Weblogic
  11. 浏览 JMS 监控页面以查看哪些队列和主题具有持久性消息。

此时,数据存储已准备好使用您编写的 QueueBrowser 或 TopicSubscriber 进行检查/转储。或者,您可以使用 Hermes JMS (http://www.hermesjms.com) 临时处理消息。 Hermes 有消息渲染器,您可以为自定义消息类型实现这些渲染器。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-05
      • 2017-12-27
      • 2020-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多