Apache Karaf

Karaf IRC channel : Apache Karaf IRC


Configure Default Port

By default Jetty is configured to bind to any network device on port 8181. The configuration of the port must be done via the ConfigAdmin OSGi service. Just drop the configuration file org.ops4j.pax.web.cfg into the etc folder with the following content:


Any additional configuration can be done in the jetty.xml file.



Execute Script

To execute a script (file with Karaf shell commands) the command shell:source has to be used.

shell:source my.script



Bundles can be installed via various methods.

The deploy folder is one method. Bundles dropped in the deploy folder are automatically installed and started.


Bundles can be installed from on OSGi Bundle Repository (OBR) (similar to a Maven repository, but not compatiblel with it). The commands in the schema obr are used to manage and use OBRs.

The list of the bundles in an OBR is loaded once from the repository and must be refresh manually with the command obr:url-refresh.
Install Command

The install command can be used to install bundles from various sources, like local filesystem, HTTP server, local Maven repository.

install mvn:com.rpgnextgen/corepages.web/2.0.0-SNAPSHOT/war

The type of artifact can be passed in the last segment of the url and is optional. By default it will look out for an artifact of type jar.


To list the installed bundles use the command bundle:list. This will list the installed bundles from a given start level, default 100. To list all bundles starting from a specific level you have to add the level to the command.

bundle:list -t <level>


During development it is very inconvenient to manually reload the new bundle version to test the last change. Karaf supports to automatically reload watched bundles. There are some requirements for this to work. The bundles must be installed via the install command with the version passed to the command.

install mvn:my.group/my.artifact/1.0.0-SNAPSHOT

To watch the bundle add it to the watch list either by specifying the group/artifact/version string or just by specifying the bundle id in the system.

bundle:watch 189

The check interval can be specified with the i option (in ms).

bundle:watch -i 500

Don't forget to start the watch by

bundle:watch --start


To list all exported packages use the command package:exports.

The output of a command can be piped to another command, f. e. a shell command. Example, list all servlet exports: package:exports | grep servlet.


Commands can be grouped by a common name. All bundle related commands are available in the group bundle. By default you can access a command by prefixing the group, f. e. bundle:list.

But you can also go into that group and have only the commands of this group available. That is called a subshell. You have only a subset of the normal shell available.

To enter a subshell type the group name and press enter. To exit the subshell use the command exit.

Link Apache Karaf User Guide - Console


List deployed servlets:



To add a repository use the feature:repo-add command.

Add CXF Maven Repository

feature:repo-add mvn:org.apache.cxf.karaf/apache-cxf/2.5.0/xml/features

Install CXF for JAX-RS from Repository

feature:install cxf-jaxrs