Question

How can we load a 3rd party library that is not an OSGi bundle.

Answer

One option to load a 3rd party library that is not an OSGi bundle is to create an extension/fragment bundle.

This can be done from the command line as follows. Lets say we have a 3rdparty.jar which contains packages under com.3rdparty.libs that need to be exported.

  • Add the jar to the shared classpath of your application server, for example crx-quickstart/server/lib/container under CQSE.
  • Create manifest file. For this example we will call it ext.mf. The file have the following contents:
    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 
    
    
    Note that the blank line at the end of a jar manifest file is required. Also, all packages you need to export have to be explicitly added to Export-Package as a comma separated list
  • Create a jar file with above manifest using the following command.
    jar -cfm com.3rdparty.extension-1.0.jar ext.mf 
    
  • Install com.3rdparty.extension-1.0.jar using Felix Console or place it in the install folder of your CQ application. This should add org.h2 package to the export list of the System Bundle.
  • Please refer to section 3.15, Extension Bundles, of the OSGi Service Platform Core for more information about Extension Bundles.

Esta obra está licenciada sob uma licença não adaptada da Creative Commons Attribution-Noncommercial-Share Alike 3.0  As publicações do Twitter™ e do Facebook não são cobertas pelos termos do Creative Commons.

Avisos legais   |   Política de privacidade online