有没有办法在OSGi应用程序中查看注册的服务?

use*_*930 13 service osgi list

有一个运行Equinox的OSGi应用程序.我想看看应用程序提供的服务.我怎样才能做到这一点?

Nei*_*ett 14

来自gogo shell类型:

inspect cap service
Run Code Online (Sandbox Code Playgroud)

这将显示所有捆绑包注册的所有服务.如果要显示特定包的服务,请键入:

inspect cap service <id>
Run Code Online (Sandbox Code Playgroud)

<id>您感兴趣的软件包的数字包ID 在哪里.


Dan*_*ell 13

这取决于您是指交互式,使用OSGi shell还是以编程方式从您的应用程序.

交互式

您可以使用Equinox控制台.见'服务'.要仅查看已部署的服务,您需要使用LDAP过滤器.这是一个例子:

(objectClass=my.package.name.*)
Run Code Online (Sandbox Code Playgroud)

另请参阅@Neil Bartlett的答案,这可能更容易,因为您可以通过捆绑ID进行约束(假设您知道它,但这很容易找到).

编程方式

使用ServiceTracker方法.尼尔也写了所有这些,所以一定要给他你的赞成:)