OSGI + Spring-DM 交叉捆绑依赖死锁

标签 osgi springsource-dm-server

正如标题所示,我在使用 OSGI + Spring DM 时遇到问题。

在我的项目设计中,我有一个 bundle A,它需要服务 svB 并导出服务 svA。 bundle B 需要 svA 并导出 svB(当然还有其他内容)。这似乎导致了僵局,因为两个 bundle 似乎都在等待另一个 bundle 上线。 Spring DM 可能会出现这种死锁吗?有没有办法解决这个问题?

最佳答案

这听起来不像是 Spring-DM 的问题,而是您已经为自己设置了这种僵局:A 依赖于 B,B 依赖于 A,因此没有人可以完成任何工作。为了解决这个问题,您可能需要更改您的设计,并使 A 或 B 之一能够在没有另一个的情况下启动。同时,另一个应该内置一些延迟加载逻辑(这将是您的工作),并在另一个自行上线时继续其启动顺序。

使用 OSGi 声明性服务,您可以声明对服务的依赖关系,但允许它在您要启动时不存在(使用基数选项执行此操作。)

关于OSGI + Spring-DM 交叉捆绑依赖死锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2240339/

相关文章:

java - 如何在后台线程中获取 ResourceResolver?

osgi - Karaf 4.1 - 如何在第三方 osgi jar 包中添加 DynamicImport-Package 标签?

hadoop - 是否可以从SpringDM应用程序连接到HBase?缺少com.sun.security.auth的约束!

java - OSGi环境下能否实现单例

Java OSGI。 Maven vs Eclipse+Ant - 最佳实践

java - UTF-8 不支持来自日志子系统的消息,Fuse ESB 4.4

java - 使用通用数据库包时找不到驱动程序

eclipse - 集成Eclipse RAP和OSGI/Spring-DM插件,使用Maven进行构建

java - Swing App 与 Spring DM 启动问题