Ссылка на декларативную услугу по Карафу посредством аннотаций - PullRequest
0 голосов
/ 26 июня 2018

Мне не удается правильно сослаться на интерфейс службы с помощью аннотации @Reference.

public class TestServiceProcessor implements Processor {

  @Reference
  private TestService testService;

Служба запущена и работает в экземпляре Karaf, и я могу сослаться на него с файлом чертежа, который работает нормально.

 <bean id="translateOIDs"
 class="com.test.TestServiceProcessor">
 <property name="TestService" ref="testservice" />
 </bean>

 <reference id="testservice"
 interface="com.test.TestService"/>

Служба настроена с аннотациями компонентов OSGI.

Я уже установил функцию scr и camel-scr на Karaf. Я пытался использовать стратегию поля, а также стратегию соревнований.

Нужно ли дополнительно настраивать экземпляр Karaf или я неправильно использую аннотацию @Reference?

1 Ответ

0 голосов
/ 26 июня 2018

Сначала вам нужно установить функцию scr для включения декларативных сервисов. Я предполагаю, что вы имеете в виду это с функцией "src".

Кроме этого @Reference работает только в компонентах DS. Таким образом, ваш класс TestServiceProcessor должен быть аннотирован @Component ... но тогда он не может быть использован в проекте. DS и проект являются взаимоисключающими.

Вместо этого вы можете использовать http://aries.apache.org/modules/blueprint-maven-plugin.html.

В этом случае вам нужно аннотировать класс компонента с помощью @Named и делать инъекцию с помощью @Inject. Затем вы можете также ссылаться на аннотированные компоненты из обычного контекста проекта по их идентификатору, который можно установить с помощью @Named ("yourid").

...