Tutoriel pour apprendre à installer JBoss 7 AS

Image non disponible

Cet article s'intéresse à l'installation de JBoss 7 AS, un serveur d'application qui implémente la spécification Java EE 6.

Pour réagir au contenu de cet article, un espace de dialogue vous est proposé sur le forum 1 commentaire Donner une note à l'article (5).

Article lu   fois.

L'auteur

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Introduction

Le serveur d'application JBOSS 7 est une implémentation des Spécifications Java EE 6. J'utilise cette version pour mes projets personnels et en particulier pour sa rapidité.

Pour rappel, l'aventure de JBoss a commencé en 1999. L'organisation du projet était basée sur l'open source dès le début.

Image non disponible

On voit une progression régulière des versions majeures jusqu'en 2004. À noter que cette année-là, la version 4.0 était la première version certifiée chez JBoss. Ensuite, un gros trou… Puis une version 4.2, dont le but était de nous apporter une implémentation partielle de JavaEE 5 et de nous faire patienter avant la version 5.0 qui devait être certifiée JavaEE 5. Pourquoi un tel délai ? Il y a probablement plusieurs raisons. Tout d'abord techniques. Le noyau a été réécrit, pour pouvoir gérer des composants internes de granularité plus fine. Ensuite, JBoss a été rachetée par RedHat, ce qui a probablement déstabilisé les équipes et a eu une influence sur leur organisation… Toute ressemblance avec les versions d'un JDK ayant existé est fortuite… Toujours est-il que cette version 5 a traumatisé pas mal de monde. C'est probablement la version la plus utilisée aujourd'hui.

La version 6 qui a suivi est basée sur la même architecture que la 5, mais implémente JavaEE 6, sans être certifiée. Une nouvelle version d'attente, semble-t-il. Et cette année, cette version 7 est sortie, complètement différente des précédentes. Je peux dire sans problème que la version 6 ressemble plus à la v 2 qu'à la v 7. Aujourd'hui le projet JBoss est à sa version 8 et il a changé de nom pour devenir Wild Fly.

II. Architecture

L'architecture de JBoss 7 est très différente de l'architecture des précédentes versions de JBoss (4/5/6). Elle se veut résolument plus modulaire, basée comme d'autres serveurs (GlassFish 3) sur la spécification OSGI.

JBoss AS 7 est constitué d'un noyau, appelé core infrastructure et de composants, appelés subsystems. Ces composants sont souvent issus de projets autonomes, comme Hibernate, Weld, HonertQ ou Infinispan.

Image non disponible

En comparaison avec un JBoss AS 6, il n'y a aucun changement fondamental. Le noyau s'appelait micro container et les composants étaient des services. On retrouve Hibernate, Weld, HonertQ et Infinispan.

Le changement n'est donc pas dans les composants utilisés, mais dans le noyau. On ne va pas détailler toutes les parties de l'infrastructure, mais on peut parler du système de threading qui permet des gains de vitesse, en particulier au démarrage et au déploiement, ou de modules qui devraient rationaliser la gestion du classpath.

III. Amélioration de la version 7

Le premier effet de ce changement est la réduction du temps de démarrage. Sur mon poste de travail, un laptop core2 duo, on est passé de 45 secondes à 3 secondes !

En mesurant cette valeur pour les versions précédentes, on constate que la version 5 a été une vraie régression sur ce plan. À l'époque, l'équipe de JBoss était plus concentrée sur la robustesse que sur l'agilité, plus sur l'environnement de production que sur le développement. Et, alors que JBoss avait commencé par séduire les développeurs, il s'est éloigné de ce chemin.

Image non disponible

En 2009, dans le comparatif sur les temps de démarrage fait par Antonio Goncalves, JBoss était le plus mauvais ; même derrière Websphere. Glassfish était en tête. En fait, le temps de démarrage n'était tout simplement pas considéré comme une fonctionnalité par l'équipe de développement de JBoss alors qu'il faisait partie des priorités chez Glassfish.

On voit bien que les choses ont changé puisque aujourd'hui, il y a une page dédiée aux records de démarrage sur le wiki de JBoss. Le record est inférieur à une seconde. L'amélioration du temps de démarrage est pas mal lié au nombre de processeurs parce que JBoss utilise beaucoup la mise en parallèle des tâches.

Le deuxième point d'allègement est la mémoire. J'ai mesuré ici la mémoire heap utilisée après le démarrage. On voit aussi que la situation s'est nettement dégradée avec la version 5 et a été considérablement améliorée avec la v7.

Image non disponible

Enfin le dernier point d'allègement est le nombre de fichiers XML utilisés pour la configuration. On passe de 150 à un seul, ou presque. On dit d'ailleurs que le temps de parsing XML de JBoss AS 5 ou 6 est supérieur au temps complet de démarrage de JBoss AS 7.

Ça améliore donc les temps de démarrage, mais surtout, ça nous facilite la vie. Fini le labyrinthe pour trouver le bon répertoire puis le bon fichier, puis le bon bean dans le fichier. Tout est centralisé dans un seul fichier, avec une structure de répertoire plus simple.

IV. Téléchargement

Aller sur le site de téléchargement JBOSS : http://www.jboss.org/jbossas/downloads/

Image non disponible

Cliquer sur le lien « ZIP » colonne « Download » de la dernière version de JBoss 7 (ici la version JBoss 7.1). L'écran suivant apparaît, précisant qu'il s'agit d'une version non supportée par JBoss/RedHat.

Image non disponible

En validant ce message le téléchargement démarre.

Image non disponible

Ça y est. Le téléchargement est terminé. Reste à installer.

V. Installation en 3 étapes

V-A. Dézipper l'archive JBoss

Image non disponible

V-B. Installation JDK et variable d'environnement JAVA_HOME

Voir notre tutoriel : Installation JDK 6 (valable aussi pour JDK 7).

Variable d'environnement JAVA_HOME :

Image non disponible

REMARQUE : pour arriver aux variables d'environnement :

  • cliquer-droit sur l'icône « poste de travail » ;
  • puis propriétés ;
  • onglet « avancé » ;
  • bouton « variables d'environnement ».

Recommandation : mettre vos variables d'environnement dans la section « variables Utilisateur ».

V-C. Variable d'environnement JBOSS_HOME

Image non disponible

Ça y est, l'installation de JBOSS 7 est terminée. Reste à analyser l'arborescence, puis démarrer.

VI. Arborescence JBoss 7

Image non disponible

VI-A. Répertoire bin

Le répertoire qui vous intéressera le plus dans un premier temps est le répertoire bin, dans lequel se trouvent :

  • scripts + configurations de lancement en mode standalone (standalone.bat + standalone.conf.bat / standalone.sh +standalone.conf) - équivalent du run.bat des précédentes versions ;
  • scripts + configurations de lancement en mode domain (domain.bat +domain.conf.bat / domain.sh + domain.conf) ;
  • scripts + configuration (jboss-cli.xml) lancement du (nouveau) mode interactif (jboss-cli.bat / jboss-cli.sh) - version plus sophistiquée du script twiddle.bat versions JBoss précédentes ;
  • les scripts de génération du WSDL web services (wsconsume.bat / wsconsume.sh et des interfaces java associées ( wsprovide.bat / wsprovide.sh ). Notez également la présence de deux scripts liés à la sécurité de JBoss AS 7 :

    • script add-user.bat / add-user.sh : pour ajouter des utilisateurs dans les fichiers de propriétés,
    • script vault.bat / vault.sh : pour sécuriser un mot de passe (cryptage),
    • script jdr.bat / jdr.sh (Jboss Diagnostic Report).

VI-B. Répertoire standalone

Dans Jboss 7, le démarrage dit standalone est géré dans le répertoire standalone. Cela représente le lancement d'une instance de JBoss « isolée ».

Image non disponible

INFO 1 : le sous-répertoire deployments est dédié à la réception des livrables (war, ear, jar, rar, sar).

INFO 2 : le sous-répertoire configuration est dédié à la configuration du serveur en mode standalone. C'est le fichier de configuration standalone.xml qui est utilisé par défaut.

Image non disponible
Image non disponible

REMARQUE : il n'y a qu'un seul profile, contenant plusieurs sous-systèmes.

VI-C. Répertoire domain

Dans JBoss 7, le démarrage dit domain est géré dans le répertoire domain. Un domaine JBoss 7 est utilisé pour gérer et coordonner un ensemble d'instances JBoss 7. Ces instances sont gérées par un contrôleur de domaine.

Image non disponible

Le répertoire data\content est dédié aux livrables (war, ear…).

Notez en particulier le répertoire configuration :

Image non disponible

Voici le rôle des fichiers suivants :

fichier domain.xml : décrit tous les services lancés par un nœud d'un domaine. Définit aussi les groupes de serveurs qui font partie de ce domaine.

Image non disponible
Image non disponible

REMARQUE : il y a plusieurs profiles, contrairement à l'approche standalone.

fichier host.xml : ce fichier est présent sur chaque hôte où un domaine est installé. Il spécifie les configurations spécifiques aux instances JBoss7 s'exécutant sur cet hôte.

Image non disponible

fichier logging.properties : format de log du process bootstrap.

VI-D. Répertoire modules

Image non disponible

Un répertoire qui marque une différence dans la gestion des bibliothèques serveurs est le répertoire modules.

Dans les versions 5.x et 6.x de JBoss, le répertoire common/lib centralisait tous les jars communs à toutes les distribution JBoss ( default, all, …). Un répertoire spécifique /distribution/lib permettait d'avoir des bibliothèques spécifiques. Les bibliothèques du serveurJBoss étant dans JBOSS_HOME/server.

Jboss 7 tranche avec les usages du passé en adoptant une approche modulaire.

Les bibliothèques de démarrage (bootstrap) du serveur sont désormais dans le jar jboss-modules.jar à la racine.

Les bibliothèques postdémarrage sont dans le répertoire modules.

Image non disponible

Les modules JBoss 7 peuvent charger les bibliothèques suivant deux approches :

  • système de fichiers (voir ci-dessous) ;
  • exécution directe de jar (les dépendances sont dans MANIFEST).

Analysez dans le script standalone.bat la commande de lancement de JBoss, précisant le répertoire (-mp) servant au chargement dynamique des modules : java -jar jboss-modules.jar -mp %JBOSS_MODULEPATH%

Image non disponible

Localisez le répertoire associé à l'implémentation de référence JSF utilisée (modules/com/sun/jsf-impl/main).

Image non disponible

Ouvrez le fichier module.xml, précisant la configuration de ce module.

Image non disponible

Une définition de module contient deux sections clés : resources et dependencies.

Pour la deuxième approche, on peut lancer : java -jar jboss-modules.jar -jar votreappli.jar

VI-E. Répertoire bundles

Image non disponible

VI-F. Répertoire docs

Ce répertoire contient des exemples de configurations et de schémas prédéfinis. Ces documents peuvent servir de modèle à un administrateur.

VII. Démarrage mode standalone

Entrez dans le répertoire bin, puis

Image non disponible

sous windows, lancer le script : standalone.bat (il est l'équivalent du run.bat / run.sh des anciennes versions de JBoss).

Image non disponible

Notez la rapidité du démarrage, due à la nouvelle architecture modulaire.

Sous Linux, lancer : standalone.sh.

Pour tester que JBoss est bien démarré, avec un navigateur, allez sur http://localhost:8080.

Image non disponible

Cliquer sur le lien « Documentation ».

Image non disponible

Mettez dans vos favoris les deux liens clés qui seront utiles pour votre montée en compétence en développement ou administration JBOSS 7 :

INFO : Domaine Jboss 7 = Instances Jboss 7 + Contrôleur de domaine + Contrôleur d'hôte.

Pour lancer JBoss 7 en mode domain, lancer le script command.bat (command.sh sous linux).

Image non disponible
Image non disponible

Notez la création d'un répertoire servers dans le répertoire domain

Image non disponible

VIII. Connexion au serveur JBoss en passant par le CLI

JBoss 7 vient avec l'outil d'administration CLI (Command Line Interface), qui est une version plus élaborée de l'ancien outil twiddle présent dans les versions précédentes de JBoss.

Cet outil se trouve dans le répertoire bin de Jboss 7 : jboss-cli.bat

Image non disponible

Double-cliquez sur le fichier (ou lancez-le en ligne de commande). L'écran suivant apparaît :

Image non disponible

Entrez connect :

Image non disponible

Vous êtes désormais en connexion avec le serveur JBoss en ligne de commande.

Le CLI supporte l'autocomplétion.

On peut également passer par le navigateur en utilisant l'URL : http://localhost:9990

Image non disponible

IX. Arrêt

IX-A. Méthode 1

Mode standalone

Si vous avec accès à une fenêtre à partir de laquelle a été lancé JBoss, le plus simple est de faire CTRL+ C.

Cependant, si vous n'avez pas accès, mieux vaut passer par le CLI.

Une fois connecté en mode CLI, appuyez sur la touche «  : » puis TAB afin de connaître les possibilités d'action.

Identifiez la commande shutdown.

Image non disponible
Image non disponible

IX-B. Méthode 2

Mode domain

En mode domain, vous devez préciser quel serveur vous souhaitez arrêter. Ici, par exemple, vous arrêtez le serveur master :

jboss-cli.bat —connect command=/host=master:shutdown

Image non disponible

IX-C. Arrêt via un script

Mode standalone

jboss-cli.bat —connect command:shutdown

Mode domain

jboss-cli.bat —connect command=/host=master:shutdown # Windows jboss-admin.sh —connect command=/host=master:shutdown # Unix / Linux

X. Redémarrage

Mode standalone

Image non disponible
Image non disponible

XI. Conclusion et remerciements

Cet article a été publié avec l'aimable autorisation de Jeremy Jeanne.

Nous tenons à remercier FRANOUCH pour sa relecture orthographique attentive de cet article et Mickaël Baron pour la mise au gabarit.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2015 Jeremy Jeanne. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.