# OSGi: Ressourcen gezielt aus bestimmten Modulen laden?



## Novanic (13. Apr 2011)

Hallo Leute,

ich möchte für mein Projekt eine Art Plugin-Mechanismus entwickeln und stelle mir das so vor, dass jedes Plugin in einem OSGi-Modul/Bundle umgesetzt ist und so in mein Projekt eingebunden werden kann. Ich glaube OSGi wäre dafür die richtige Wahl. Dabei möchte ich z.B. festlegen, dass jedes Modul einen "img"-Ordner mit einer "icon.png"-Datei hat und diese von meinem Projekt geladen werden kann. Dazu müsste die img/icon.png natürlich pro Modul direkt eindeutig adressiert werden können, was im Normalfall nicht so einfach möglich ist, weil die Ressource ja nicht in einem Package liegt. Ist das per OSGi möglich indem z.B. mit "bundle-name/img/icon.png" zugegriffen wird oder wie lässt sich das über einen anderen Weg geschickt per OSGi lösen? Und kann man per OSGi auch direkt Konventionen festlegen, sodass ein Modul validiert werden kann (z.B. dass jedes Modul eines bestimmten Typs die Datei "img/icon.png" besitzen muss)?

Danke schonmal im Voraus.

Gruß Sven


----------



## Wildcard (13. Apr 2011)

Ja, OSGi ist für sowas ideal, aber ich würde die empfehlen direkt Eclipse RCP zu verwenden (basiert auf OSGi). Dort sind solche Dinge schon fertig eingebaut und du sparst dir viel Zeit.


----------



## Novanic (13. Apr 2011)

Danke für die schnelle Antwort. Welche Möglichkeiten gibt es denn mit OSGi um die Ressourcen pro Modul/Bundle zu laden bzw. zu adressieren? Wie sieht das in der Praxis aus? Wie oben beschrieben mit "bundle-name/img/icon.png" oder gibt es noch elegantere Methoden?

Eclipse RCP ist für mein Projekt leider nicht das richtige. Es soll eine schlanke Lösung bleiben. ;-)


----------



## Wildcard (14. Apr 2011)

> Welche Möglichkeiten gibt es denn mit OSGi um die Ressourcen pro Modul/Bundle zu laden bzw. zu adressieren?


Hier:
Bundle (OSGi Service Platform Release 4 Version 4.2)



> Eclipse RCP ist für mein Projekt leider nicht das richtige. Es soll eine schlanke Lösung bleiben


Wie groß hast du dir denn vorgestellt? Das noch sinnvolle Minimum dürfte so bei 3-5MB liegen, also auch nicht viel größer als zB Equinox alleine.
Viele Sachen gehen mit dem Eclipse Aufbau deutlich einfacher durch das Extension Point/Extension Konzept und die vielen Hilfsklassen. Wenn eine GUI im Spiel ist würde ich auf jeden Fall Eclipse RCP verwenden.


----------



## Gelöschtes Mitglied 5909 (15. Apr 2011)

Wenn es nicht sehr sehr viele sind würde ürde es sich anbieten einen Extender zu schreiben. Einfach mal nach OSGi Extender Pattern googlen. 

Bundle#findEntries() und Bundle#getEntry() sind das was du suchst


----------

