我有一个OSGi应用程序运行的春分。 我想看到由应用程序提供的服务。 我怎样才能做到这一点?
Answer 1:
这取决于你是否从你的应用程序交互的意思,使用OSGi的外壳,或编程。
交互式
您可以使用春分控制台 。 请参见“服务”。 只看到你已经部署了该项服务,您需要使用LDAP过滤器。 下面是一个例子:
(objectClass=my.package.name.*)
另见@Neil巴特利特的答案,可能会更容易,你可以仅仅通过约束捆绑ID(假设你知道它,但是这是很容易找到)。
编程方式
使用ServiceTracker的方法。 尼尔还写了所有关于这个 ,所以一定要确保给他你的upvotes太:)
Answer 2:
从GOGO外壳类型:
inspect cap service
这将显示所有捆绑注册的所有服务。 如果你想显示具体的捆绑服务,然后键入:
inspect cap service <id>
其中<id>
是你感兴趣的包的数字组合编号。
Answer 3:
到目前为止,我远远的意思是, 看到自己的服务和数以千计的详细叙述最好的办法是使用Apache的菲利克斯Web控制台 ,然后在安装的X射线 。 你可能想读我的第一个和第二个博客有关此包。
Answer 4:
如果你正在寻找刚刚启动已注册,但尚未开始,并希望动态地启动它特定的服务,您可以用得到的包:
Bundle bundle = Platform.getBundle("com.example.com.class");
//然后启动束
bundle.start();
//检查服务引用
ServiceReference<IExampleService> serviceReference = b.getBundleContext().getServiceReference(IExampleService.class);
Answer 5:
按照[API文档] [1]你可以调用getContext().getAllServiceReferences(clazz, filter)
方法来获得特定的类别下共立案匹配指定过滤器表达式的所有服务的列表。 传递null
两个参数将得到所有服务。
文章来源: is there a way to view registered services in an OSGi application?