iPOJO и связь между компонентом ipojo

У меня есть пример, касающийся моей проблемы. (файлы объединены: https://drive.google.com/file/d/0B8ThLrV6-uchaFlTZTNGQ1FnT1E/view?usp=sharing)

У меня есть 3 компонента ipojo (3 куска):

  • CallHello использует сервис DelayService, который реализован как в HelloDelay, так и в HelloComponentReplace.

  • HelloDelay и HelloComponentReplace используют сервис HelloService, который реализован в HelloPrint.

При развертывании я развертываю 5 пакетов:

  • service.hello.service.jar

  • printer.hello.printer.jar

  • delay.hello.delay.jar

  • replace.hello.replace.jar

  • call.hello.call.jar

Результат: DelayService всегда использует реализацию в HelloDelay.

Наконец, я запускаю Main.java для управления выбором между HelloDelay и HelloComponentReplace вручную.

  • Я реализовал функцию запуска / остановки или удаления / установки пакетов в Main.java (и она работает хорошо). Однако допустимы либо HelloDelay, либо HelloComponentReplace.

  • В случае, если оба активны и действительны, я читаю на сайте iPOJO, и я могу использовать "компаратор". Но я не понимаю, как применить "компаратор" для контроля выбора между двумя компонентами выше. Это чтобы изменить приоритет? Я знаю, что мы можем изменить приоритет пакета, но я не знаю, как подать заявку на мой файл (Main.java) и iPOJO.

  • Можем ли мы контролировать связь (связывание) между требуемым компонентом и множеством предоставляющих компонентов (один и тот же сервис или интерфейс)?

Я надеюсь, что вы могли бы помочь моей трудности в этот раз.

С наилучшими пожеланиями,

1 ответ

Вы можете управлять связыванием службы, используя перехватчики: http://felix.apache.org/documentation/subprojects/apache-felix-ipojo/apache-felix-ipojo-userguide/ipojo-advanced-topics/service-binding-interceptors.html

С помощью перехватчиков вы можете скрыть службы и / или отсортировать поставщиков услуг, чтобы обеспечить работу поставщика, которого вы хотите использовать.

Другие вопросы по тегам