Chapitre 4. Outils et Astuces

4.1. Ressources pour assister à votre migration

4.1.1. Ressources pour assister à votre migration

Voici une liste des ressources qui pourraient vous aider quand vous faîtes migrer une application vers JBoss Enterprise Application Platform 6.
Outils
Il y a plusieurs outils qui peuvent vous aider à automatiser certains changements de configuration. Voir Section 4.1.2, « Familiarisez-vous avec les outils qui pourraient avoir un impact sur votre migration »
Conseils de débogage
Pour obtenir une liste des causes les plus fréquentes et les résolutions des problèmes et erreurs qui peuvent s'afficher lorsque vous migrez votre application, consulter Section 4.2.1, « Débogger et Résoudre les problèmes de migration ».
Exemples de migration
Pour obtenir des exemples d'applications migrées dans JBoss Enterprise Application Platform 6, voir : Section 4.3.1, « Revue de la migration des exemples d'applications ».

4.1.2. Familiarisez-vous avec les outils qui pourraient avoir un impact sur votre migration

Résumé

Il existe d'autres outils qui peuvent vous assister dans vos efforts de migration. Voici une liste de ces outils, ainsi qu'une description de ce qu'ils peuvent faire.

Tattletale
Avec le changement au niveau du chargement des classes modulaires, vous devez trouver et corriger les dépendances d'applications. Tattletale peut vous aider à identifier les noms de modules dépendants et à générer la configuration XML de votre application.
Outil de migration IronJacamar
Dans JBoss Enterprise Application Platform 6, les adaptateurs de ressources et sources de données ne sont plus configurés dans un fichier séparé. Ils sont maintenant définis dans le fichier de configuration et utilisent de nouveaux schémas. L'outil de migration IronJacamar peut vous aider à convertir l'ancienne configuration dans un format qui convient à JBoss Enterprise Application Platform 6.

4.1.3. Utiliser Tattletale pour trouver des dépendances d'applications

Résumé

Compte tenu des changement au niveau chargement de classes dans JBoss Enterprise Application Platform 6, vous verrez sans doute des traces ClassNotFoundException ou ClassCastException dans le journal de JBoss quand vous migrez votre application. Pour résoudre ces erreurs, vous aurez besoin de trouver les JAR qui contiennent les classes spécifiées par les exceptions.

Tattletale est un excellent outil de tierce partie qui scanne votre application de manière récursive et qui fournit des rapports détaillés sur son contenu. Tatlletale 1.2.0.Beta2 et versions supérieures contient un support supplémentaire pour le nouveau chargement de classe de JBoss Modules, qui est utilisé dans JBoss Enterprise Application Platform 6. Le rapport « JBoss EAP 6 » peut être utilisé pour identifier automatiquement et pour générer des noms de modules dépendants à inclure dans votre fichier d'application jboss-deployment-structure.xml.

Procédure 4.1. Installer et exécuter Tattletale pour trouver des dépendances d'application

Note

Tattletale est un outil de tierce partie non pris en charge dans JBoss Enterprise Application Platform 6. Pour obtenir la documentation la plus récente sur la façon d'installer et d'utiliser le Tattletale, allez sur site web Tattletale http://www.jboss.org/tattletale.

4.1.4. Télécharger et installer Tattletale

Procédure 4.2. 

  1. Télécharger Tattletale version 1.2.0.Beta2 ou version supérieure à partir de http://sourceforge.net/projects/jboss/files/JBoss%20Tattletale.
  2. Décompresser le fichier dans le répertoire de votre choix.
  3. Modifier le fichier TATTLETALE_HOME/jboss-tattletale.properties ainsi :
    1. Ajouter ee6 et as7 à la propriété profiles.
      profiles=java5, java6, ee6, as7
    2. Dé-commenter les propriétés scan et reports.

Note

Tattletale est un outil de tierce partie non pris en charge dans JBoss Enterprise Application Platform 6. Pour obtenir la documentation la plus récente sur la façon d'installer et d'utiliser le Tattletale, allez sur site web Tattletale http://www.jboss.org/tattletale.

4.1.5. Créer et Réviser le Rapport Tattletale

Procédure 4.3. 

  1. Créer un rapport Tattletale en lançant la commande suivante : java -jar TATTLETALE_HOME/tattletale.jarAPPLICATION_ARCHIVEOUTPUT_DIRECTORY
    Par exemple : java -jar tattletale-1.2.0.Beta2/tattletale.jar applications/jboss-seam-booking.ear output-results/
  2. Dans le navigateur, ouvrir le fichier OUTPUT_DIRECTORY/index.html et cliquer sur la section "JBoss EAP 6" sous "Reports".
    1. La colonne de gauche liste les archives qui sont utilisées par l'application. Cliquer sur le lien ARCHIVE_NAME pour voir des informations sur les archives, comme leurs emplacements, les informations sur le manifeste, et les classes qu'elles contiennent.
    2. Le lien jboss-deployment-structure.xml sur la colonne de droite indique comment spécifier la dépendance du module de l'archive nommée sur la colonne de droite. Cliquer dessus pour voir comment définir l'information de module de dépendance de déploiement pour cette archive.

Note

Tattletale est un outil de tierce partie et n'est pas supporté dans EAP 6. Pour obtenir la documentation la plus récente sur la façon d'installer et d'utiliser Tattletale, consulter le site Tattletale http://www.jboss.org/tattletale.

4.1.6. Utilisation de l'outil IronJacamar pour migrer les Configuration d'Aptateurs de ressources et Sources de données

Résumé

Dans les versions précédentes du serveur d'applications, les adaptateurs ressources et sources de données étaient configurés et déployés à l'aide d'un fichier avec un suffixe de *-ds.xml. La distribution IronJacamar 1.1 contient un outil de migration qui peut être utilisé pour convertir ces fichiers de configuration dans le format attendu par JBoss Enterprise Application Platform 6. L'outil analyse le fichier de configuration source de la version précédente, puis crée et écrit la configuration XML dans un fichier de sortie dans le nouveau format. Ce fichier XML peut ensuite être copié et collé sous le sous-système correct dans le fichier de configuration du serveur JBoss Enterprise Application Platform 6. Cet outil fait de son mieux pour convertir les anciens attributs et les éléments dans le nouveau format, toutefois, il peut être nécessaire d'apporter des modifications supplémentaires au fichier généré.

Note

L'outil de migration IronJacamar est un outil de tierce partie non pris en charge dans JBoss Enterprise Application Platform 6. Pour obtenir plus d'informations sur IronJacamar, visiter http://www.jboss.org/ironjacamar. Pour obtenir la documentation la plus récente sur la façon d'installer et d'utiliser cet outil, consulter http://docs.jboss.org/ironjacamar/userguide/1.1/en-US/html/tools.html#tools_migration.

4.1.7. Télécharger et Installer l'outil de migration IronJacamar

Note

L'outil de migration IronJacamar 1.1 n'est disponible que pour les versions 1.1 ou supérieures.

Procédure 4.5. 

  1. Télécharger IronJacamar 1.1 ou version supérieure, à partir de ce lien : http://www.jboss.org/ironjacamar/downloads/
  2. Décompresser le fichier téléchargé dans un répertoire de votre choix.
  3. Trouver le script de conversion dans la distribution IronJacamar
    • Le script Linux se trouve ici : IRONJACAMAR_HOME/doc/as/converter.sh
    • Le fichier batch Windows se situe à l'adresse suivante : IRONJACAMAR_HOME/doc/as/converter.bat

Note

L'outil de migration IronJacamar est un outil de tierce partie non pris en charge dans JBoss Enterprise Application Platform 6. Pour obtenir plus d'informations sur IronJacamar, visiter http://www.jboss.org/ironjacamar. Pour obtenir la documentation la plus récente sur la façon d'installer et d'utiliser cet outil, consulter http://docs.jboss.org/ironjacamar/userguide/1.1/en-US/html/tools.html#tools_migration.

4.1.8. Utiliser l'outil de migration IronJacamar pour convertir un Fichier de configuration de source de données

Procédure 4.6. 

  1. Ouvrir une ligne de commande et naviguez vers le répertoire IRONJACAMAR_HOME/docs/as/.
  2. Exécuter le script de conversion en saisissant la commande suivante :
    • Dans Linux: ./converter.sh -ds SOURCE_FILE TARGET_FILE
    • Dans Microsoft Windows: ./converter.bat -ds SOURCE_FILE TARGET_FILE
    Le fichier SOURCE_FILE est le fichier datasource -ds.xml en provenance de la version précédente. Le fichier TARGET_FILE contient la nouvelle configuration.
    Ainsi, pour convertir le fichier de configuration d'adaptateur de ressources jboss-seam-booking-ds.xml qui se trouve dans le répertoire en cours, vous saisissez :
    • Dans Linux: ./converter.sh -ds jboss-seam-booking-ds.xml new-datasource-config.xml
    • Dans Microsoft Windows: ./converter.bat -ds jboss-seam-booking-ds.xml new-datasource-config.xml
    Notez que le paramètre de conversion de source de données est -ds.
  3. Copier l'élément <datasource> à partir du fichier cible et coller le dans le fichier de configuration du serveur sous l'élément <subsystem xmlns="urn:jboss:domain:datasources:1.0"><datasources>.

    Important

    Vous devez interrompre le serveur avant de modifier le fichier de configuration du serveur pour que votre changement puisse être persisté au redémarrage du serveur.
    • Si vous exécutez dans un domaine géré, copier l'XML dans le fichier EAP_HOME/domain/configuration/domain.xml.
    • Si vous exécutez dans un serveur autonome, copier l'XML dans le fichier EAP_HOME/standalone/configuration/standalone.xml.
  4. Modifier l'XML créé dans le nouveau fichier de configuration.
    Voici un exemple du fichier de configuration de source de données jboss-seam-booking-ds.xml pour l'exemple Seam 2.2 Booking fourni dans JBoss Enterprise Application Platform 5.x:
    <?xml version="1.0" encoding="UTF-8"?>
    <datasources>
      <local-tx-datasource>
        <jndi-name>bookingDatasource</jndi-name>
        <connection-url>jdbc:hsqldb:.</connection-url>
        <driver-class>org.hsqldb.jdbcDriver</driver-class>
        <user-name>sa</user-name>
        <password></password>
      </local-tx-datasource>
    </datasources>
    
    Voici le fichier de configuration qui a été généré en exécutant le script de convertisseur. Le fichier généré contient un élément <driver-class>. La meilleure façon de définir la classe de pilote dans JBoss Enterprise Application Platform 6 est par un élément <driver>. Voici l'XML qui en résulte dans le fichier de configuration JBoss Enterprise Application Platform 6 avec des modifications pour décommenter l'élément <driver-class> et ajouter l'élément <driver> correspondant :
    <subsystem xmlns="urn:jboss:domain:datasources:1.0">
      <datasources>
        <datasource enabled="true" jndi-name="java:jboss/datasources/bookingDatasource" jta="true"
                pool-name="bookingDatasource" use-ccm="true" use-java-context="true">
          <connection-url>jdbc:hsqldb:.</connection-url>
          <!-- Comment out the following driver-class element 
               since it is not the preferred way to define this.
               <driver-class>org.hsqldb.jdbcDriver</driver-class>     -->
          <transaction-isolation>TRANSACTION_NONE</transaction-isolation>
          <pool>
            <prefill>false</prefill>
            <use-strict-min>false</use-strict-min>
            <flush-strategy>FailingConnectionOnly</flush-strategy>
          </pool>
          <security>
            <user-name>sa</user-name>
            <password/>
          </security>
          <validation>
            <validate-on-match>false</validate-on-match>
            <background-validation>false</background-validation>
            <use-fast-fail>false</use-fast-fail>
          </validation>
          <timeout/>
          <statement>
            <track-statements>false</track-statements>
          </statement>
        </datasource>
        <drivers>
          <!-- The following driver element was not in the 
         XML target file. It was created manually. -->
          <driver name="h2" module="com.h2database.h2">
            <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
            </driver>
          </drivers>
      </datasources>
    </subsystem>
    
    

Note

L'outil de migration IronJacamar est un outil de tierce partie non pris en charge dans JBoss Enterprise Application Platform 6. Pour obtenir plus d'informations sur IronJacamar, visiter http://www.jboss.org/ironjacamar. Pour obtenir la documentation la plus récente sur la façon d'installer et d'utiliser cet outil, consulter http://docs.jboss.org/ironjacamar/userguide/1.1/en-US/html/tools.html#tools_migration.

4.1.9. Utiliser l'outil de migration IronJacamar pour convertir un Fichier de configuration d'adaptateur de ressources

Procédure 4.7. 

  1. Ouvrir une ligne de commande et naviguez vers le répertoire IRONJACAMAR_HOME/docs/as/.
  2. Exécuter le script de conversion en saisissant la commande suivante :
    • Dans Linux: ./converter.sh -ra SOURCE_FILE TARGET_FILE
    • Dans Microsoft Windows: ./converter.bat -ra SOURCE_FILE TARGET_FILE
    Le fichier SOURCE_FILE est le fichier d'adaptateur de ressource -ds.xml en provenance de la version précédente. Le fichier TARGET_FILE contient la nouvelle configuration.
    Ainsi, pour convertir le fichier de configuration d'adaptateur de ressources mttestadapter-ds.xml qui se trouve dans le répertoire en cours, vous saisissez :
    • Dans Linux: ./converter.sh -ra mttestadapter-ds.xml new-adapter-config.xml
    • Dans Microsoft Windows: ./converter.bat -ra mttestadapter-ds.xml new-adapter-config.xml
    Notez que le paramètre de conversion d'adaptateur de ressources est -ra.
  3. Copier l'élément <resource-adapters> à partir du fichier cible et coller le dans le fichier de configuration du serveur sous l'élément <subsystem xmlns="urn:jboss:domain:resource-adapters:1.0">.

    Important

    Vous devez interrompre le serveur avant de modifier le fichier de configuration du serveur pour que votre changement puisse être persisté au redémarrage du serveur.
    • Si vous exécutez dans un domaine géré, copier l'XML dans le fichier EAP_HOME/domain/configuration/domain.xml.
    • Si vous exécutez dans un serveur autonome, copier l'XML dans le fichier EAP_HOME/standalone/configuration/standalone.xml.
  4. Modifier l'XML créé dans le nouveau fichier de configuration.
    Voici un exemple de fichier de configuration d'adaptateur de ressources mttestadapter-ds.xml de JBoss Enterprise Application Platform 5.x TestSuite:
    <?xml version="1.0" encoding="UTF-8"?>
      <!-- ==================================================================== -->
      <!-- ConnectionManager setup for jboss test adapter                       -->
      <!-- Build jmx-api (build/build.sh all) and view for config documentation -->
      <!-- ==================================================================== -->
    <connection-factories>
      <tx-connection-factory>
        <jndi-name>JBossTestCF</jndi-name>
        <xa-transaction/>
        <rar-name>jbosstestadapter.rar</rar-name>
        <connection-definition>javax.resource.cci.ConnectionFactory</connection-definition>
        <config-property name="IntegerProperty" type="java.lang.Integer">2</config-property>
        <config-property name="BooleanProperty" type="java.lang.Boolean">false</config-property>
        <config-property name="DoubleProperty" type="java.lang.Double">5.5</config-property>
        <config-property name="UrlProperty" type="java.net.URL">http://www.jboss.org</config-property>
        <config-property name="sleepInStart" type="long">200</config-property>
        <config-property name="sleepInStop" type="long">200</config-property>
      </tx-connection-factory>
      <tx-connection-factory>
        <jndi-name>JBossTestCF2</jndi-name>
        <xa-transaction/>
        <rar-name>jbosstestadapter.rar</rar-name>
        <connection-definition>javax.resource.cci.ConnectionFactory</connection-definition>
        <config-property name="IntegerProperty" type="java.lang.Integer">2</config-property>
        <config-property name="BooleanProperty" type="java.lang.Boolean">false</config-property>
        <config-property name="DoubleProperty" type="java.lang.Double">5.5</config-property>
        <config-property name="UrlProperty" type="java.net.URL">http://www.jboss.org</config-property>
        <config-property name="sleepInStart" type="long">200</config-property>
        <config-property name="sleepInStop" type="long">200</config-property>
      </tx-connection-factory>
      <tx-connection-factory>
        <jndi-name>JBossTestCFByTx</jndi-name>
        <xa-transaction/>
        <track-connection-by-tx>true</track-connection-by-tx>
        <rar-name>jbosstestadapter.rar</rar-name>
        <connection-definition>javax.resource.cci.ConnectionFactory</connection-definition>
        <config-property name="IntegerProperty" type="java.lang.Integer">2</config-property>
        <config-property name="BooleanProperty" type="java.lang.Boolean">false</config-property>
        <config-property name="DoubleProperty" type="java.lang.Double">5.5</config-property>
        <config-property name="UrlProperty" type="java.net.URL">http://www.jboss.org</config-property>
        <config-property name="sleepInStart" type="long">200</config-property>
        <config-property name="sleepInStop" type="long">200</config-property>
      </tx-connection-factory>
    </connection-factories>
    
    Voici le fichier de configuration qui a été généré en exécutant le script de convertisseur. Remplacez la valeur de l'attribut de nom de classe « FIXME_MCF_CLASS_NAME » dans le code XML généré par le nom correct de la fabrique de connexions, dans ce cas, « org.jboss.test.jca.adapter.TestManagedConnectionFactory ». Voici le document XML obtenu dans le fichier de configuration de JBoss Enterprise Application Platform 6 sous réserve de modifications de la valeur de l'élément <class-name> :
    <subsystem xmlns="urn:jboss:domain:resource-adapters:1.0">
      <resource-adapters>
        <resource-adapter>
          <archive>jbosstestadapter.rar</archive>
          <transaction-support>XATransaction</transaction-support>
          <connection-definitions>
      <!-- Replace the "FIXME_MCF_CLASS_NAME" class-name value with the correct class name
      <connection-definition class-name="FIXME_MCF_CLASS_NAME" enabled="true"
        jndi-name="java:jboss/JBossTestCF" pool-name="JBossTestCF" 
        use-ccm="true" use-java-context="true"> -->
      <connection-definition 
        class-name="org.jboss.test.jca.adapter.TestManagedConnectionFactory" 
        enabled="true"
        jndi-name="java:jboss/JBossTestCF" pool-name="JBossTestCF" 
        use-ccm="true" use-java-context="true">
        <config-property name="IntegerProperty">2</config-property>
        <config-property name="sleepInStart">200</config-property>
        <config-property name="sleepInStop">200</config-property>
        <config-property name="BooleanProperty">false</config-property>
        <config-property name="UrlProperty">http://www.jboss.org</config-property>
        <config-property name="DoubleProperty">5.5</config-property>
        <pool>
          <prefill>false</prefill>
          <use-strict-min>false</use-strict-min>
          <flush-strategy>FailingConnectionOnly</flush-strategy>
        </pool>
        <security>
          <application/>
        </security>
        <timeout/>
        <validation>
          <background-validation>false</background-validation>
          <use-fast-fail>false</use-fast-fail>
        </validation>
      </connection-definition>
          </connection-definitions>
        </resource-adapter>
        <resource-adapter>
          <archive>jbosstestadapter.rar</archive>
          <transaction-support>XATransaction</transaction-support>
          <connection-definitions>
      <!-- Replace the "FIXME_MCF_CLASS_NAME" class-name value with the correct class name
       <connection-definition class-name="FIXME_MCF_CLASS_NAME" enabled="true"
        jndi-name="java:jboss/JBossTestCF2" pool-name="JBossTestCF2" 
        use-ccm="true" use-java-context="true"> -->
      <connection-definition 
        class-name="org.jboss.test.jca.adapter.TestManagedConnectionFactory" 
        enabled="true"
        jndi-name="java:jboss/JBossTestCF2" pool-name="JBossTestCF2" 
        use-ccm="true" use-java-context="true">
        <config-property name="IntegerProperty">2</config-property>
        <config-property name="sleepInStart">200</config-property>
        <config-property name="sleepInStop">200</config-property>
        <config-property name="BooleanProperty">false</config-property>
        <config-property name="UrlProperty">http://www.jboss.org</config-property>
        <config-property name="DoubleProperty">5.5</config-property>
        <pool>
          <prefill>false</prefill>
          <use-strict-min>false</use-strict-min>
          <flush-strategy>FailingConnectionOnly</flush-strategy>
        </pool>
        <security>
          <application/>
        </security>
        <timeout/>
        <validation>
          <background-validation>false</background-validation>
          <use-fast-fail>false</use-fast-fail>
        </validation>
      </connection-definition>
          </connection-definitions>
        </resource-adapter>
        <resource-adapter>
          <archive>jbosstestadapter.rar</archive>
          <transaction-support>XATransaction</transaction-support>
          <connection-definitions>
      <!-- Replace the "FIXME_MCF_CLASS_NAME" class-name value with the correct class name
      <connection-definition class-name="FIXME_MCF_CLASS_NAME" enabled="true"
         jndi-name="java:jboss/JBossTestCFByTx" pool-name="JBossTestCFByTx" 
         use-ccm="true" use-java-context="true"> -->
      <connection-definition 
        class-name="org.jboss.test.jca.adapter.TestManagedConnectionFactory" 
        enabled="true"
        jndi-name="java:jboss/JBossTestCFByTx" pool-name="JBossTestCFByTx" 
        use-ccm="true" use-java-context="true">
        <config-property name="IntegerProperty">2</config-property>
        <config-property name="sleepInStart">200</config-property>
        <config-property name="sleepInStop">200</config-property>
        <config-property name="BooleanProperty">false</config-property>
        <config-property name="UrlProperty">http://www.jboss.org</config-property>
        <config-property name="DoubleProperty">5.5</config-property>
        <pool>
          <prefill>false</prefill>
          <use-strict-min>false</use-strict-min>
          <flush-strategy>FailingConnectionOnly</flush-strategy>
        </pool>
        <security>
          <application/>
        </security>
        <timeout/>
        <validation>
          <background-validation>false</background-validation>
          <use-fast-fail>false</use-fast-fail>
        </validation>
      </connection-definition>
          </connection-definitions>
        </resource-adapter>
      </resource-adapters>
    </subsystem>
    
    

Note

L'outil de migration IronJacamar est un outil de tierce partie non pris en charge dans JBoss Enterprise Application Platform 6. Pour obtenir plus d'informations sur IronJacamar, visiter http://www.jboss.org/ironjacamar. Pour obtenir la documentation la plus récente sur la façon d'installer et d'utiliser cet outil, consulter http://docs.jboss.org/ironjacamar/userguide/1.1/en-US/html/tools.html#tools_migration.