OSGi DS: метод Omit unbind с аннотацией Felix SCR @Reference - PullRequest
1 голос
/ 28 июля 2011

Декларативным службам OSGi явно разрешено иметь метод bind без соответствующего метода unbind для ссылки, потому что «Как только конфигурация компонента деактивирована, SCR должен отбросить все ссылки на экземпляр компонента и контекст компонента, связанный с активацией».

Я использую подключаемый модуль Apache Felix maven-scr-plugin для создания XML-компонента моего сервиса из аннотаций Java5.Если я опущу атрибут «unbind» в аннотации @Reference, то получу следующую ошибку:

[ERROR] @Reference: Missing method unbind for reference configuration at Java annotations in <classname>:<linenum>

Почему генератор SCR такой строгий?Есть ли способ сказать это терпеть пропущенный метод unbind?Возможно, мне нужно зарегистрировать дефект в Felix?

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

Ответы [ 3 ]

3 голосов
/ 28 июля 2011

Текст, который вы цитируете (112.5.13 compendium v4.2), не имеет прямого отношения к отмене привязки, это относится к деактивации, что, в свою очередь, требует отмены привязки. Далее в спецификации (112.5.15) говорится: «Для каждой ссылки, использующей стратегию события, метод unbind должен вызываться для каждой связанной службы этой ссылки».

РЕДАКТИРОВАТЬ Игнорировать выше, см. Комментарии ниже. В текущей версии Felix SCR «generateAccessors» включен по умолчанию, и вам определенно не нужно писать методы bind / unbind. В IIRC в июле 2011 года это было не так.

1 голос
/ 30 августа 2016

Если вы используете стандартные DS-аннотации из спецификации, bnd сгенерирует XML, и вам даже не понадобится отдельный плагин Maven.

Кстати, вы ДОЛЖНЫ всегда иметь метод отмены привязки, если ссылочная политика является динамической - даже если количество элементов обязательно, потому что вам, возможно, придется обрабатывать динамические повторные привязки. В этом случае bnd выдаст предупреждение, а не ошибку.

Метод отмены привязки совершенно не нужен, если ссылочная политика является статической. В этом случае экземпляр компонента ДОЛЖЕН быть уничтожен, поэтому вы можете выполнить очистку методом деактивации.

0 голосов
/ 11 января 2013

Bnd также генерирует DS XML из аннотаций и не имеет этого ограничения.

...