2014-10-09 4 views
1

регистрацию ManagedServiceFactory следующим образом может быть сделано: -ManagedServiceFactory с помощью Blueprint

private ServiceRegistration factoryService; 
public void start(BundleContext context) { 
    Dictionary props = new Hashtable(); 
    props.put("service.pid", "test.smssenderfactory"); 
    factoryService = context.registerService(ManagedServiceFactory.class.getName(), 
     new SmsSenderFactory(), props); 
} 

Как можно сделать это в Blueprint (образец примера будет весьма полезно)?

ответ

0

Apache aries имеет поддержку для управляемых служб. Вы можете найти примеры в интеграционных тестах плана Apache Aries по адресу https://svn.apache.org/repos/asf/aries/trunk/blueprint/blueprint-itests/src/test/resources/ManagedServiceFactoryTest.xml. В этом случае вы можете изменить код своего SMSSenderFactory, чтобы не реализовывать ManagedServiceFactory напрямую, как это делает проект для вас.

Вы также можете вставить свой код (который вы дали в качестве образца в свой вопрос) в init-метод вашего компонента, если это был ваш вопрос. В этом случае ManagedServiceFactory должен быть незарегистрирован в методе уничтожения компонента.

Третий вариант - оставить проект вне игры. У вас уже есть реализация ManagedServiceFactory, почему бы вам просто не зарегистрировать ее в Activator of Bundle?

Четвертый вариант заключается в использовании Declarative Services с одним из аннотаций. В этом случае также будет создана информация о метатипах, и вы можете настроить свой SMSSender через веб-консоль.

Предлагаю вам использовать последний вариант.