OSGi: Grundsätzliches zum Export / Import?

JohannQ

Grünschnabel
Hallo,

folgendes ist mir nicht klar, vielleicht kann mir jemand weiterhelfen. Wenn ich einen eigenen Log-Service implementiere, so steht im Manifest ein

Import-Package: org.osgi.service.log;version="1.3.0"

drin. Mein Bundle kann also auf dieses Interface zugreifen. Erzeuge ich mein Bundle, und schiebe das in ein laufendes OSGi-Framework, so gibts die Meldung, dass das Interface org.osgi.service.log.LogService unbekannt ist. Wie geht man da "üblicherweise" vor? Hat jedes OSGi-Framework ein eigenes Interface davon, oder packe ich das Interface mit in mein Bundle? Und wie geht sowas?

Vielen herzlichen Dank für eure Antworten
Johann
 
Hallo,

also bei OSGi Bundles kannst du packages importieren und exportieren. In der Regel exportiert man nur die das eigene public API (Interfaces) und importiert die public API des fremd Bundles. Dazu muss das fremd bundle natürlich im System vorhanden sein. In deinem Service arbeitest du dann mit den importierten Interfaces des fremd Bundles. (Die Klassen wurden über das Importieren in deinen Namensraum / denSichtbarkeitsbereich deines BundleClassLoaders geschafft).

Gruß Tom
 
Zurück