Over a million developers have joined DZone.

How to create/generate OSGi bundles from existing third-party jars?

· Java Zone

What every Java engineer should know about microservices: Reactive Microservices Architecture.  Brought to you in partnership with Lightbend.

If you get to work with OSGi, you often have to generate OSGi bundles. Any third party jar can’t be included straightaway in your application – you need to create an OSGi bundle of the jar you want to include.

Quoting from http://blog.springsource.org/2008/02/18/creating-osgi-bundles/,

a bundle is a JAR file that:

  • Contains [...] resources
  • Contains a manifest file describing the contents of the JAR file and providing information about the bundle
  • Can contain optional documentation in the OSGI-OPT directory of the JAR file or one of its sub-directories

In short, a bundle = jar + OSGI information (specified in the JAR manifest file – META-INF/MANIFEST.MF), no extra files or predefined folder layout are required. This means that all it takes to create a bundle from a jar, is to add some entries to the JAR manifest.

Before you use any tool/plugin to generate OSGi bundles, do search in public OSGi repositories like SpringSource Enterprise Bundle Repository etc. to see if there’s an OSGi bundle already made available.

Assume that we’re wrapping a vanilla jar file, c3p0-, which is a popular connection pool library, as an OSGi bundle. Here’s the way I do it:

1. Download aQute’s BND tool from here: http://dl.dropbox.com/u/2590603/bnd/biz.aQute.bnd.jar
2. Create bnd.property file (See below for a sample file).

Bundle-ManifestVersion: 2
Bundle-SymbolicName: com.mchange.v2.c3p0
Bundle-Version: ${version}
Bundle-Name: c3p0
Export-Package: *;version=${version}
Import-Package: *

3. Run this command: java -jar biz.aQute.bnd.jar wrap -properties bnd.properties c3p0-OSGi.jar
4. You’ll get  c3p0-OSGi.bar, which needs to be renamed to  c3p0-OSGi.jar. That’s it, you have the OSGi bundle.

From http://singztechmusings.wordpress.com/2011/11/29/how-to-creategenerate-osgi-bundles-from-existing-third-party-jars/

Microservices for Java, explained. Revitalize your legacy systems (and your career) with Reactive Microservices Architecture, a free O'Reilly book. Brought to you in partnership with Lightbend.


Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}