2016-11-22 2 views
2

Ich habe vor, eine Webanwendung mit Java zu entwickeln, die auf einem MVC-Framework basiert. Diese Anwendung sollte Plugins unterstützen.So rufen Sie einen OSGi-Service von außerhalb des OSGi-Frameworks auf.

Also plane ich, Plugin mit OSGI-Container (Apache Felix) zu erstellen und Plugin als Dienst (mit Service-Registrierung-Funktion von OSGI) zu exponieren.

Beide (Webanwendung und OSGI-Dienst) werden in derselben JVM ausgeführt.

Also brauche ich Hilfe, wie kann ich den OSGI-Dienst (Plugin) außerhalb des OSGI-Containers verwenden?

Ich möchte grundsätzlich ausgesetzt OSGI-Service außerhalb von OSGI, in diesem Fall in meiner Webanwendung.

Vielen Dank im Voraus!

+0

Off-Thema: Ich hatte ähnliche Anforderungen: OSGi für Backend-Modularität und Eclipse E4 für Frontend-Modularität. Das Ergebnis ist ein (laufendes) Projekt, das HTML5/CSS3/JavaScript (Frontend) + OSGi/Eclipse (Backend) erlaubt: https://github.com/erdalkaraca/hi5 –

+0

Warum laufen Sie nicht? Webanwendung in OSGi? –

Antwort

5

Um dies zu ermöglichen, benötigen Sie das API-Paket des Dienstes im Klassenpfad, in dem Sie das OSGi-Framework starten. Sie müssen dieses Paket dann als Systempaket-Export exportieren. Nur so können das Bundle, das den Dienst implementiert, und der Nicht-OSGi-Code dieselbe Serviceschnittstellenklasse anzeigen.

Anschließend verwenden Sie die FrameworkFactory, um eine Framework-Instanz zu erstellen, die Sie starten können. Aus dem Framework können Sie den BundleContext abrufen und verwenden, um die Serviceinstanz (en) abzurufen.

für einige weitere Details.

+0

Vielen Dank! Christian – parthiban

Verwandte Themen