Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

3.2. Ajouter une dépendance de module explicite à un déploiement

Cette tâche montre comment ajouter une dépendance explicite à une application. On peut ajouter des dépendances explicites de module aux applications pour ajouter les classes de ces modules au chemin de classe de l'application lors du déploiement.
Certaines dépendances sont automatiquement ajoutées aux déploiements par JBoss EAP 6. Voir Section 3.9.1, « Dépendances de modules implicites » pour plus d'informations.

Conditions préalables

  1. Vous devez déjà avoir un projet de logiciel qui fonctionne, et auquel vous souhaitez ajouter une dépendance de module.
  2. Vous devez connaître le nom du module qui est ajouté comme dépendance. Voir Section 3.9.2, « Les modules inclus » pour obtenir la liste des modules statiques inclus dans JBoss EAP 6. Si le module correspond à un autre déploiement, voir Section 3.1.7, « Nommage de modules dynamiques » pour déterminer le nom du module.
Les dépendances peuvent être configurées par deux méthodes différentes :
  1. Par l'ajout d'entrées dans le fichier MANIFEST.MF du déploiement.
  2. Par l'ajout d'entrées dans le descripteur de déploiement jboss-deployment-structure.xml.

Procédure 3.1. Par l'ajout d'une configuration de dépendance à MANIFEST.MF

Les projets Maven peuvent être configurés pour créer les entrées de dépendance requises par le fichier MANIFEST.MF. Voir Section 3.3, « Générer des entrées MANIFEST.MF en utilisant Maven ».
  1. Ajouter le fichier MANIFEST.MF

    Si le projet ne possède pas de fichier MANIFEST.MF, créer un fichier nommé MANIFEST.MF. Pour une application web (WAR), ajouter ce fichier au répertoire META-INF. Pour une archive EJB (JAR), l'ajouter au répertoire META-INF.
  2. Ajouter une entrée de dépendance

    Ajouter une entrée de dépendance au fichier MANIFEST.MF avec une liste de noms de modules de dépendance séparés par des virgules.
    Dépendances : org.javassist, org.apache.velocity
  3. Option : rendre une dépendance optionnelle

    On peut rendre une dépendance optionnelle an ajoutant optional au nom du module de l'entrée de dépendance.
    Dépendances : org.javassist optional, org.apache.velocity
  4. Option : export d'une dépendance

    On peut exporter une dépendance en ajoutant export au nom du module de l'entrée de dépendance.
    Dépendences : org.javassist, org.apache.velocity export
  5. En option : dépendances utilisant des annotations

    Cet indicateur est requis quand la dépendance de module contient des annotations qui doivent être traitées pendant l'analyse des annotations, comme lors de la déclaration des intercepteurs EJB. Si ce n'est pas fait, un intercepteur EJB déclaré dans un module ne peut pas être utilisé en déploiement. Il y a d'autres situations impliquant des analyses d'annotation quand c'est nécessaire.
    Utiliser cet indicateur exige que le nodule comprenne un index Jandex. Les directives de création et d'utilisation d'un index Jandex sont incluses à la fin de cette section.

Procédure 3.2. Ajouter une configuration de dépendance à jboss-deployment-structure.xml

  1. Ajouter jboss-deployment-structure.xml

    Si l'application n'a pas de fichier jboss-deployment-structure.xml, créer un nouveau fichier nommé jboss-deployment-structure.xml et l'ajouter au projet. Ce fichier est un fichier XML ayant l'élément racine de <jboss-deployment-structure>.
    <jboss-deployment-structure> 
    
    </jboss-deployment-structure>
    Pour une application web (WAR), ajouter ce fichier au répertoire WEB-INF. Pour une archive EJB (JAR), l'ajouter au répertoire META-INF.
  2. Ajouter une section de dépendances

    Créer un élément <deployment> à l'intérieur de la racine du document et un élément <dependencies> également.
  3. Ajouter les éléments du module

    Dans le nœud de dépendances, ajouter un élément de module pour chaque dépendance du module. Définir l'attribut name au nom du module.
    <module name="org.javassist" />
  4. Option : rendre une dépendance optionnelle

    On peut rendre une dépendance optionnelle en ajoutant l'attribut optional à l'entrée du module, avec la valeur true. La valeur par défaut de cet attribut est false.
    <module name="org.javassist" optional="true" />
  5. Option : export d'une dépendance

    On peut exporter une dépendance en ajoutant l'attribut optional à l'entrée du module, avec la valeur true. La valeur par défaut de cet attribut est false.
    <module name="org.javassist" export="true" />

Exemple 3.3. jboss-deployment-structure.xml avec deux dépendances

<jboss-deployment-structure>

   <deployment>

      <dependencies>
         <module name="org.javassist" />
         <module name="org.apache.velocity" export="true" />
      </dependencies>

   </deployment>

</jboss-deployment-structure>
JBoss EAP 6 ajoutera les classes à partir des modules spécifiés dans le chemin de classes de l'application quand elle sera déployée.
Créer un index Jandex

L'indicateur d'annotations exige que le module contienne un index Jandex. Vous pouvez créer un nouvel "index JAR" à ajouter au module. Utiliser le JAR Jandex pour créer l'index, puis l'insérer dans un nouveau fichier JAR :

Procédure 3.3. 

  1. Créer l'index

    java -jar $JBOSS_HOME/modules/org/jboss/jandex/main/jandex-1.0.3.Final-redhat-1.jar $JAR_FILE
  2. Créer un espace de travail temporaire

    mkdir /tmp/META-INF
  3. Déplacer le fichier index sur le répertoire de travail

    mv $JAR_FILE.ifx /tmp/META-INF/jandex.idx
    • Option 1: Inclure l'index dans un nouveau fichier JAR
      jar cf index.jar -C /tmp META-INF/jandex.idx
      Puis, metttez le JAR dans le répertoire de modules et modifier module.xml pour y ajouter les roots de ressources.
    • Option 2: Ajouter l'index à une JAR existante
      java -jar $JBOSS_HOME/modules/org/jboss/jandex/main/jandex-1.0.3.Final-redhat-1.jar -m $JAR_FILE
  4. Indiquer à l'importation d'index d'utiliser l'index d'annotations

    Indiquer à l'importation d'index d'utiliser l'index d'annotations, pour que le balayage des annotations permettent de les trouver.
    Choisissez une des méthodes ci-dessous, selon votre situation :
    • Si vous ajoutez une dépendance de module par MANIFEST.MF, ajouter annotations à la suite du nom du module.
      Ainsi, changer :
      Dependencies: test.module, other.module
      en
      Dependencies: test.module annotations, other.module
    • Si vous ajoutez une dépendance de module en utilisant jboss-deployment-structure.xml ajouter annotations="true" à la dépendance du module.