Apache Karaf è un container OSGi leggero, flessibile e scalabile nato dall’evoluzione del kernel di ServiceMix, mediante il quale è possibile gestire il ciclo di vita dei moduli OSGi e della loro configurazione. In questa guida faremo una breve carrellata dei concetti base di Apache Karaf. Mostreremo come installare e lanciare il container, come deployare i nostri bundle e come gestire il loro ciclo di vita.
Per comprendere i concetti discussi in questa guida è necessario possedere conoscenze minimali sulla tecnologia OSGi ed avere padronanza con Apache Maven, strumento fondamentale per l’implementazione di un modulo OSGi e la sua installazione.
Qualora fosse necessario, rimandiamo il lettore all’approfondimento di questi argomenti già trattati in passato dal nostro sito Web:
Le principali caratteristiche di Apache Karaf sono le seguenti:
Caratteristica | Descrizione |
---|---|
Hot deployment | Dopo l’installazione di un nuovo componente non è necessario il riavvio del container. |
Console di amministrazione | Fornisce una console Unix-like mediante la quale è possibile gestire completamente il container. E’ possibile anche estendere la console e creare i propri comandi personalizzati. |
Configurazione dinamica | Fornisce una serie di comandi dedicati per la gestione dei file di configurazione. |
Configurazione centralizzata del sistema di logging | Supporta un ampio insieme di framework di Logging (slf4j, log4j, etc) configurabili mediante un unico file. |
Installazione
Nel momento in cui questa guida viene redatta, l’ultima versione stabile rilasciata di Apache Karaf, è la 3.0.3. Scarichiamo il pacchetto dalla sezione download del sito ufficiale. Per installare Karaf è sufficiente decomprimere l’archivio in una cartella nel nostro file system.
Le principali directory presenti nella root di Karaf sono le seguenti:
Directory | Descrizione |
---|---|
bin | Contiene i binari per avviare, terminare e monitorare lo stato del container. |
data | Contiene i file temporanei, la cache ed i file di log. |
deploy | Permette di gestire l’installazione a caldo dei bundle. Copiando all’interno di questa directory un bundle oppure una feature (lista di bundle), il container provvederà all’installazione della componente. |
etc | Contiene i file di configurazione. La modifica di questi file viene automaticamente notificata a tutti i bundle. |
lib | Contiene le librerie globali. |
system | Contiene i bundle di sistema di Karaf. |
Per avviare Karaf è sufficiente eseguire il file bin/karaf.bat
se siamo su Windows, oppure bin/karaf
se siamo in ambiente Unix. Al termine della fase di inizializzazione del container, è possibile iniziare ad eseguire i comandi. La console di amministrazione è simile ad una shell Unix e dispone della funzionalità di completamento automatico utilizzabile mediante il tasto Tab. E’ possibile anche utilizzare la concatenazione di due o più comandi.
Console di amministrazione
La console di amministrazione mette a disposizione tantissimi comandi suddivisi per categoria. Analizzarli è praticamente impossibile, quindi ci limiteremo ai principali che permettono di gestire il ciclo di vita di un bundle, dall’installazione, alla configurazione.
Comandi | Descrizione |
---|---|
bundle | Insieme di comandi che permettono di gestire i bundle (ad esempio: visualizzazione dei bundle disponibili con relativo stato, installazione, disinstallazione, attivazione e disattivazione). |
config | Insieme di comandi che permettono di gestire i file di configurazione (ad esempio: creazione di un nuovo file di configurazione, eliminazione di un file presente, aggiunta di una nuova property in un file presente. |
feature | Insieme di comandi che permettono di gestire feature (ad esempio: visualizzazione delle feature disponibili, installazione e disinstallazione). |
log | Insieme dei comandi che permettono di gestire il log (ad esempio: pulizia del log e modifica del livello di dettaglio del log). |
help
E’ il comando principale perché permette di reperire la lista dei comandi disponibili con una breve descrizione. E’ possibile anche specificare il nome del comando per averne i dettagli.
karaf@root()> help
grep
Non è un vero e proprio comando ma è molto utile perché permette di filtrare l’output del comando alla sua sinistra. Nell’esempio visualizziamo tutti i comandi il cui nome contiene la parola “start”.
karaf@root()> help | grep start
bundle:list
Tale comando permette di visualizzare l’elenco dei bundle disponibili all’interno del container, e lo stato di ciascuno di essi. Il comando dispone di diversi attributi visualizzabili con il comando help
. Nell’esempio visualizziamo tutti i bundle con una soglia maggiore o uguale a 0. Con l’attributo –l
, forziamo la visualizzazione della location. Praticamente tutti i bundle installati nel container.
karaf@root()> bundle:list -t 0 -l
bundle:install
Tale comando permette di installare un bundle utilizzando la URL Maven costituito dalla tupla mvn:<groupId>:<artifactId>:<version>
oppure il percorso fisico del jar sul file system locale (file:<path>
). E’ possibile anche forzare lo start del bundle con il parametro –s
.
karaf@root()> bundle:install mvn:it.html.tutorial/karaf-helloworld/1.0
karaf@root()> bundle:install file:C:/projects/html-tutorial/karaf-helloworld/target/hello-world-1.0.jar -s
bundle:start
Tale commando permette di startare un bundle utilizzando il suo identificativo numerico.
karaf@root()> bundle:start 90
bundle:stop
Commando che permette di sospendere un bundle utilizzando il suo identificativo numerico.
karaf@root()> bundle:stop 90
Sul sito ufficiale di Karaf è disponibile l’elenco di tutti i comandi. Nel prossimo capitolo verrà descritta la procedura necessaria lo sviluppo di un primo bundle.