Я только начал играть с сервисами OSGi и имею следующую ситуацию. У меня есть проект, который содержит 2 службы. Сервис A требует обслуживания B, поэтому я попытался ввести зависимую услугу, используяинъекция зависимости osgi между сервисами
@Inject
private ServiceB svc;
но структура не вводит. Если установка I следующие два метода в отслуживать и установить эти методы, как «связать/undbind» в моем OSGi componentA.xml рамки называет эти методы, и я могу использовать Service B в пакете A.
public synchronized void bind(IServiceB service)
{
this.svc = service;
}
public synchronized void unbind(IServiceB service)
{
if (this.svc == service)
{
this.svc = null;
}
}
Вопрос в том, почему он не работает с @Inject? Извините, если это глупый вопрос, я совершенно новый для всей этой темы. Спасибо заранее!
Привет, Нейл, спасибо за ответ. Я не упомянул об этом, но вы, конечно, правы, я использую DS. Не могли бы вы немного объяснить, что вы подразумеваете под «аннотациями для DS»? То, что я сделал до сих пор, генерирует компонент .xml и настраивает требуемую информацию с помощью редактора eclipse (так же, как редактор манифеста, всего несколько кликов для настройки интерфейса службы класса реализации). Спасибо заранее! – paddy3k
Итак, снова некоторые догадки предполагают, что вы используете Eclipse PDE (среда разработки плагинов)? Ой ой ой. Это вызовет у вас много боли в дороге. В PDE вы по существу не можете генерировать * ничего * и должны делать все это вручную. Взгляните на учебник bndtools (http://bndtools.org/tutorial.html), который должен дать представление об аннотациях конкретно, и в целом, как правильный инструмент может сделать вашу жизнь намного проще. –
Я использую Eclipse JEE Edition правильно. Спасибо за подсказку bndtools, я буду исследовать это дальше! Сначала я думал, что эти аннотации выходят «из коробки» OSGi. Я думаю, вопрос поставлен достаточно ясно и еще раз спасибо за это! – paddy3k