我如何在 OSGI 中调用另一个服务

How can i call service from another in OSGI

我开始开发一个 OSGI 包基础应用程序。我创建了一个 bundle A,它使用 bundle B 的服务,而它又必须使用 bundle C 的服务。

但我看不到如何在另一个代码中获取服务。 servicetracker 需要 bundlecontext 而我的服务代码中没有 bundlecontext。

提前致谢,

在您的服务 B 代码中,您应该有一个 setter 用于服务 C 的接口。

然后您从捆绑包 B 中的捆绑激活器启动 ServiceTracker。添加服务 C 时,您创建服务 B,当它被删除时,您将其删除。

如果您不想手动执行此操作,您可以查看声明式服务、蓝图或 ipojo。所有这些都由您以声明方式指定这些依赖项。