获取OSGI引用的服务规范和服务过滤器



假设我有一个包含类x的OSGI Bundle,假设这个类包含对特定服务的OSGI引用。像这样:

ServiceReference[] references = context.getServiceReferences (serviceSpecification,someFilter);

是否有一种方法可以动态地识别引用连接到的服务规范?是否还有一种方法可以标识服务过滤器(上面的第二个参数)?

例如:

System.out.println(references[0].getServiceSpecification);
System.out.println(references[0].getServiceFilter);

我需要在包外的代码中找到这些值。

已完成的工作:

我使用iPOJO通过创建bundle的iPOJO组件实例来获取引用属性,然后获取其属性描述,如下所示:

ComponentInstance  componentInstance = factory.createComponentInstance(configuration);
instanceDescription= (PrimitiveInstanceDescription) componentInstance.getInstanceDescription();
PropertyDescription[] propertyDescription = instanceDescription.getProperties();

我可以使用上面的propertyDescription获得引用名称,类型,值,但是值作为对象返回,并且我无法获得我需要的东西。有人能帮忙吗?谢谢。

请查看Service Hooks。使用服务挂钩,您可以挂钩到服务注册中心操作并观察服务的查找。

相关内容

  • 没有找到相关文章

最新更新