Java Reference
In-Depth Information
After you've created your template manifest, you can provide it to Bundlor using the
-m
option, as in the following command:
bundlor.bat -i ..\jars\fancyfoods.department.chocolate_1.0.0.jar
-m ..\templates\bundlor.template.mf
-o ..\out\fancyfoods.chocolate.bundled.jar
Now that you've provided configuration, the manifest generated for your
JAR
looks as
good as it did before, as shown in the following listing.
Listing 12.7
A configured, generated manifest from Bundlor
Manifest-Version: 1.0
Bundle-Blueprint: OSGI-INF/blueprint/*.xml
Bundle-SymbolicName: fancyfoods.department.chocolate
Tool: Bundlor 1.0.0.RELEASE
Bundle-Version: 1.0.0
Import-Package: fancyfoods.food;version="[1.0,1.1)",fancyfoods.offers;
version="[1.0,1.1)"
Bundle-ManifestVersion: 2
You may have noticed that we spent much less time describing and configuring Bund-
lor than we did bnd. We feel duty bound to tell you that this isn't a sign that Bundlor is
much simpler than bnd. You may remember that you started out with a
JAR
that was
an
OSG
i bundle. One of the things that Bundlor does is copy across any headers from
the old
JAR
that aren't updated by the generation code. This means that other than
the import and export headers all of the headers in your generated manifest are cop-
ied from the original bundle. This even includes the
Bundle-ManifestVersion
and
Bundle-SymbolicName
. If you'd started with an emptier
JAR
manifest, you would have
found that rather more configuration was required to get Bundlor working as you
want it to.
Having now seen how similar bnd and Bundlor are, it shouldn't be surprising to
find out that other tools, such as Apache Felix's mangen, work in a similar way. Rather
than covering these tools with further examples, we think that armed with the previ-
ous examples and relevant documentation, you should have no problem using any
manifest generation tool you choose.
Now you know how a standard
JAR
can be converted into an
OSG
i bundle, over-
coming the significant hurdles that put off many potential users of
OSG
i. But further
issues are associated with using standard
JAR
s and other Java technologies in
OSG
i.
Even though your
JAR
is now an
OSG
i bundle, that doesn't mean that the things the
code will try to do are
OSG
i-friendly!
12.2
Common problems for OSGi-unaware libraries
For many people, the problems with
OSG
i begin and end with correctly building a
bundle manifest. As long as you're correctly able to identify your dependencies, then
typically things
work
. This is a testament to the simplicity and resilience of the
OSG
i
model. Unfortunately, there are a number of things that can cause huge problems.