OSGi:如何找出哪些包正在使用我正在导出的服务?

OSGi: How to find out what bundles are using a services I'm exporting?

我正在尝试获取捆绑包列表,这些捆绑包正在导入我的捆绑包正在导出的服务(我找不到获取其他捆绑包清单的方法)或获取订阅服务的捆绑包列表我的捆绑包正在发布。

到目前为止,我正在尝试列出其他捆绑包正在使用的所有 ServiceReferences 以查看它们是否正在使用我的,但没有成功。

谢谢。

使用注册服务的ServiceReference,您可以调用getUsingBundles 方法找到当前正在使用该服务的bundle。

您也可以试试这个(在 OSGi 控制台中):

install http://downloads.skysail.io/skysail-webconsole/webconsole.all.jar
start <id of the new bundle>

在浏览器中打开 http://localhost:2002 并导航至 "Services" 单击有问题的服务 检查“服务详细信息”页面的 "Using Bundles" 行

请注意,该项目 (https://github.com/evandor/skysail-webconsole) 目前只是概念验证。但它可能已经对某些用例有用。

(顺便说一句,我很高兴收到任何反馈;)