Chapter 9. Deploying a Plain JAR
This chapter explains how to deal with plain JAR files (typically libraries) that contain no deployment metadata whatsoever. That is, a plain JAR is neither a WAR, nor an OSGi bundle.
If the plain JAR occurs as a dependency of a bundle, you must add bundle headers to the JAR . If the JAR exposes a public API, typically the best solution is to convert the existing JAR into a bundle, enabling the JAR to be shared with other bundles. This chapter describes how to perform the conversion process automatically, using the open source Bnd tool.
For more information on Bnd tool, see Bnd tools website.
9.1. Converting a JAR Using the wrap Scheme
You also have the option of converting a JAR into a bundle using the
wrapscheme, which can be prefixed to any existing URL format. The
wrapscheme is also based on the Bnd utility.
wrapscheme has the following basic syntax:
wrapscheme can prefix any URL that locates a JAR. The locating part of the URL, LocationURL, is used to obtain the (non-bundlized) JAR and the URL handler for the
wrapscheme then converts the JAR automatically into a bundle.
wrapscheme also supports a more elaborate syntax, which enables you to customize the conversion by specifying a Bnd properties file or by specifying individual Bnd properties in the URL. Typically, however, the
wrapscheme is used just with its default settings.
wrapscheme is based on the Bnd utility, it uses exactly the same default properties to generate the bundle as Bnd does—see ???.
Wrap and install
The following example shows how you can use a single console command to download the plain
commons-loggingJAR from a remote Maven repository, convert it into an OSGi bundle on the fly, and then install it and start it in the OSGi container:
JBossFuse:karaf@root> osgi:install -s wrap:mvn:commons-logging/commons-logging/1.1.1