During the development it's common to require dependencies which are not OSGi ready. They are not bundles, but simple jars.

These dependencies should be wrapped with OSGi bundles exporting their packages, making them visible to the OSGi container and to other bundles as well.

 

Identify not bundled dependencies

You'll notice that a dependency is not OSGi ready (it's not a bundle) because MANIFEST.MF file in the dependency jar looks similar to the following:

Manifest-Version: 1.0 
Archiver-Version: Plexus Archiver 
Created-By: Apache Maven 
Built-By: author 
Build-Jdk: 1.6.0_26

While an bundle MANIFEST.MF would look like the following:

Manifest-Version: 1.0 
Bnd-LastModified: 1370421295191 
Build-Jdk: 1.6.0_26 
Built-By: author
Bundle-Description: MyBundle Description
Bundle-DocURL: doc-url
Bundle-License: LICENSE 
Bundle-ManifestVersion: 2 
Bundle-Name: MyBundle Name
Bundle-SymbolicName: org.opennaas.mybundle 
Bundle-Vendor: Vendor
Bundle-Version: 0.20.0.SNAPSHOT
Created-By: Apache Maven Bundle Plugin 
Export-Package: org.opennaas.extensions.pdu.capability.example;uses:="or 
 g.apache.commons.logging,org.opennaas.core.resources.action,org.opennaa 
 s.core.resources.descriptor,org.opennaas.core.resources.capability,org. 
 osgi.framework,org.opennaas.extensions.queuemanager,org.opennaas.core.r 
 esources,javax.ws.rs";version="0.20.0.SNAPSHOT" 
Export-Service: org.opennaas.core.resources.IResourceRepository;type=pdu 
 ;version="1.0.0",org.opennaas.core.resources.capability.ICapabilityFact 
 ory;capability=pdu_pw_mon;capability.model=apc;capability.version="1.0" 
 ,org.opennaas.core.resources.capability.ICapabilityFactory;capability=p 
 du_pw_mgt;capability.model=apc;capability.version="1.0",org.opennaas.co 
 re.resources.capability.ICapabilityFactory;capability=pdu_pw_sup;capabi 
 lity.model=apc;capability.version="1.0",org.opennaas.core.resources.cap 
 ability.ICapabilityFactory;capability=example2;capability.model=dummy;c 
 apability.version="1.0" 
Import-Package: javax.sql,javax.ws.rs;version="[1.1,2)",org.apache.commo 
 ns.logging;version="[1.1,2)",org.apache.felix.gogo.commands;version="[0 
 .10,1)",org.apache.karaf.shell.console;version="[2.2,3)",org.opennaas.c 
 ore.resources;version="[0.20,1)",org.opennaas.core.resources.action;ver 
 sion="[0.20,1)",org.opennaas.core.resources.capability;version="[0.20,1 
 )",org.opennaas.core.resources.configurationadmin;version="[0.20,1)",or 
 g.opennaas.core.resources.descriptor;version="[0.20,1)",org.opennaas.co 
 re.resources.shell;version="[0.20,1)",org.opennaas.extensions.gim.contr 
 oller;version="0.0.1.SNAPSHOT",org.opennaas.extensions.gim.controller.c 
 apabilities;version="0.0.1.SNAPSHOT",org.opennaas.extensions.gim.contro 
 ller.snmp;version="0.0.1.SNAPSHOT",org.opennaas.extensions.gim.model.co 
 re;version="0.0.1.SNAPSHOT",org.opennaas.extensions.gim.model.core.enti 
 ties;version="0.0.1.SNAPSHOT",org.opennaas.extensions.gim.model.core.en 
 tities.pdu;version="0.0.1.SNAPSHOT",org.opennaas.extensions.gim.model.e 
 nergy;version="0.0.1.SNAPSHOT",org.opennaas.extensions.gim.model.load;v 
 ersion="0.0.1.SNAPSHOT",org.opennaas.extensions.gim.model.log;version=" 
 0.0.1.SNAPSHOT",org.opennaas.extensions.queuemanager;version="[0.20,1)" 
 ,org.osgi.framework;version="[1.5,2)",org.osgi.service.blueprint;versio 
 n="[1.0.0,2.0.0)",org.slf4j;version="[1.6,2)" 
Import-Service: javax.sql.DataSource;multiple:=false;filter="(osgi.jndi. 
 service.name=jdbc/opennaas-resources)",org.apache.karaf.shell.console.C 
 ompleter;multiple:=false;filter="(completer.name=resourceNameCompleter) 
 ",org.opennaas.core.resources.capability.ICapabilityFactory;multiple:=t 
 rue;availability:=optional 
Tool: Bnd-1.50.0

Please notice Bundle-* entries and Export/Import-Package/Service entries as well. (Content of these entries has been taken from an opennaas bundle)

 

Creating wrapping bundle

Apache Karaf has a good example of how to generate a wrapping bundle for a non-bundled jar. Please have a look at following URLs:

https://issues.apache.org/jira/browse/KARAF-1280

https://svn.apache.org/repos/asf/karaf/tags/karaf-2.2.8/assemblies/apache-karaf/src/main/filtered-resources/demos/deployer/wrap/README.txt

https://svn.apache.org/repos/asf/karaf/tags/karaf-2.2.8/demos/deployer/wrap/pom.xml

 

  • No labels