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

Service 获取OSGI引用的服务规范和服务过滤器,service,reference,osgi,soa,ipojo,Service,Reference,Osgi,Soa,Ipojo,假设我有一个OSGI包,其中包含类X。假设这个类包含对特定服务的OSGI引用。大概是这样的: ServiceReference[] references = context.getServiceReferences (serviceSpecification,someFilter); System.out.println(references[0].getServiceSpecification); System.out.println(references[0].getServiceFilt

假设我有一个OSGI包,其中包含类X。假设这个类包含对特定服务的OSGI引用。大概是这样的:

ServiceReference[] references = context.getServiceReferences (serviceSpecification,someFilter);
System.out.println(references[0].getServiceSpecification);
System.out.println(references[0].getServiceFilter);
有没有一种方法可以动态地识别引用连接到的服务规范?是否有办法识别服务过滤器(上面的第二个参数)

例如,类似这样的内容:

ServiceReference[] references = context.getServiceReferences (serviceSpecification,someFilter);
System.out.println(references[0].getServiceSpecification);
System.out.println(references[0].getServiceFilter);
我需要在包之外的代码中找到这些值

到目前为止完成的工作:

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

ComponentInstance  componentInstance = factory.createComponentInstance(configuration);
instanceDescription= (PrimitiveInstanceDescription) componentInstance.getInstanceDescription();
PropertyDescription[] propertyDescription = instanceDescription.getProperties();
我可以使用上面的
propertyDescription
获取引用名称、类型和值,但该值作为对象返回,我无法获取所需的内容。有人能帮忙吗?谢谢。

请看。使用服务钩子,您可以钩住服务注册表操作并观察服务的查找