OSGi服务:请求捆绑包/组件的引用服务

OSGi服务:请求捆绑包/组件的引用服务,osgi,osgi-bundle,declarative-services,Osgi,Osgi Bundle,Declarative Services,我目前正在为OSGi服务“挣扎”,或者更具体地说,为服务之间的连接而挣扎。我了解DS、SCR的基本知识以及组件实例获取服务的一般策略。无论如何,我的问题是: 在DS之后,组件在XML文件中声明其提供和使用的服务。在我的例子中,我感兴趣的是特定组件的“消费/引用”服务,这些服务由组件XML文件中的“Reference”标记声明 例如考虑一个运行的OSGi应用程序:一组基于服务DS相互协作的捆绑包。现在,我想选择一个特定的包,并查询它对它可能使用的服务的所有引用,不管这些服务当前是否可用 参考Apa

我目前正在为OSGi服务“挣扎”,或者更具体地说,为服务之间的连接而挣扎。我了解DS、SCR的基本知识以及组件实例获取服务的一般策略。无论如何,我的问题是:

在DS之后,组件在XML文件中声明其提供和使用的服务。在我的例子中,我感兴趣的是特定组件的“消费/引用”服务,这些服务由组件XML文件中的“Reference”标记声明

例如考虑一个运行的OSGi应用程序:一组基于服务DS相互协作的捆绑包。现在,我想选择一个特定的包,并查询它对它可能使用的服务的所有引用,不管这些服务当前是否可用

参考ApacheFelixGogoShell命令,如inspect requirements*,我确实获得了有关导入包等的信息,但没有获得有关已使用服务的完整概述->当前已使用的服务和组件正在等待的服务

我已经读过框架API,它提供了服务注册、修改和注销方面的细节,但显然,它没有提供关于服务包正在等待什么的信息。遵循OSGi核心规范,这可以通过侦听器挂钩实现

是否有一种方法,我可以通过查询(例如SCR)来获取特定捆绑包的所有引用服务?显然,SCR应该读取捆绑包的服务组件XML文件,并“注册”某种“服务跟踪器”来跟踪消费/引用的服务——因此捆绑包的消费/引用服务的信息应该以某种方式可用,不是吗

如果你能帮我做这件事就太好了

谢谢,
Don

查看Peter Kriens的X光片。

这正是我要找的信息。我来看看代码,谢谢。然而,正如我在上面提到的问题中所假设的,似乎没有一种方法,我可以通过查询(例如)SCR来获取特定捆绑包的所有引用服务,对吗?DS规范还没有提供这样一个自省API。建议在下一版本中添加一个。ApacheFelixDS实现有自己的特定于实现的内省API,这就是xray所使用的。