正如标题所示,我遇到了OSGI + Spring DM的问题。
在我的项目设计中,我有一个捆绑A需要服务svB并导出服务svA。 Bundle B需要svA并导出svB(当然还有其他东西)。这似乎导致了僵局,因为看起来两个捆绑包都在等待另一个上线。 Spring DM会出现这种僵局吗?有解决方案吗?
答案 0 :(得分:4)
这听起来不像是Spring-DM的问题,而是你为这个死锁做好准备:A取决于B,B取决于A,因此没有人可以完成任何工作。要突破这一点,您可能需要更改设计,并启用A或B中的任何一个而不启动另一个。与此同时,另一个应该有一些内置的延迟加载逻辑(这将是你的工作)并继续它的启动序列,当另一个自己上线时。
使用OSGi声明式服务,您可以声明对服务的依赖性,但允许它在您启动时不存在(使用基数选项执行此操作。)