日志已由此应用程序打开

 常见问题解答 > 错误 > 异常 > 日志已由此应用程序打开

错误

您会看到类似这样的内容

java.io.IOException: Journal is already opened by this application.
       at org.apache.activeio.journal.active.ControlFile.lock(ControlFile.java:71)
       at org.apache.activeio.journal.active.LogFileManager.initialize(LogFileManager.java:120)
       at org.apache.activeio.journal.active.LogFileManager.<init>(LogFileManager.java:101)
       at org.apache.activeio.journal.active.JournalImpl.<init>(JournalImpl.java:99)
       at org.apache.activemq.store.DefaultPersistenceAdapterFactory.createJournal(DefaultPersistenceAdapterFactory.java:198)
       at org.apache.activemq.store.DefaultPersistenceAdapterFactory.getJournal(DefaultPersistenceAdapterFactory.java:134)

描述

每个代理都需要拥有自己的目录来存储其日志文件等。此错误表示您有两个代理共享相同的文件。

此异常的常见原因是在一台机器上运行两个代理,并使用指向同一目录的相同配置文件。因此,一种解决方法是通过 Spring 的属性语法对目录名进行参数化 - 或者只需创建另一个配置文件,以便第二个代理使用不同的目录。

另一个导致此问题的原因是,如果您在 JMS 客户端中使用 vm://127.0.0.1 样式的传输,并且 JMS 连接在初始化代理之前启动。如果您创建 vm 传输连接,它将在没有运行的代理的情况下自动创建代理;因此,您可能会意外地创建两个代理。解决方法是确保您使用的 JMS 连接工厂依赖于您正在配置的代理(例如,在 Spring 中,在连接工厂上使用 **depends-on** 属性使其依赖于代理)。这将确保在连接工厂之前先初始化代理。

注意代理名称和 URI

请确保您在代理名称中不使用任何奇怪的字符,因为它们会转换为 URI,而 URI 不允许使用下划线等

此问题也可能是由 错误的操作系统和 JVM 组合 引起的

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛标志和 Apache ActiveMQ 项目标志是 Apache 软件基金会的商标。版权所有 © 2024,Apache 软件基金会。根据 Apache 许可证 2.0 授权。