Apache Karaf
Karaf IRC channel : Apache Karaf IRC
Jetty
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:
service.pid=org.ops4j.pax.web.cfg org.osgi.service.http.port=9191
Any additional configuration can be done in the jetty.xml file.
Commands
Scripting
Execute Script
To execute a script (file with Karaf shell commands) the command shell:source
has to be used.
shell:source my.script
Bundles
Install
Bundles can be installed via various methods.
The deploy
folder is one method. Bundles dropped in the deploy
folder are automatically installed and started.
OBR
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.
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
.
List
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>
Watch
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
Packages
To list all exported packages use the command package:exports
.
package:exports | grep servlet
.
Subshell
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
.
HTTP
List deployed servlets:
http:list
Repositories
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