Priorytetyzacja wyboru usługi OSGi w kontenerze, gdy istnieje więcej niż jedna implementacja

Gram z OSGi i mam kilka pakietów. Oba pakiety A i B zawierają zarejestrowaną usługę, która implementuje pojedynczy interfejs. Trzeci pakiet C zawiera kod do wyszukiwania usługi implementującej wspomniany wcześniej interfejs. Pakiety A i B mają różne numery wersji, jednak wygląda na to, że C odbiera usługę od pierwszego uruchomionego pakietu. Zmieniłem poziom początkowy, aby zrobić właściwą rzecz, ale wersja jest używana tylko do akceptowania, a nie zamawiania, która usługa jest zwracana.

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

W powyższym przykładzie C zawsze pobiera usługę z A, nawet jeśli B ma wyższą wersję pakietu. Jeśli jednak przełączę poziom początkowy, więc B zaczyna się przed A, C widzi usługę B.

Przeszukałem stronę OSGi i nie ma jasnego wyjaśnienia, czy wersjonowanie pakietu jest używane do nadawania priorytetu usługom nad innymi. Moje zrozumienie wydaje się wskazywać, że poziom początkowy ma być używany do zamawiania uruchamiania pakietów, aby zależności mogły być poprawnie spełnione. Jednak wydaje się, że jest przeciążony, dlatego też priorytetem jest priorytet usługi. Biorąc pod uwagę powyższe, wydaje mi się, że nie ma sensu używać wersji pakietu w wyborze, ponieważ numer wersji jest tylko liczbą w stosunku do niczego.

Jaki jest najlepszy sposób nadania priorytetu jednej usłudze nad drugą, oprócz poziomu początkowego?

questionAnswers(3)

yourAnswerToTheQuestion