Ich arbeite an einem OSGi-Bundle, das einen Dienst als Wrapper um eine native ausführbare Datei implementiert. Das heißt, der Dienst führt die ausführbare Datei mit ProcessBuilder
aus, gibt ihm einige Daten und ruft das Ergebnis ab. Meine Frage ist über die beste Möglichkeit, dieses Bündel zu verpacken. Die native ausführbare Datei enthält eine Anzahl abhängiger Datendateien, die alle auf dem Datenträger vorhanden sein müssen, damit das Tool ausgeführt werden kann. Ich habe viele Hinweise zum Umgang mit nativen DLLs in OSGi gefunden, aber keine, die Dateien adressieren, die zu einem Bundle gehören, das auf dem Datenträger vorhanden sein muss und nicht nur durch den Klassenpfad abrufbar ist.Zusätzliche Ressourcen mit OSGi-Bundles einbinden
Ich dachte, dass ich die executable und abhängigen Dateien direkt in das Bundle-Archiv aufnehmen und dann programmatisch in ein Verzeichnis extrahieren könnte, wenn das Bundle gestartet wird. Die andere Option, die ich mir vorstellen kann, ist, die ausführbare Datei irgendwo zu platzieren und eine Systemeigenschaft zu setzen, die auf sie oder etwas verweist, aber ich möchte die Konfiguration auf ein Minimum beschränken.
Eine Lösung, die nicht spezifisch für eine bestimmte OSGi-Implementierung ist, wäre nett, aber wenn nicht, verwende ich Equinox.
Danke!
OSGi Service Platform Kernspezifikation Version 4 Version 4.3 bietet ['BündelContext.getDataFile (String)'] (https://osgi.org/javadoc/r4v43/core/org/osgi/framework/BundleContext.html#getDataFile% 28java.lang.String% 29), was angemessen sein könnte. –