Maven URL s were used for convenience here, but file and http URL s also work. The
feature definition file for the Fancy Foods application would be as follows:
<feature name="fancyfoods" version="1.0.0">
It's used here because the content is familiar, but the Fancy Foods application perhaps
isn't the best example of how to use Karaf features. A similar effect can be achieved by
packaging all of the Fancy Foods bundles up into a .eba file, as we did in chapter 4.
Features are more useful for distributing centrally—or remotely—managed infra-
structure bundles. For example, many Apache projects provide Karaf feature files to
allow them to be installed into Karaf without any initial download.
If you try to install it, you'll discover that the Fancy Foods application won't install
correctly on a basic Karaf installation because its dependencies are missing; current
releases of Karaf don't have any ability to provision features based on bundle depen-
dencies. Don't worry, we'll show you how to configure Karaf with the right features in
Installing Aries into Karaf
Despite being a relatively lightweight runtime, Karaf has awareness of, and support
for, Aries. Base Karaf ships with the Aries Blueprint implementation. Although not
installed by default, the Karaf enterprise repository includes feature definitions for
most Aries components. The feature definitions are maintained by the Karaf team
and so versions may lag slightly behind the latest Aries releases (see figure 13.2).
WARNING: BUT WHERE IS THE ARIES FEATURE? None of the Karaf feature defi-
nitions for the Aries bundles includes aries in the name, so they're easy to miss
if you're looking for a feature called aries .
Unfortunately, although there are Karaf feature files for the Aries JPA component,
which provides integrations for JPA in an OSG i environment, at the time of writing
there are none for the Open JPA engine itself. You'll need to install Open JPA into
Karaf manually, either by using the bundles:install command or by writing your
own feature for Open JPA . Because Open JPA has its own nontrivial dependencies, a
feature is probably easier. An example feature definition is as follows: