Приоритизация выбора службы OSGi в контейнере, когда существует более одной реализации

Я играю с OSGi и у меня есть несколько пакетов. Пакеты A и B содержат зарегистрированный сервис, который реализует единый интерфейс. Третий пакет C включает в себя код для поиска службы, реализующей ранее упомянутый интерфейс. Пакеты A и B имеют разные номера версий, однако, похоже, что C выбирает службу из первого запущенного пакета. Я изменил начальный уровень, чтобы сделать правильные вещи, но версия используется только для принятия, а не для заказа, какой сервис возвращается.

   A version 1.0 start level 1
   B version 1.1 start level 2
   C requires both bundles, start level 3

В приведенном выше примере C всегда получает услугу от A, даже если B имеет более высокую версию пакета. Однако, если я переключаю начальный уровень, так что B запускается раньше, чем A, C видит сервис B.

Я искал веб-сайт OSGi, и нет четкого объяснения того, используется ли управление версиями пакета для определения приоритета службы над другой. Мое понимание, по-видимому, указывает на то, что начальный уровень должен использоваться для упорядочения запуска комплекта, чтобы зависимости могли быть правильно удовлетворены. Однако он, похоже, перегружен, поэтому он также отдает приоритет приоритету обслуживания. Учитывая все вышеизложенное, я думаю, что имеет смысл не использовать версию пакета в выделении, потому что номер версии - это просто число, относящееся к нулю.

Каков наилучший способ расставить приоритеты одного сервиса над другим, помимо начального уровня?

Ответы на вопрос(3)

Ваш ответ на вопрос