我有几个来自 Weblogic 10.3 服务器的 JMS 文件存储,如果可能的话,我想检索其中包含的消息,而不使用 Weblogic。这可能吗?
很多年前,我能够使用 Java 序列化 (ObjectInputStream) 读取 Weblogic 早期版本的 JMS 文件存储,但我拥有的文件给了我一个
java.io.StreamCorruptedException: invalid stream header: C001BEAD
当我使用 ObjectInputStream 打开它们时出现异常。我想知道在反序列化消息之前是否需要跳过一个文件头,或者这个版本的 Weblogic 根本不使用 Java 序列化。
文件中的消息是MapMessages。当我十六进制转储文件时,我可以看到与映射键对应的字符串,但当然这些值无法以这种方式读取。但事实上,我可以看到映射键,这让我对消息在文件中序列化充满希望。
关于如何挽救数据有什么想法吗?
最佳答案
- 将您想要挽救的所有 *.dat 文件放在安全的地方。
- 启动 weblogic 并登录管理控制台
- 返回首页 ->JMS 服务器摘要 ->XL-JMS-Server
- 启用“启动时暂停插入”
- 启用“启动时暂停生产”
- 启用“启动时暂停消耗”已暂停
- 保存设置
- 关闭Weblogic
- 换入您想要挽救的 JMS 数据存储
- 启动Weblogic
- 浏览 JMS 监控页面以查看哪些队列和主题保留了消息。
此时,数据存储区已准备好使用您编写的 QueueBrowser 或 TopicSubscriber 检查/转储。或者,您可以使用 Hermes JMS ( http://www.hermesjms.com ) 临时遍历消息。 Hermes 有消息呈现器,您可以为自定义消息类型实现它们。
关于java - 是否可以从 Weblogic JMS 文件存储中抢救消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9133714/