Fusibile JBoss - Apache Karaf

In questo capitolo, discuteremo di Apache Karaf e del motivo per cui è chiamato come contenitore OSGi leggero insieme ai suoi vantaggi e ad altre importanti caratteristiche.

Il problema JVM

JVM o Java virtual Machine non agisce come una vera macchina virtuale. Una macchina che ti permetterà di fermare, avviare o riavviare al volo i componenti in esecuzione al suo interno. A volte può consentire distribuzioni a caldo a livello di classe, ma non è possibile distribuire o annullare la distribuzione di un componente dell'applicazione nella macchina virtuale senza riavviarla.

Per risolvere questo problema e consentire la modularità nell'applicazione Java, Fuse utilizza un runtime basato su OSGi noto come Apache Karaf.

OSGi

La tecnologia OSGi è un insieme di specifiche che definiscono un sistema di componenti dinamici per java. Queste specifiche consentono un modello di sviluppo in cui le applicazioni sono (dinamicamente) composte da molti componenti diversi (riutilizzabili).

Vantaggi di OSGi

  • Reduced Complexity - L'applicazione è costruita come componenti collaboranti che nascondono i loro dettagli di implementazione l'uno dall'altro con conseguente riduzione della complessità.

  • Reusability - Molti componenti possono sfruttare lo stesso componente distribuito in un contenitore.

  • Deployment - OSGi fornisce supporto per l'avvio, l'arresto e l'aggiornamento dei componenti al volo con le sue API di gestione del ciclo di vita senza riavvio del contenitore.

Bundle vs caratteristiche

Di seguito è riportato il confronto tra bundle e funzionalità.

gruppi

I bundle sono equivalenti a OSGi come i jar sono per JVM. I bundle sono artefatti che possono essere distribuiti in un contenitore OSGi. I bundle sono componenti che lavorano insieme o indipendentemente per formare un'applicazione.

Questi bundle possono essere installati, disinstallati, aggiornati, avviati o arrestati in fase di esecuzione senza riavviare il contenitore.

Caratteristiche

Le funzionalità sono un modo per distribuire più bundle insieme. A volte ha più senso distribuire i pacchetti in gruppo. Le funzionalità ci consentono di distribuire un gruppo di bundle con un solo comando.

Perché un altro contenitore?

Apache Karaf è un runtime basato su OSGi, è dove vengono eseguiti i nostri bundle di applicazioni. Fuse utilizza Apache Karaf come runtime in cui i bundle vengono eseguiti e collaborano per fornire funzionalità aziendali.

Karaf è costruito su Felix ed equinox, che sono OSGi Frameworks.

Architettura Karaf

Apache Karaf aggiunge le seguenti funzionalità aggiuntive al runtime OSGi di base.

Distribuzione a caldo

Karaf supporta la distribuzione a caldo. Contiene una directory di distribuzione a caldo. Tutto ciò che viene inserito in questa directory viene automaticamente distribuito e installato in Karaf come pacchetto.

Registrazione

Karaf fornisce la registrazione centralizzata generando i registri per tutti i pacchetti in $Fuse_home/data/log. Possiamo modificare la configurazione del logger inorg.ops4j.pax.logging.cfg in $Fuse_home/etc directory.

Console di amministrazione

Karaf fornisce una console di amministrazione sofisticata e lucida per interagire con l'istanza in esecuzione di fuse. Fornisce inoltre una serie di comandi preinstallati che possono essere utilizzati per gestire e monitorare i componenti (Bundle) in fase di esecuzione. Questa console è estensibile quindi ci permette di aggiungere nuovi comandi alla console aggiungendo nuovi bundle alla console.

Accesso SSH

Karaf consente l'accesso remoto a questa Console di amministrazione con SSH. Chiunque disponga di credenziali valide può connettersi alla console di amministrazione di karaf tramite il terminale SSH.