2015-05-25 4 views
6

Я использую декларативные услуги Apache Felix в своем приложении, и я ищу чит-лист, который описывает параметры, которые можно дать аннотации @Reference. Однажды я увидел веб-страницу, в которой содержался очень информативный обманщик (или стол) об этом, но я не могу найти его. Я думаю, что это было бы полезно для многих пользователей Felix. Параметры, которые я говорю о:Apache Felix SCR @Reference cheatsheet

  • мощности: MANDATORY_UNARY, MANDATORY_MULTIPLE, OPTIONAL_UNARY, OPTIONAL_MULTIPLE
  • стратегии: EVENT, LOOKUP
  • политики: DYNAMIC, STATIC
  • policyOption: GREEDY, RELUCTANT

мощность довольно проста, но другие мне не понятны. Что они делают и как они работают?

ответ

5

с официального OSGI R5 Compendium Spec страница 281ff.

Ссылка Cardinality

Мощность для ссылки может быть указана в качестве одного из четырех вариантов:

  • 0..1 - Необязательный и одноместный.
  • 1..1 - Обязательный и унарный (по умолчанию).
  • 0..n - Опционально и несколько.
  • 1..n - Обязательный и множественный.

Стратегия

  • стратегия Event - SCR вызывает метод экземпляра компонента, когда услуга становится связанной, когда услуга становится несвязанным, или когда его свойства обновляются. Этими методами являются методы связывания, обновления и отмены привязки , указанные в ссылке. Стратегия события полезна, если компонент должен быть уведомлен об изменениях связанных служб для динамической ссылки.
  • Стратегия поиска - Экземпляр компонента может использовать один из методов locateService ComponentContext , чтобы найти связанный сервис. Эти методы берут имя ссылки в качестве параметра. Если ссылка имеет динамическую политику, важно не хранить возвращенный объект , но искать его каждый раз, когда это необходимо.

Политика

  • статическая политика самая простая политика и политика по умолчанию.Экземпляр компонента никогда не видит никакой динамики. Конфигурации компонентов деактивируются до того, как какая-либо связанная служба для ссылки, статическая политика станет недоступной. Если целевая услуга доступна для замены связанной услуги, которая стала недоступной, конфигурация компонента должна быть активирована и привязана к службе замены.

  • Динамическая политика немного сложнее, поскольку реализация компонента должным образом обрабатывает изменения в наборе связанных служб, которые могут возникать в любом потоке. С динамической политикой SCR может изменять набор связанных служб без деактивации конфигурации компонента. Если компонент использует стратегию событий для доступа к службам, то экземпляр компонента будет уведомлен об изменениях в наборе связанных сервисов вызовами привязки и отменить методы.

Выбор политики

  • неохотно - Минимизация переприсваивания и реактивируя.
  • жадный - Максимизируйте использование наилучшего сервиса путем деактивации статических ссылок или восстановления динамических ссылок.

другой Феликс конкретные ресурсы

[Felic SCR Аннотация] (http://felix.apache.org/documentation/subprojects/apache-felix-maven-scr-plugin/scr-annotations.html)

+0

Пожалуйста, воздержитесь от размещения ссылки только ответов. –

+0

Спасибо, upvoted. –

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