2014-11-05 5 views
0

У меня есть пример, связанный с моей проблемой. (Файлы сустав: https://drive.google.com/file/d/0B8ThLrV6-uchaFlTZTNGQ1FnT1E/view?usp=sharing)iPOJO и соединение между компонентом ipojo

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

  • 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.

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

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

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

ответ

0

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

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

+0

Благодарим вас за ответ. Могу ли я реализовать этот перехватчик в качестве независимого компонента, который управляет динамической обработкой привязки сервисов? Я прочитал вашу ссылку и примеры на веб-странице https: // github.com/apache/felix я не понимаю, как перехватчик может воздействовать на существующие пакеты (для изменений, требующих обслуживания пакета). С уважением, – HNT

+0

Перехватчики являются отдельными компонентами, поэтому их можно разрабатывать и развертывать независимо от приложения. Они нацеливают «сервисные зависимости», используя свое свойство «target». Это свойство является фильтром LDAP, определяющим зависимости, которые вы хотите обрабатывать. Например: (dependency.id = foo) выбирает зависимость с id foo, тогда как (dependency.specification = org.acme.Foo) выбирает все зависимости, требующие сервисного интерфейса org.acme.Foo. – Clement

Смежные вопросы