Я использую структуру SCR на платформе OSGI felix для ввода ссылок на службы в моих Компонентах. Это отлично работает, за исключением дополнительных зависимостей. Так что, если у меня есть два компонента Foo и Bar, где Foo приведен ниже:Необязательные зависимости в OSGI SCR framework
@Component
public class FooImpl implements Foo {
Log log = LogFactory.getLog(this.getClass());
@Reference(cardinality=ReferenceCardinality.OPTIONAL_UNARY)
Bar bar;
public void bindBar(Bar bar) {
log.info("bar bound: "+bar);
}
public void unbindBar(Bar map) {
log.info("bar unbound: "+bar);
}
@override
public void fooHello() {
log.info("Hello, this is an implementation of Foo");
}
}
это работает, пока пучок, определяющий интерфейс Бара развертывается в моей OSGi платформе. Если в платформе не задействован компонент реализации Bar, SCR по-прежнему счастлив и активирует мой компонент FooImpl, конечно, без ссылки на любую реализацию Bar. Однако, если интерфейс Bar не развертывается на платформе, SCR падает во время активации моего компонента, вероятно, из-за исключения из проверки моего компонента через отражение, но я не мог определить это окончательно.
Итак, есть ли способ развертывания пакета OSGI с дополнительными зависимостями, которых нет в платформе, которые включают компоненты SCR, которые имеют необязательные ссылки на интерфейсы, исходящие из этих дополнительных зависимостей OSGi?
«Аварии SCR» << Я очень сомневаюсь в этом! Что на самом деле происходит? –