Erstellen eines Erweiterungs-Bundles für eine Drittanbieter-Bibliothek

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.

Schneller und einfacher Hilfe erhalten

Neuer Benutzer?