我在发现某些未激活的 OSGi 捆绑包提供的服务时遇到问题。让我描述一下情况:
- Bundle A 定义了接口 X
- Bundle B、C 和 D 提供实现接口 X 的服务
- 这些包的服务是通过 Spring DM 注册的,因此它们仅在包被激活并且 Spring DM 初始化包中定义的应用程序上下文时创建
- Bundle A 被激活,并且在某些时候向服务注册中心询问接口 X 的服务。它没有找到任何服务,因为 bundle B、C 和 D 尚未进入 ACTIVE 状态(它们只是 RESOLVED)。
我似乎无法启动捆绑包 B、C 或 D,因此无法注册它们的服务。不能通过将它们添加到来强制它们开始config.ini
,因为可以在应用程序中安装任意数量的包(通过类似 Eclipse p2 的更新机制)实现接口 X。
该应用程序是基于 Eclipse 3.5 的 RCP 应用程序,使用 Spring 2.5.6 和 Spring DM 1.2.1。
如何强制激活这些捆绑包?