OSGi декларативные службы или ManagedService для настройки службы? - PullRequest
11 голосов
/ 28 октября 2010

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

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

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

Один из этих методов предпочтительнее другого или есть другие компромиссы, которые я не вижу?

Ответы [ 2 ]

13 голосов
/ 09 ноября 2010

Да, вы можете полностью игнорировать ManagedService и ManagedServiceFactory и просто использовать компоненты декларативных служб.И да, я бы порекомендовал этот подход.

Просто подумайте об этом как о разных уровнях абстракции.MS / MSF - это низкоуровневый API для администратора конфигурации, и он доступен, даже если у вас не запущен пакет DS.Преимущество этого состоит в том, что вы можете писать настраиваемые сервисы без зависимости от DS, что может быть желательно для определенных компонентов «системного уровня».

Однако, если вы довольны зависимостью от DS, например, для «приложения»уровня ", тогда использование встроенной интеграции DS с config admin сделает вашу жизнь намного проще.

0 голосов
/ 06 сентября 2012

пара примеров построения декларативных сервисов фабрик:

1) через config admin : carrot-osgi-scr-factory-cm

2) через фабрику компонентов : carrot-osgi-scr-factory-ds

взгляните на тесты для вариантов использования;

...