2008-11-21 4 views
4

Я использую Apache Felix и его декларативные услуги (SCR) для подключения зависимостей между пакетами.Декларативные услуги OSGi/Felix: как фильтровать связанные услуги?

Например, если мне нужен доступ к 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.

ответ

1

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

Атрибут target - это фильтр LDAP, который соответствует свойствам службы. Таким образом, ваш фильтр должен быть:

(name=myDictionary)

+1

Я думаю, что target = "(name = myDictionary)" должен сделать трюк в аннотации @ scr.reference. См. Http://felix.apache.org/site/apache-felix-maven-scr-plugin.html. – 2008-12-11 00:06:45