blob: c2e928bccb9d471db98382cab0c52a41b126a334 [file] [log] [blame]
---
layout: page
title: Apache Karaf - Get started
permalink: /get-started
---
<main role="main">
<div class="container pt-5 pb-3">
<div class="jumbotron p-3 p-md-5 text-white bg-primary">
<div class="col-md-12 px-0">
<h1 class="display-4 font-italic">Get started with Apache Karaf is very easy!</h1>
</div>
</div>
</div>
<main role="main">
<div class="container">
<!-- Easy to install -->
<div class="row mb-2 mt-3">
<div class="col">
<h2 class="pb-3 mb-4 font-italic border-bottom"><i class="fas fa-box"></i> Easy to install</h2>
<p>The only prerequisite to start with Karaf is a Java SE 8 / 9 / 10 / 11 environment to run.
Refer to <a target="_blank" href="https://www.oracle.com/technetwork/java/javase">https://www.oracle.com/technetwork/java/javase</a> for details on how to download and install Java SE 1.8 or greater.</p>
</div>
</div>
<div class="row mb-2 mt-2">
<div class="col">
<h4 class="pb-3 mb-1">Download and extract</h4>
<ol>
<li>Open a Web browser and access the following URL: <a target="_blank" href="https://karaf.apache.org/download">
https://karaf.apache.org/download.html</a>.</li>
<li>Download the binary distribution of Karaf Runtime that matches your system (zip for windows, tar.gz for unixes).</li>
<li>Extract the archive to a new folder on your hard drive. For example in <code>/opt/karaf</code>, from now on this directory will be
referenced as <code>$KARAF_HOME</code>.</li>
</ol>
</div>
</div>
<div class="row mb-5 mt-2">
<div class="col">
<h4 class="pb-3 mb-1">Start and connect</h4>
<ol>
<li>Open a command line console and change the directory to <code>$KARAF_HOME</code>.</li>
<li>To start the server, run the following command on Unix:
<pre class="alert alert-primary"><code>$KARAF_HOME/bin/karaf</code></pre>
Respectively on Windows:
<pre class="alert alert-primary"><code>$KARAF_HOME\bin\karaf.bat</code></pre>
</li>
<li>You are now connected to the Karaf shell!</li>
</ol>
<p>
<pre class="alert alert-primary"><code>
__ __ ____
/ //_/____ __________ _/ __/
/ ,< / __ `/ ___/ __ `/ /_
/ /| |/ /_/ / / / /_/ / __/
/_/ |_|\__,_/_/ \__,_/_/
Apache Karaf (4.2.0)
Hit '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown Karaf.
karaf@root()>
</code></pre>
</p>
<p><i class="fa fa-info-circle"></i> If you want to launch your Karaf instance in background, run on Unix:
<pre class="alert alert-primary"><code>$KARAF_HOME/bin/start</code></pre>
</p>
<p>Respectively on Windows:
<pre class="alert alert-primary"><code>$KARAF_HOME\bin\start.bat</code></pre>
</p>
</div>
</div>
<!-- Easy to manage -->
<div class="row mb-2 mt-3">
<div class="col">
<h2 class="pb-3 mb-4 font-italic border-bottom"><i class="fas fa-laptop"></i> Easy to manage</h2>
<p>You can manage your Karaf instance with the shell console to a local instance or to a remote instance using the ssh client.</p>
</div>
</div>
<div class="row mb-2 mt-2">
<div class="col">
<h4 class="pb-3 mb-1">Connect to the shell console</h4>
<ol>
<li>Open a command line console and change the directory to <code>$KARAF_HOME</code>.</li>
<li>To connect to the local instance, run in Unix:
<pre class="alert alert-primary"><code>$KARAF_HOME/bin/client</code></pre>
Respectively on Windows:
<pre class="alert alert-primary"><code>$KARAF_HOME\bin\client.bat</code></pre>
</li>
</ol>
<p><i class="fa fa-info-circle"></i> To connect to a remote instance, run:</p>
<pre class="alert alert-primary"><code>$KARAF_HOME/bin/client -a "IP" -p "PORT"</code></pre>
<p>You can also use any regular <code>ssh</code> client.</p>
</div>
</div>
<div class="row mb-2 mt-2">
<div class="col">
<h4 class="pb-3 mb-1">Shell console basics</h4>
<p>
You can now run your first command. Simply type the <code>tab</code> key in the console.
</p>
<pre class="alert alert-primary"><code>
karaf@root()>
karaf: do you wish to see to see all 356 possibilities (219 lines)?
karaf@root()> Display all 294 possibilities? (y or n)
...
shell:logout shell:more shell:new shell:printf shell:sleep shell:sort shell:source
shell:stack-traces-print shell:tac shell:tail shell:threads shell:watch shell:wc shell:while
shutdown sleep sort source ssh ssh ssh-host-change
ssh-port-change ssh:ssh stack-traces-print start start-level status stop
su sudo system system:framework system:name system:property system:shutdown
system:start-level system:version tac tail threads tree-show uninstall
update user-add user-delete user-list version version-list wait
watch wc while
</code></pre>
<p>You can then grab more specific help for a given command using the <code>--help</code> option for this command:</p>
<pre class="alert alert-primary"><code>
karaf@root()> bundle:list --help
DESCRIPTION
bundle:list
Lists all installed bundles.
SYNTAX
bundle:list [options] [ids]
ARGUMENTS
ids
The list of bundle (identified by IDs or name or name/version) separated by whitespaces
OPTIONS
-name, -n
Show bundle name
-u
Shows the update locations
-r
Shows the bundle revisions
--no-ellipsis
-l
Show the locations
-s
Shows the symbolic name
--context, -c
Use the given bundle context
(defaults to 0)
--help
Display this help message
-t
Specifies the bundle threshold; bundles with a start-level less than this value will not get printed out.
--no-format
Disable table rendered output
</code></pre>
<p>
Note that the console supports tab completion so if you start typing a command it will show all possible completions and also auto
complete if there is only one completion.
</p>
</div>
</div>
<div class="row mb-2 mt-2">
<div class="col">
<h4 class="pb-3 mb-1">Stop</h4>
You have multiple options for shuting down your Karaf instance:
<ul>
<li>For a background running instance, run the command on Unix:
<pre class="alert alert-primary"><code>$KARAF_HOME/bin/stop</code></pre>
Respectively on Windows:
<pre class="alert alert-primary"><code>$KARAF_HOME\bin\stop.bat</code></pre>
</li>
<li>To stop Karaf from the console, enter <code>Ctrl+D</code>.</li>
<li>Alternatively, you can also run the following command:
<pre class="alert alert-primary"><code>
karaf@root()> feature:install system
karaf@root()> system:shutdown
Confirm: halt instance root (yes/no): yes
karaf@root()>
</code></pre>
</li>
</ul>
<p><i class="fa fa-info-circle"></i> Halt is also an alias for <code>system:shutdown</code>
<pre class="alert alert-primary"><code>karaf@root()> halt</code></pre>
</p>
</div>
</div>
<!-- Easy to develop -->
<div class="row mb-2 mt-3">
<div class="col">
<h2 class="pb-3 mb-4 font-italic border-bottom"><i class="fas fa-code"></i> Easy to develop</h2>
<p>You are now ready to develop your first application!</p>
<p>A list of examples are packaged in the distribution (<code>$KARAF_HOME/examples</code>).
You can have an overview of this examples in the documentation page <a href="/documentation.html">here</a>.
</p>
</div>
</div>
<div class="row mb-2 mt-2">
<div class="col">
<h4 class="pb-3 mb-1">Tips for developers</h4>
<p>You can activate debug mode by adding the parameter <code>debug</code> to the command line:
<pre class="alert alert-primary"><code>$KARAF_HOME/bin/karaf debug</code></pre></li>
Then you can connect to the instance from remote with your IDE on the port <code>5005</code>.
</p>
<p>After building your bundle with maven, you can install it from the console:</p>
<pre class="alert alert-primary"><code>karaf@root()> bundle:install -s mvn:groupId/artifactId/1.0.0-SNAPSHOT</code></pre>
<p>The <code>bundle:watch</code> command enables watching the local Maven repository for updates on bundles. If the bundle file changes on the Maven repository,
Apache Karaf will automatically update the bundle.</p>
<pre class="alert alert-primary"><code>karaf@root()> bundle:watch *</code></pre>
<p>From now, your bundle will automatically update by Karaf after each local build.</p>
</div>
</div>
<!-- Want more -->
<div class="row mb-2 mt-3">
<div class="col">
<h2 class="pb-3 mb-4 font-italic border-bottom"><i class="far fa-comments"></i> What? You thought it was difficult to develop with Karaf?</h2>
<p>You want more! Ok, let's going deeper with the manual <a href="/manual/latest" target="_blank">here</a>.</p>
</div>
</div>
</div>
</main>