我的基于Java的项目当前正在OSGi容器中运行,其中的其他项目将注册他们的OSGi服务供其他人使用。如果我知道一个服务目前注册的,我可以简单查询,与“BundleContext的”内置方法:如何获取所有当前注册的OSGi服务的列表?
getContext().getServiceReference(LogService.class.getName());
不过,我希望能够查询在该上下文中注册的所有OSGi服务时刻。我查看了BundleContext
的可用方法,但找不到符合我需求的任何内容。我并没有真正使用注册服务列表来使用服务对象,而只是简单地获取注册服务的名称;我不相信这会违反OSGi原则。
编辑:我没有在我的开发环境中使用Eclipse或Equinox。
编辑:如果访问OSGi服务是不可能的,或不推荐使用Java,我会打开只通过命令行注册服务,如果可能的话。
https://stackoverflow.com/questions/11848839/is-there-a-way-to-view-registered-services-in-an-osgi-application –
@spaniard的可能重复我会更新我的问题,包括我不使用Equinox(或Eclipse) – fojalar
如果您使用Gogo:'$ allservicereferences null null'。如果你使用它,你可以使用别名:'as = {allservicereferences null null}'。然后输入'as'即可。如果你想找到一个特定的服务,你当然也可以通过'grep'管道:'$ as | grep包'。 –