如何让消费者选择特定的3方提供商

时间:2015-12-08 23:59:09

标签: java osgi declarative-services

下面的场景可能是一个很好的osgi实现?

我有一个通用算法,它分为多个模块。我们的想法是,每个模块都可以由具有特定配置需求的第三方进行扩展。我的主要算法由用户主要配置,以选择要包含的模块。由于这个配置文件很难编写,我想创建一个帮助他做到这一点的工作台。

我的第一个想法是将我的主要算法视为使用DS的多个模块提供者的消费者。用例是:用户配置主算法和他想要使用的子模块;然后,当他运行算法时,我希望工作台创建具有良好配置的主算法服务。但是,如果我理解,osgi中的服务被设计为独立于提供者。服务对我来说有用吗?

1 个答案:

答案 0 :(得分:0)

按照你刚才描述的方式做你想要的事情会给你带来很多心痛和问题。相反,我建议你使用更实际的方法:

  • 定义捆绑包中定义算法扩展方式的接口
  • 使用OSGi的服务层来收集接口的实现(DS可以帮助您)
  • 有一个配置类/对象,用于定义为特定实例选择/激活以上哪些内容
  • 执行算法时,从服务层查找必要的服务并使用它们。

另外,如果您打算使用完整的工作台,可以直接使用有助于协调的扩展点和扩展点。