2016-08-07 8 views
2

ich folgende deklarative Service haben:OSGI: Eigenschaftsinformationen von DS bekommen

@Component(
    immediate = false, 
    property={"propA=valueA","propB=valueB","propC=valueC"}, 
    scope=ServiceScope.SINGLETON 
) 
public class ServiceImpl implements ServiceI{...} 

und das ist der Code, den ich diesen Dienst finden tun (manuell) durch propA:

String filter = "(&(objectClass=" + ServiceI.class.getName() + ")(propA=valueA))"; 
ServiceReference[] serviceReferences = bundleContext.getServiceReferences((String)null,filter); 
ServiceI service=(ServiceI) bundleContext.getService(serviceReferences[0]); 

Wie kann ich Erhalten Sie valueB von propB und valueC von propC von gefundenen Service?

Antwort

4

Sie können die getProperty einer ServiceReference Instanz verwenden:

Object propBValue = serviceReference.getProperty("propB"); 
2

Slightly out of scope. Mit Anmerkungen würde der Code wie folgt aussehen:

@Reference(target="(propA=valueA)") 
void setI(ServiceI s, Map<String,Object> properties) { 
    String propB = properties.get("propB"); 
    String propC = properties.get("propC"); 
    ... 
} 
Verwandte Themen