Zuletzt aktualisiert am
1. Mai 2021
Frage
Wie können wir eine Drittanbieter-Bibliothek laden, welche kein OSGi
-Bundle ist?
Antwort
Eine Option zum Laden einer Drittanbieter-Bibliothek, welche kein OSGi
-Bundle ist, besteht darin, ein Erweiterungs-/Fragment-Bundle zu erstellen.
Dies kann wie folgt über die Befehlszeile erfolgen. Angenommen wir haben eine 3rdparty.jar, welche Pakete unter com.3rdparty.libs enthält, die exportiert werden müssen.
- Fügen Sie die jar-Datei zum geteilten Klassenpfad Ihres Anwendungsservers hinzu, wie beispielsweise crx-quickstart/server/lib/container unter CQSE.
- Erstellen Sie eine Manifestdatei. Für dieses Beispiel nennen wir es ext.mf. Die Datei hat die folgenden Inhalte:
Bundle-ManifestVersion: 2 Bundle-SymbolicName: com.3rdparty.extension Bundle-Version: 1.0 Fragment-Host: system.bundle; extension:=framework Bundle-Name: H2 JDBC Driver Extension Bundle-Description: Bundle exporting com.3rdparty.libs Export-Package: com.3rdparty.libs
Beachten Sie, dass eine leere Zeile am Ende einer JAR-Manifestdatei erforderlich ist. Außerdem müssen alle Pakete die Sie exportieren wollen, explizit zu dem Export-Package als kommagetrennte Liste hinzugefügt werden.
- Erstellen Sie eine JAR-Datei mit obigem Manifest unter Verwendung des folgenden Befehls.
jar -cfm com.3rdparty.extension-1.0.jar ext.mf
- Installieren Sie com.3rdparty.extension-1.0.jar mit der Felix-Konsole oder legen Sie es im Installationsordner Ihrer CQ-Anwendung ab. Dies sollte das org.h2 package zur Exportliste des System-Bundles hinzufügen.
- Weitere Informationen zu Extension-Bundles finden Sie in Abschnitt 3.15, Extension Bundles, der
OSGi
-Kerndienstplattform.