Apache Karaf


Apache Karaf est un projet Java open source qui propose un environnement OSGi pour la création de serveurs.

OSGi Service Platform (Open Services Gateway initiative)

Déploiement à chaud :

Karaf soutient le déploiement à chaud de bundles OSGi en contrôlant les fichiers jar à l'intérieur du "[home]/deploy". Chaque fois qu'un JAR est copié dans ce dossier, il sera installé dans le runtime. On peut ensuite le mettre à jour, le rafraîchir ou le supprimer et les changements seront traités automatiquement. Karaf prend également en charge les bundles éclatés et les déployeurs personnalisés (ceux de "Blueprint" et "Spring" sont inclus par défaut).

Configuration dynamique :

Les services sont généralement configurés par le biais du service "ConfigurationAdmin OSGi". Cette configuration peut être définie dans Karaf via des fichiers de propriétés à l'intérieur du "[home]/etc". Ces configurations sont surveillées et des modifications sur les fichiers de propriétés seront propagées aux services.

Système de journalisation :

En utilisant une journalisation centralisée, supportée par Log4J, Karaf prend en charge un grand nombre d'API (JDK 1.4, JCL, SLF4J, Avalon, Tomcat, OSGi).

Approvisionnement :

L'approvisionnement des bibliothèques ou des applications peut être fait de différentes manières selon les besoins : téléchargement local, installation et démarrage.

Intégration sur l'OS natif :

Karaf peut être intégré dans votre propre système d'exploitation en tant que service, de telle sorte que le cycle de vie soit lié à votre système d'exploitation.

Console SHELL extensible :

Karaf dispose d'une console de texte agréable où l'on peut gérer les services, installer de nouvelles applications ou bibliothèques et gérer leur état. Ce SHELL est facilement extensible par le déploiement de nouvelles commandes dynamiques avec de nouvelles fonctionnalités ou applications.

Accès à distance :

On peut utiliser tout client SSH pour se connecter à Karaf et exécuter des commandes dans la console.

Sécurité :

Framework basé sur JAAS (Java Authentication and Authorization Service).

Gestion des instances :

Karaf fournit des commandes simples pour gérer plusieurs instances. On peut facilement créer, supprimer, démarrer et arrêter les instances de Karaf via la console.

Karaf & OSGi

Caractéristiques intéressantes d'Apache Karaf :

  • Console type bash avec complétion (peut être étendue par chaque bundle)
  • Console de connexion SSH
  • Déploiement de Bundle ou Feature à partir d’une repository maven
  • Création dynamique et facile d’instances files en ligne de commande

L’ensemble de ces caractéristiques rend l’utilisation d’un serveur d’application OSGi aussi simple que celle d’une application standalone Java. Le déploiement et la gestion des applications dans Apache Karaf sont beaucoup plus simples et pratiques que la plupart des serveurs déjà rencontrés. En ajoutant à cela que ce serveur est relativement léger, Apache Karaf est une solution combinant la facilité de développement d’une application J2EE et d’une application standalone utilisant Spring.

Architecture de déploiement

Liste non exhaustive des commandes utilisables en mode console :

activemq:browse activemq:bstat activemq:create-broker Creates a broker instance.
activemq:destroy-broker Destroy a broker instance.
activemq:list activemq:purge activemq:query admin:change-opts Changes the Java options of an existing container instance.
admin:change-rmi-registry-port Changes the RMI registry port (used by management layer) of an existing container instance.
admin:change-rmi-server-port Changes the RMI server port (used by management layer) of an existing container instance.
admin:change-ssh-port Changes the secure shell port of an existing container instance.
admin:clone Clones an existing container instance.
admin:connect Connects to an existing container instance.
admin:create Creates a new container instance.
admin:destroy Destroys an existing container instance.
admin:list Lists all existing container instances.
admin:rename Renames an existing container instance.
admin:start Starts an existing container instance.
admin:stop Stops an existing container instance.
camel:context-info Display detailed information about a Camel context.
camel:context-list Lists all Camel contexts.
camel:context-start Start a Camel context.
camel:context-stop Stop a Camel context.
camel:endpoint-list Lists all Camel endpoints available in CamelContexts.
camel:route-info Display information about a Camel route.
camel:route-list List Camel routes.
camel:route-resume Resume a Camel route or a group of routes.
camel:route-show Display the Camel route definition in XML.
camel:route-start Start a Camel route or a group of routes
camel:route-stop Stop a Camel route or a group of routes.
camel:route-suspend Suspend a Camel route or a group of routes.
config:cancel Cancels the changes to the configuration being edited.
config:delete Delete a configuration.
config:edit Creates or edits a configuration.
config:list Lists existing configurations.
config:propappend Appends the given value to an existing property or creates the property with the specified name and value.
config:propdel Deletes a property from configuration being edited.
config:proplist Lists properties from the currently edited configuration.
config:propset Sets a property in the currently edited configuration.
config:update Saves and propagates changes from the configuration being edited.
cxf:list-busses Lists all CXF Busses.
cxf:list-endpoints Lists all CXF Endpoints on a Bus.
cxf:start-endpoint Starts a CXF Endpoint on a Bus.
cxf:stop-endpoint Stops a CXF Endpoint on a Bus.
dev:create-dump Creates zip archive with diagnostic info.
dev:dynamic-import Enables/disables dynamic-import for a given bundle.
dev:framework OSGi Framework options.
dev:print-stack-traces Prints the full stack trace in the console when the execution of a command throws an exception.
dev:restart Restart Karaf.
dev:show-tree Shows the tree of bundles based on the wiring information.
dev:system-property Get or set a system property.
dev:wait-for-service Wait for a given OSGi service.
dev:watch Watches and updates bundles.
features:addurl Adds a list of repository URLs to the features service
features:chooseurl Add a repository url for well known features
features:info Shows information about selected feature.
features:install Installs a feature with the specified name and version.
features:list Lists all existing features available from the defined repositories.
features:listrepositories Displays a list of all defined repositories.
features:listurl Displays a list of all defined repository URLs.
features:listversions Lists all versions of a feature available from the currently available repositories.
features:refreshurl Reloads the list of available features from the repositories.
features:removerepository Removes the specified repository features service.
features:removeurl Removes the given list of repository URLs from the features service
features:uninstall Uninstalls a feature with the specified name and version.
help Displays this help or help about a command
jaas:cancel Cancel the modification on a JAAS Realm
jaas:manage Manage users and roles of a JAAS Realm
jaas:pending List the modification on the selected JAAS Realm/Login Module
jaas:realms List JAAS Realms
jaas:roleadd Add a role to a user
jaas:roledel Delete a role from a user
jaas:update Update the selected JAAS Realm
jaas:useradd Add a user
jaas:userdel Delete a user
jaas:users List the users of the selected JAAS Realm/Login Module
log:clear Clear log entries.
log:display Displays log entries.
log:display-exception Displays the last occurred exception from the log.
log:get Shows the currently set log level.
log:set Sets the log level.
log:tail Continuously display log entries.
osgi:bundle-level Gets or sets the start level of a given bundle.
osgi:bundle-services List OSGi services per bundle
osgi:classes Displays list of classes contained in bundles
osgi:find-class Locates a specified class in any deployed bundle
osgi:headers Displays OSGi headers of a given bundle.
osgi:info Displays detailed information of a given bundle.
osgi:install Installs one or more bundles.
osgi:list Lists all installed bundles.
osgi:ls Lists OSGi services.
osgi:name Show or change Karaf instance name.
osgi:refresh Refresh a bundle.
osgi:resolve Resolve bundle(s).
osgi:restart Stops and restarts bundle(s).
osgi:shutdown Shutdown the framework down.
osgi:start Starts bundle(s).
osgi:start-level Gets or sets the system start level.
osgi:stop Stop bundle(s).
osgi:uninstall Uninstall bundle(s).
osgi:update Update bundle.
osgi:version Display the instance version.
packages:exports Displays exported packages.
packages:imports Displays imported packages.
shell:cat Displays the content of a file or URL.
shell:clear Clears the console buffer.
shell:date Display the current time in the given FORMAT
shell:each Execute a closure on a list of arguments.
shell:echo Echoes or prints arguments to STDOUT.
shell:exec Executes system processes.
shell:grep Prints lines matching the given pattern.
shell:head Displays the first lines of a file.
shell:history Prints command history.
shell:if If/Then/Else block.
shell:info Prints system information.
shell:java Executes a Java standard application.
shell:logout Disconnects shell from current session.
shell:more File pager.
shell:new Creates a new java object.
shell:printf Formats and prints arguments.
shell:sleep Sleeps for a bit then wakes up.
shell:sort Writes sorted concatenation of all files to standard output.
shell:source Run a script
shell:tac Captures the STDIN and returns it as a string. Optionally writes the content to a file.
shell:tail Displays the last lines of a file.
shell:watch Watches & refreshes the output of a command
ssh:ssh Connects to a remote SSH server
ssh:sshd Creates a SSH server

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.