We are working hard on Karaf 3.0. This major new version of Karaf will bring a lot of new features and enhancements.
KAR in Karaf 2.2.4
As you may know, Karaf 2.2.x already provides “basic” KAR support.
A KAR (KARaf archive) is a zip file which gathers a features XML and all bundles and configuration files dependencies. It means that a KAR is an atomic artifact which can be deployed without an Internet connection (as all is shipped in the KAR file itself).
In Karaf 2.2.x, the KAR support was:
- a KAR deployer: you can copy a KAR file into the deploy folder, and KARAF will uncompress the KAR file, and install all features containing in the shipped features XML.
- a create-kar goal in the features-maven-plugin: this goal reads a features XML and creates a KAR file, ready to be deployed.
So, all KAR logics were in the KAR deployer.
It means that you are not able to deploy a KAR from a remote URL, etc.
What’s coming in Karaf 3.0
The KAR service
In Karaf 3.0, the KAR core bundle provides a
org.apache.karaf.kar.KarService OSGi service.
This service allows you to list the installed KAR files, deploy a KAR file from an URL, uninstall a KAR file.
Now the KAR service use a
data/kar directory to store the KAR file and uncompress the KAR directly in the
system repository (the
local-repo directory is no more needed and created).
The KAR shell commands
Now, you have a complete control on the KAR files (including remotely using a SSH connection).
You can list, install, and uninstall KAR files using the
kar:listdisplays the installed KAR files
kar:installinstalls a KAR file from a given URL. The URL could be a “classic” file: or http:, but, as for all stuff in Karaf, mvn: (for instance mvn:net.nanthrax/test/1.0-SNAPSHOT/kar)
kar:uninstalluninstalls a KAR file (identified by the name as displayed by
kar:list). This command doesn’t alter the system repository by default, but you have an option -c (–cleanup) to cleanup the system repository.
The KAR MBean
You can also manipulate KAR files using JMX via a new MBean: org.apache.karaf:type=kar,name=root.
This MBean provides quite the same actions that you can do using the commands:
- uninstall(name, clean)
It’s still a work in progress. I will add a bunch of unit tests and new features around the KAR files.