JBoss Fuse - Apache Karaf

Dans ce chapitre, nous discuterons d'Apache Karaf et de la raison pour laquelle il est appelé comme un conteneur OSGi léger, ainsi que de ses avantages et d'autres fonctionnalités importantes.

Le problème JVM

La machine virtuelle JVM ou Java n'agit pas comme une machine virtuelle réelle. Une machine qui vous permettra d'arrêter, de démarrer ou de redémarrer les composants qui tournent à l'intérieur à la volée. Il peut parfois autoriser des déploiements à chaud au niveau de la classe, mais il est impossible de déployer ou d'annuler le déploiement d'un composant de votre application dans votre machine virtuelle sans la redémarrer.

Pour résoudre ce problème et permettre la modularité de l'application Java, Fuse utilise un environnement d'exécution basé sur OSGi appelé Apache Karaf.

OSGi

La technologie OSGi est un ensemble de spécifications qui définissent un système de composants dynamiques pour java. Ces spécifications permettent un modèle de développement dans lequel les applications sont (dynamiquement) composées de nombreux composants différents (réutilisables).

Avantages d'OSGi

  • Reduced Complexity - L'application est conçue comme des composants collaboratifs qui cachent leurs détails d'implémentation les uns des autres, ce qui réduit la complexité.

  • Reusability - De nombreux composants peuvent exploiter le même composant déployé dans un conteneur.

  • Deployment - OSGi prend en charge le démarrage, l'arrêt et la mise à jour des composants à la volée avec ses API de gestion du cycle de vie sans redémarrage du conteneur.

Fonctionnalités Bundles Vs

Voici la comparaison entre les offres groupées et les fonctionnalités.

Liasses

Les bundles sont équivalents à OSGi ce que les jars sont à JVM. Les bundles sont des artefacts qui peuvent être déployés dans un conteneur OSGi. Les bundles sont des composants qui fonctionnent ensemble ou indépendamment pour former une application.

Ces bundles peuvent être installés, désinstallés, mis à jour, démarrés ou arrêtés au moment de l'exécution sans redémarrer le conteneur.

traits

Les fonctionnalités sont un moyen de déployer plusieurs bundles ensemble. Parfois, il est plus judicieux de déployer des bundles en groupe. Les fonctionnalités nous permettent de déployer un groupe de bundles avec une seule commande.

Pourquoi un autre conteneur?

Apache Karaf est un runtime basé sur OSGi, c'est là que nos bundles d'applications s'exécutent. Fuse utilise Apache Karaf comme environnement d'exécution dans lequel les bundles s'exécutent et collaborent pour fournir des fonctionnalités métier.

Karaf est construit sur Felix et Equinox qui sont des Frameworks OSGi.

Architecture de Karaf

Apache Karaf ajoute les fonctionnalités supplémentaires suivantes au runtime OSGi de base.

Déploiement à chaud

Karaf prend en charge le déploiement à chaud. Il contient un répertoire de déploiement à chaud. Tout ce qui est placé dans ce répertoire est automatiquement déployé et installé dans Karaf sous forme de bundle.

Enregistrement

Karaf fournit une journalisation centralisée en générant des journaux pour tous les bundles dans $Fuse_home/data/log. Nous pouvons modifier la configuration de l'enregistreur dansorg.ops4j.pax.logging.cfg dans $Fuse_home/etc directory.

Console d'administration

Karaf fournit une console d'administration sophistiquée et lucide pour interagir avec l'instance en cours d'exécution de fuse. Il fournit également un ensemble de commandes préinstallées qui peuvent être utilisées pour gérer et surveiller les composants (Bundle) lors de l'exécution. Cette console est extensible, elle nous permet donc d'ajouter de nouvelles commandes à la console en ajoutant de nouveaux bundles à la console.

Accès SSH

Karaf autorise l'accès à distance à cette console d'administration avec SSH. Toute personne disposant d'informations d'identification valides peut se connecter à la console d'administration karaf via le terminal SSH.