获取OSGI参考的服务规范和服务过滤器

时间:2014-05-20 12:33:52

标签: service reference osgi soa ipojo

假设我有一个包含类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获取引用名称,类型,值,但是该值作为对象返回,我无法得到我需要的内容。有人可以帮忙吗?感谢。

1 个答案:

答案 0 :(得分:1)

请查看Service Hooks。使用Service Hooks,您可以挂钩服务注册表操作并观察服务的发现。