/ / Programové použitie komponentov v OSGi - java, komponenty, osgi, deklaratívne služby

Programovanie pomocou komponentov v OSGi - java, komponenty, osgi, deklaratívne služby

V mojej aplikácii je použitie služieb samo o sebe dosť zbytočné. Aby bola služba použiteľná, vždy potrebujete nejaké informácie o externej konfigurácii.

Komponenty spojené s ConfigurationAdmin majú zmysel, pretože odvtedy sa pre každú vytvorenú konfiguráciu vytvorí inštancia komponentu. To je ideálne pre môj prípad použitia.

Teraz vyvstáva otázka, čo ak by som chcel programovo použiť komponent z iného balíka? Má to zmysel?

Viem, že som mohol komponent exportovať ako službuešte raz a skonzumujme to z iných fazúľ, ale povedzme, že mám servlet, kde používateľ môže vytvárať konfigurácie, a pre každú nakonfigurovanú inštanciu existuje zoznam akcií; keď klikne na akcie, potreboval by som nájsť vhodnú súčasť a vykonať na nej akciu.

Aký je najlepší spôsob implementácie tejto funkcie na vrchole OSGi?

odpovede:

5 pre odpoveď č. 1

Zvuky „Použitie komponentu z iného balíka programovo“ presne ako pre mňa OSGi Services.


0 pre odpoveď č. 2

Táto metóda načíta službu osgi (izo s závislosťami vodiča kontajnera osgi):

public class ServiceLocator {

public static <T extends Object> T getService(final Class<T> clazz) {
final BundleContext bundleContext = FrameworkUtil.getBundle(clazz).getBundleContext();
// OSGI uses the order of registration if multiple services are found
final ServiceReference<T> ref =     bundleContext.getServiceReference(clazz);
return bundleContext.getService(ref);
}

}

Použil som to pri zavádzaní DS do existujúcehoprojekt, ktorý všade nevyužíva DS. Nie všetky komponenty v projekte boli vytvorené ako komponenty osgi DS. Kdekoľvek potrebujem prístup k komponentu DS v triedach vytvorených iným spôsobom, ktorý som použil túto metódu ...