【问题标题】:OSGI: getting property information from DSOSGI:从 DS 获取属性信息
【发布时间】:2016-08-07 16:47:24
【问题描述】:

我有以下声明式服务:

@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?

【问题讨论】:

    标签: java osgi declarative-services


    【解决方案1】:

    您可以使用ServiceReference 实例的getProperty

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

    【讨论】:

      【解决方案2】:

      略超出范围。带有注释的代码看起来像:

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

      【讨论】:

        猜你喜欢
        • 2014-05-15
        • 2014-05-27
        • 1970-01-01
        • 2016-11-21
        • 1970-01-01
        • 2019-07-16
        • 2015-03-14
        • 1970-01-01
        • 2012-06-27
        相关资源
        最近更新 更多