Je suis casiment certain qu’au moins une de vos applications J2EE utilise des librairies externes comme Log4j, Struts ou Hibernate. Cependant au moment de packager une application J2EE, la tentation est grande de ne pas s’encombrer de ces fichiers Jar. Souvent on préferera les placer une bonne fois pour toute dans $JBOSS_HOME/server/default/lib alors qu’il existe plusieurs moyens de simplifier ce déploiement.
Mécanisme 1: le répertoire WEB-INF/lib
Si vous plaçer les librairies externes comme struts.jar dans le répertoire WEB-INF/lib d’une application Web, celle-ci sera en mesure de les charger. Les librairies sont donc inclues dans le fichier .war de votre application. Cependant ce mecanisme ne fonctionne pas avec les EJB.
Mécanisme 2: le référencement via le fichier Manifest
Ce principe est pratique si vous avez un fichier .ear contenant un ou plusieurs EJB et un WAR.
Voici comment cela fonctionne: placez à la racine du fichier .ear tous les JAR à inclure en tant que librairies. Ensuite, dans chacun des fichiers .jar ou .war de votre application, se trouve un fichier META-INF/MANIFEST.MF. Dans ce fichier la balise Class-Path permettra alors de référencer un des fichiers jar placés à la racine de votre .ear.
Si tout cela vous semble complexe, voici un exemple:
META-INF/application.xml struts.jar mywebapp.war META-INF/MANIFEST.MF: Manifest-Version: 1.0 Class-Path: struts.jar WEB-INF/web.xml
Grâce à ce système simple votre application J2EE sera prête à être déployée sans aucunes interventions sur le serveur d’application.
L’article dont je me suis largement inspiré se trouve sur le site de SUN Packaging Utility Classes or Library JAR Files in a Portable J2EE Application. Il existe d’autres méthodes de déploiement qui cependant me semble plus complexes que celles-ci.