正如标题所暗示的,我在使用OSGI + Spring DM时遇到了问题。
在我的项目设计中,我有一个需要服务svB并导出服务svA的包A。包B需要svA并导出svB (当然还有其他东西)。这似乎导致了一个死锁,因为似乎两个捆绑包都在等待对方上线。Spring DM会出现这种死锁吗?对此有解决方案吗?
发布于 2010-02-12 23:12:10
这听起来不像Spring-DM的问题,相反,您已经将自己设置为这种死锁:A依赖于B,B依赖于A,因此没有人能完成任何工作。要突破这一点,您可能需要更改您的设计,并允许A或B中的任何一个在没有另一个的情况下启动。同时,另一个应该内置一些延迟加载逻辑(这将是你的工作),并在另一个已经上线时继续它的启动序列。
使用OSGi声明式服务,您可以声明服务上的依赖项,但允许它在您将要启动时不存在(使用cardinality选项完成此操作)。
https://stackoverflow.com/questions/2240339
复制相似问题