Декларативная служба должна быть дорогой.
Вы можете объявить свой интерфейс как сервис
<service>
<provide interface="my.Interface"/>
<property name="foo" value="bar"
</service>
Каждая реализация этого интерфейса может определять методы активации и деактивации Bundle.
Но что действительно приятно, так это их природа: если вы используете последнюю версию SCR («Среда выполнения компонента службы», которая представляет собой «пакет расширения», реализующий новую и улучшенную OSGi R4.2 DS - декларативную службу - спецификацию), ваши классы будут ничего не импортировать из модели OSGI. Они остаются чистыми POJO.
Затем определите другой сервис, который зависит от вашего первого сервиса:
<reference name="myInterfaceServiceName"
interface="my.Interface"
bind="myActivationMethod" unbind="myDeactivationMethod"
cardinality="0..n"/>
Этот сервис будет обнаруживать и перечислять все ваши конкретные экземпляры вашего первого сервиса и обрабатывать их, как вы намереваетесь.
Подробнее см. Вопрос Расширения и декларативные службы Eclipse .
Презентация:
Компонентно-ориентированная разработка в OSGi с декларативными сервисами, Spring Dynamic Modules и Apache iPOJO , из EclipseCON2009, предоставит вам конкретный пример.