OSGI:从 DS 获取 属性 信息
OSGI: getting property information from DS
我有以下声明式服务:
@Component(
immediate = false,
property={"propA=valueA","propB=valueB","propC=valueC"},
scope=ServiceScope.SINGLETON
)
public class ServiceImpl implements ServiceI{...}
这是我通过 propA(手动)找到此服务的代码:
String filter = "(&(objectClass=" + ServiceI.class.getName() + ")(propA=valueA))";
ServiceReference[] serviceReferences = bundleContext.getServiceReferences((String)null,filter);
ServiceI service=(ServiceI) bundleContext.getService(serviceReferences[0]);
如何获取找到的服务的 propB 的 valueB 和 propC 的 valueC?
您可以使用 ServiceReference
实例的 getProperty
:
Object propBValue = serviceReference.getProperty("propB");
稍微超出范围。带有注释的代码如下所示:
@Reference(target="(propA=valueA)")
void setI(ServiceI s, Map<String,Object> properties) {
String propB = properties.get("propB");
String propC = properties.get("propC");
...
}
我有以下声明式服务:
@Component(
immediate = false,
property={"propA=valueA","propB=valueB","propC=valueC"},
scope=ServiceScope.SINGLETON
)
public class ServiceImpl implements ServiceI{...}
这是我通过 propA(手动)找到此服务的代码:
String filter = "(&(objectClass=" + ServiceI.class.getName() + ")(propA=valueA))";
ServiceReference[] serviceReferences = bundleContext.getServiceReferences((String)null,filter);
ServiceI service=(ServiceI) bundleContext.getService(serviceReferences[0]);
如何获取找到的服务的 propB 的 valueB 和 propC 的 valueC?
您可以使用 ServiceReference
实例的 getProperty
:
Object propBValue = serviceReference.getProperty("propB");
稍微超出范围。带有注释的代码如下所示:
@Reference(target="(propA=valueA)")
void setI(ServiceI s, Map<String,Object> properties) {
String propB = properties.get("propB");
String propC = properties.get("propC");
...
}