我有一个服务“A”这个服务将从其他11个组件中消耗掉。如果我通过osgi控制台检查所有可用的服务,我确实只看到一个实例,所有11个组件都使用此服务。
但由于一些奇怪的原因,我不明白,其中两个组件不使用相同的服务实例。如果我调试,我会看到两个不同的ID。怎么会发生这种情况? 我没有做任何提及here的事情。
我通过在eclipse中设置“此组件立即激活”来解决问题。但是当我红色here时,这不是此复选框的目的。因此,也许有人可以解释这是如何发生的,以及为什么在启用此功能后修复它。
答案 0 :(得分:2)
当您使用Declarative Services时,DS运行时可能会在某些情况下重新实例化您的服务,通常是因为它所依赖的某些服务已经出现/更改/删除,并且引用是静态的。检查使用服务A的所有站点是静态的,还是使用bind / unbind方法动态的。