【问题标题】:OSGi Declarative Service - obtain ServiceReference in bind methodOSGi 声明式服务 - 在绑定方法中获取 ServiceReference
【发布时间】:2011-11-16 03:34:10
【问题描述】:

我正在使用带有 Eclipse Gemini JPA / DBAccess 的 Eclipse 3.7。我实现了一个引用 EntityManagerBuilderFactory 的声明性 ServiceComponent。绑定方法如下所示:

public void bindEntityManagerFactoryBuilder(EntityManagerFactoryBuilder emfBuilder) {
    emfFactoryBuilders.add(emfBuilder);
}

但是我需要 ServiceReference 来获取该服务的属性,例如:

    ServiceReference ref = ...
    String unitName = (String)ref.getProperty(EntityManagerFactoryBuilder.JPA_UNIT_NAME);

我是否必须在 ServiceRegistry 中搜索此 ServiceReference,还是有更优雅的方法?

干杯, 渚

【问题讨论】:

    标签: eclipse osgi bind service-reference declarative-services


    【解决方案1】:

    如果您想访问 ServiceReference 对象,您可以使用这种方式(1.0 和 1.1 DS 都支持):

    public void bindEntityManagerFactoryBuilder(ServiceReference reference)
    

    【讨论】:

      【解决方案2】:

      如果您使用的是声明式服务 1.1(最新规范版本),您可以将绑定方法的签名更改为:

      public void bindEntityManagerFactoryBuilder(EntityManagerFactoryBuilder emfBuilder, Map properties)
      

      地图将包含绑定服务的服务属性。

      【讨论】:

        猜你喜欢
        • 2011-10-14
        • 1970-01-01
        • 2019-08-05
        • 2018-05-20
        • 2010-09-23
        • 1970-01-01
        • 2012-11-07
        • 2012-04-27
        • 2011-12-02
        相关资源
        最近更新 更多