Manipulation von Dateien innerhalb eines Bundles zur Laufzeit

SchlaubiSchlumpf

Grünschnabel
Hi,

ich möchte gerne mit einem OutputStream eine Datei innerhalb eines OSGi Bundles zur Laufzeit ändern. Etwa so,
URL url = bundle.getResource("/aop.xml");
OutputStream out = url.openConnection().getOutputStream();

Obige Ansatz funktioniert leider nicht, gibt es denn eine andere Möglichkeit um einen OutputStream zu bekommen?

Grüße,
SchlaubiSchlumpf
 
Hallo,

das funktioniert meines Wissens nur dann, wenn das Bundle exploded vorliegt (also nicht als jar arhciv sondern als Verzeichnis) oder wenn das Bundle vor dem laden / starten entpackt (exploded) wird. Dann kannst du auch Ressourcen innerhalb des Bundles ändern.

Gruß Tom
 
Hallo,

man hat natürlich noch die Möglichkeit zusätzliche Elemente über ein entsprechendes (exploded) fragment zu einem Host-Bundle hinzuzusteuern. Alle Resourcen des Fragments sind dann über den ClassLoader des hostbundles sichtbar.

Ansonsten könnte man noch einen entsprechenden Bundletransformer schreiben der beim lookup / fetch einer Resource diese verändert bzw. mit einer entsprechenden Version ersetzt.
http://wiki.eclipse.org/Equinox_Transforms

Gruß Tom
 
Hallo Tom,

der Equinox Transformer hört sich vielversprechend an. Allerdings muss ich mich erstmal in das Thema einarbeiten.

Danke für den Hinweis.

Gruß,
Schlaubi
 
Zurück