Mam problem z wykryciem usług dostarczanych przez niektóre pakiety OSGi, które nie są aktywowane. Opiszę sytuację:Nie można znaleźć usługi, ponieważ pakiet OSGi nie jest aktywny.
- Bundle A określa interfejs X
- Wiązki B, C i D świadczenia usług, które implementują interfejs X
- usług Pakiety te są zarejestrowanymi przez wiosennym DM, więc są tworzone tylko wtedy, gdy pakiet jest aktywny i wiosna DM inicjowana kontekstu aplikacji zdefiniowaną w wiązce
- Bundle a jest aktywnym i w pewnym momencie pyta rejestru usług dla usług dla interfejsu X. Doe nie znajduje żadnego, ponieważ paczki B, C i D nie zostały przeniesione do stanu AKTYWNEGO (są ROZWIĄZANE).
Nie wydaje mi się, żebym mógł rozpocząć pakunki B, C lub D, a zatem zarejestrować swoje usługi. Zmuszanie ich do rozpoczęcia przez dodanie ich do config.ini
nie jest opcją, ponieważ może istnieć dowolna liczba pakietów zainstalowanych w aplikacji (za pośrednictwem mechanizmu aktualizacji podobnego do p2 Eclipse), które implementują interfejs X.
Aplikacja jest aplikacją RCP opartą na Eclipse 3.5, używając Spring 2.5.6 i Spring DM 1.2.1.
Jak wymusić aktywację tych pakietów?
Czy możesz podać informacje na temat otrzymywanych komunikatów o błędach? I: Pakiet A eksportuje interfejs X, a Pakiet B, C, D zaimportuje go, prawda? – akr
Tak, interfejs X jest eksportowany przez pakiet A i importowany przez B, C i D. Nie ma żadnych komunikatów o błędach. Zapytanie o usługi implementujące X w rejestrze usług zwraca po prostu pustą listę. –
Jaka jest liczność, o którą prosisz w "A"? Jeśli jest to '1..N', masz zależność cykliczną. –