JBOSS 7 et gestion des modules

Afin d’alleger les WAR et EAR et limiter le temps de déploiement, JBOSS 7 propose une solution de module particulièrement pratique. Explication sur la méthode de mise en place.
Pierre LISERONMis à jour le 24 Févr 2012
jbossas7_splash.jpg

Lors de la création de projet, il est fréquent que le répertoire lib du répertoire WEB-INF salourdisse de dizaines de librairie quil est nécessaire de redéployer à chaque fois.

GESTION DES MODULES

Pour pallier ce problème, il est possible dutiliser sous JBOSS 7 la structure des modules pour mettre ces librairies. Par exemple, nous avons un projet qui sappelle project-manager. Pour externaliser les librairies, il suffit de créer un répertoire project-manager dans /modules/ puis un répertoire main dans le nouveau répertoire crée. 

repertoire.jpg

Librairies et fichier module.xml

Suite à cette action il suffit de disposer toutes les librairies à l’intérieur de ce répertoire et de créer un fichier module.xml. 

lib.jpg

Les fichiers *.jar.index sont crées lors du démarrage du serveur et de lutilisation du module par votre projet. Il ne faut pas copier ces fichiers lors de la création dun nouveau serveur, mais laisser votre serveur les créer.

Une fois vos *.jar copiés, il faut créer le fichier module.xml comme ceci:

Déclarer toutes vos librairies avec les balises resource-root path. 

librairie.jpg

Si vous avez des dépendances il suffit des les déclarer. Noubliez pas de bien nommer votre module dans la balise module.

Configuration du MANIFEST.MF

Une fois ces actions réalisées, il suffit de redémarrer votre serveur. Pour lutiliser dans votre projet, rajouter un fichier MANIFEST.MF dans META-INF avec le contenu suivant. Il est nécessaire de mettre en dépendencies le nom du module précédemment crée. Dorénavant, vous pouvez supprimer les libs du répertoire WEB-CONTENT/lib et ainsi alléger votre projet. (Il est tout de même nécessaire de mettre votre lib  dans un répertoire de votre projet afin de pouvoir compiler) Mais vous nêtes plus obligé de les inclure dans votre WAR/EAR.

Manifest-Version: 1.0
Class-Path:
Dependencies: org.slf4j, project-manager