Декларативные сервисы OSGi / Felix: Как отфильтровать сервисы, которые нужно связать?

StackOverflow https://stackoverflow.com/questions/308813

Вопрос

Я использую Apache Felix и его декларативные службы (SCR) для связи сервисных зависимостей между пакетами.

Например, если мне нужен доступ к java.util.Dictionary, я могу сказать следующее, чтобы SCR предоставил один:

/**
* @scr.reference name=properties interface=java.util.Dictionary
*/

protected void bindProperties(Dictionary d) {
}

protected void unbindProperties(Dictionary d) {
}

Теперь у меня есть более одной службы словаря, и я хочу отфильтровать их, используя " имя " свойство службы (я хочу только " name = myDictionary "). Я могу сделать это с помощью кода (используя ServiceTracker), но вместо этого я бы лучше указал фильтр в аннотации @scr.

Это было полезно?

Решение

я думаю

target="(name=myDictionary)"

должен добиться цели в аннотации @ scr.reference . См. http://felix.apache.org/site/apache -felix-Maven-И-plugin.html

Другие советы

В стандартном DS вы можете использовать целевой атрибут ссылочного элемента. В мире Феликса, где можно использовать аннотации, я не знаю, что такое эквивалент.

Целевой атрибут - это фильтр LDAP, который сопоставляется со свойствами службы. Итак, ваш фильтр должен быть:

<код> (Имя = MyDictionary)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top