我有一个运行在 WebSphere v8.5(非自由配置文件)上的蓝图管理的 OSGI 应用程序,其中一个服务 Service_A 引用了另一个服务 Service_B。我希望 Service_B 由声明性服务服务组件运行时而不是蓝图容器管理,但仍然让 Service_A 被蓝图管理。
我相信我在让 SCR 运行时遇到了困难。我不确定我是否正确包含它,或者我如何检查它是否正在运行。我已经用一些打印语句在 Service_B 的实现中定义了“激活”和“停用”,据我了解,当 SCR 找到我理解的服务时,应该调用它们,但我很确定它们是没有被调用,因为断点不会停在那里,我在控制台中看不到任何输出。
到目前为止,我为包含运行时所做的努力如下:
据我了解,以下三个 jars/bundle 就是运行 SCR 所需要的。
- org.eclipse.equinox.ds
- org.eclipse.equinox.util
- org.eclipse.osgi.services
我继续创建了一个包含所有上述 jar 文件的新 OSGI 包/jar,然后在这个新包中传递每个 jar 的导出。然后,我将此 DS 包添加到我的主 OSGI 应用程序中,并将这些 DS 包导出中的每一个导入到包含将由 SCR 管理的服务的包中。
这是我似乎被挂断的地方:
OSGI 框架正在加载包含该服务的包,但该服务未添加到注册表中,这表明未读取定义该服务的 component.xml 文件,这表明 SCR 未运行,因为它据我了解,是读取该文件的内容。
所以仍然坚持让 SCR 运行的能力。非常感谢任何和所有帮助!我的截止日期非常紧迫(我知道......谁错了?:))并且欢迎所有帮助!谢谢!