2010-02-10 47 views
2

正如标题所示,我遇到了OSGI + Spring DM的问题。OSGI + Spring-DM交叉绑定依赖性死锁

在我的项目设计中,我有一个需要服务svB并导出服务svA的包A. Bundle B需要svA并输出svB(当然还有其他的东西)。这似乎正在造成僵局,因为看起来这两个捆绑正在等待另一个上线。 Spring DM可能会出现这种僵局吗?有针对这个的解决方法吗?

回答

4

这听起来不像是Spring-DM的问题,而是你为自己的僵局而设置的:A依赖于B,B依赖于A,因此没有人可以完成任何工作。为了突破这个问题,你可能需要改变你的设计,并且启用A或B中的任何一个而不用另一个。同时,另一个应该有一些内置的延迟加载逻辑(这将是你的工作),并继续它的启动顺序,当另一个自己上线时。

使用OSGi声明性服务,你可以声明对服务的依赖,但允许它是在你将要开始的时间不存在(此使用基数选项做。)

+0

原来,这正是我昨天是如何处理这个问题的。我会在这里发布解决方案,但你打败了我。不管怎么说,多谢拉! =) – 2010-02-13 22:15:54