0

我有一个与我的问题有关的例子。(文件联合:https ://drive.google.com/file/d/0B8ThLrV6-uchaFlTZTNGQ1FnT1E/view?usp=sharing )

我有 3 个 ipojo 组件(3 个捆绑包):

  • CallHello 使用在 HelloDelay 或 HelloComponentReplace 中实现的 DelayService 服务

  • HelloDelay 和 HelloComponentReplace 使用在 HelloPrint 中实现的 HelloService 服务。

在部署时,我部署了 5 个捆绑包:

  • service.hello.service.jar

  • 打印机.hello.printer.jar

  • delay.hello.delay.jar

  • 替换.hello.replace.jar

  • call.hello.call.jar

结果:DelayService 始终使用 HelloDelay 中的实现。

最后,我运行 Main.java 来控制 HelloDelay 和 HelloComponentReplace 之间的手动选择。

  • 我在 Main.java 中实现了一个启动/停止或卸载/安装包的功能(并且效果很好)。但是,HelloDelay 或 HelloComponentReplace 都是有效的。

  • 如果两者都有效且有效,我在 iPOJO 网站上阅读,我可以使用“比较器”。但我不明白如何应用“比较器”来控制上述两个组件之间的选择。这是要改变优先级吗?我知道我们可以更改捆绑包的优先级,但我不知道如何应用到我的文件(Main.java)和 iPOJO。

  • 我们能否控制一个需求组件和许多提供组件(相同的服务或接口)之间的连接(绑定)?

我希望你能在这个时候帮助我的困难。

此致,

4

1 回答 1

0

您可以使用拦截器操作服务绑定:http: //felix.apache.org/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/service-binding-interceptors.html

使用拦截器,您可以隐藏服务和/或对服务提供者进行排序,以强制执行您要使用的提供者。

于 2014-11-05T19:42:08.640 回答