Chapitre 4. Outils et Astuces
4.1. Ressources pour assister à votre migration
4.1.1. Ressources pour assister à votre migration
- 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 » pour les détails.
- 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éboguer et Résoudre les problèmes de migration ».
- Exemples de migration
- Pour obtenir des exemples d'applications migrées dans JBoss EAP 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
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 EAP 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 EAP 6.
4.1.3. Utiliser Tattletale pour trouver des dépendances d'applications
Compte tenu des changement au niveau chargement de classes dans JBoss EAP 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.
jboss-deployment-structure.xml
.
Procédure 4.1. Installer et exécuter Tattletale pour trouver des dépendances d'application
Note
4.1.4. Télécharger et installer Tattletale
Procédure 4.2. Télécharger et installer Tattletale
- Télécharger Tattletale version 1.2.0.Beta2 ou version supérieure à partir de http://sourceforge.net/projects/jboss/files/JBoss%20Tattletale.
- Décompresser le fichier dans le répertoire de votre choix.
- Modifier le fichier
TATTLETALE_HOME/jboss-tattletale.properties
ainsi :- Ajouter
ee6
etas7
à la propriétéprofiles
.profiles=java5, java6, ee6, as7
- Dé-commenter les propriétés
scan
etreports
.
4.1.5. Créer et Réviser le Rapport Tattletale
- Créer le Rapport Tattletale par la commande :
java -jar
TATTLETALE_HOME/tattletale.jar
APPLICATION_ARCHIVE
OUTPUT_DIRECTORY
Par exemple :java -jar tattletale-1.2.0.Beta2/tattletale.jar ~/applications/jboss-seam-booking.ear output-results/
- Dans le navigateur, ouvrir le fichier
OUTPUT_DIRECTORY/index.html
et cliquer sur la section "JBoss AS 7" sous la section "Reports".- 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.
- 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.
4.1.6. Utilisation de l'outil IronJacamar pour migrer les Configurations d'aptateurs de ressources et de sources de données
Dans les versions précédentes du serveur d'applications, les adaptateurs de ressources et de 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 au format attendu par JBoss EAP 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 EAP 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é.
Procédure 4.3. Installer et exécuter l'outil de migration IronJacamar
Note
4.1.7. Télécharger et Installer l'outil de migration IronJacamar
Note
- Télécharger la dernière distribution d'IronJacamar à partir du lien suivant : http://www.ironjacamar.org/download.html
- Décompresser le fichier téléchargé dans un répertoire de votre choix.
- 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
4.1.8. Utiliser l'outil de migration IronJacamar pour convertir un Fichier de configuration de source de données
Note
Procédure 4.4. Comment convertir un Fichier de configuration de source de données
- Ouvrir une ligne de commande et naviguez vers le répertoire
IRONJACAMAR_HOME/doc/as/
. - 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 fichierSOURCE_FILE
est le fichier datasource -ds.xml en provenance de la version précédente. Le fichierTARGET_FILE
contient la nouvelle configuration.Ainsi, pour convertir le fichier de configuration d'adaptateur de ressourcesjboss-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
. - 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.1">
<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
.
- 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 EAP 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 EAP 6 est par un élément<driver>
. Voici l'XML qui en résulte dans le fichier de configuration JBoss EAP 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.1"> <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> --> <!-- Specify the driver, which is defined later in the datasource --> <driver>h2<driver> <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>
4.1.9. Utiliser l'outil de migration IronJacamar pour convertir un Fichier de configuration d'adaptateur de ressources
Note
- Ouvrir une ligne de commande et naviguer vers le répertoire
IRONJACAMAR_HOME/docs/as/
. - 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 fichierSOURCE_FILE
est le fichier d'adaptateur de ressource -ds.xml en provenance de la version précédente. Le fichierTARGET_FILE
contient la nouvelle configuration.Ainsi, pour convertir le fichier de configuration d'adaptateur de ressourcesmttestadapter-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
. - 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.1">
.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
.
- 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 EAP 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 EAP 6 sous réserve de modifications de la valeur de l'élément<class-name>
:<subsystem xmlns="urn:jboss:domain:resource-adapters:1.1"> <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>