Capítulo 4. Herramientas y consejos
4.1. Recursos de ayuda con la migración
4.1.1. Recursos para ayudarle en su migración
- Herramientas
- Hay varias herramientas que ayudan a automatizar algunos de los cambios de la configuración. Para mayor información, consulte: Sección 4.1.2, “Familiarización con las herramientas que le ayudan con la migración”.
- Consejos para la depuración
- Para ver una lista de las causas más comunes y la resolución de problemas y errores que puede encontrar cuando migra su aplicación, consulte: Sección 4.2.1, “Depurar y resolver problemas de migración”.
- Migraciones de ejemplo
- Para ver ejemplos de aplicaciones que se han migrado a JBoss EAP 6, consulte: Sección 4.3.1, “Revise la migración de las aplicaciones de ejemplo”.
4.1.2. Familiarización con las herramientas que le ayudan con la migración
Hay algunas herramientas que le pueden ayudar en realizar su migración. La siguiente es una lista de estas herramientas junto con una descripción de lo que hacen.
- Tattletale
- Con el cambio a la carga de clases de manera modular, necesita encontrar y rectificar las dependencias de aplicaciones. Tattletale le puede ayudar a identificar nombres de módulos dependientes y generar el XML de configuración para su aplicación.
- Herramienta de migración IronJacamar
- En JBoss EAP 6, las fuentes de datos y los adaptadores de recursos ya no se configuran en un archivo separado. Ahora se definen en el archivo de configuración del servidor y usan nuevos esquemas. La herramienta de migración IronJacamar puede ayudar a convertir la configuración antigua al formato que JBoss EAP 6 espera.
4.1.3. Uso de Tattletale para encontrar dependencias de aplicaciones
Debido a los cambios en la carga modular de clases en JBoss EAP 6, puede que encuentre rastros ClassNotFoundException
o ClassCastException
en el registro de JBoss cuando migre su aplicación. Para resolver estos errores, necesita encontrar las JARs que contienen las clases especificadas por las excepciones.
jboss-deployment-structure.xml
de su aplicación.
Procedimiento 4.1. Instale y ejecute Tattletale para buscar dependencias de aplicaciones
Nota
4.1.4. Descarga e instalación de Tattletale
Procedimiento 4.2. Descarga e instalación de Tattletale
- Descargue Tattletale versión 1.2.0.Beta2 o posteriores de http://sourceforge.net/projects/jboss/files/JBoss%20Tattletale.
- Descomprima el archivo en el directorio que escoja.
- Modifique el archivo
TATTLETALE_HOME/jboss-tattletale.properties
haciendo lo siguiente:- Agregue
ee6
yas7
a la propiedadprofiles
.profiles=java5, java6, ee6, as7
- Borre el comentario de las propiedades
scan
yreports
.
4.1.5. Creación y revisión del reporte Tattletale
- Cree el reporte Tattletale emitiendo el comando:
java -jar
TATTLETALE_HOME/tattletale.jar
APPLICATION_ARCHIVE
OUTPUT_DIRECTORY
Por ejemplo:java -jar tattletale-1.2.0.Beta2/tattletale.jar ~/applications/jboss-seam-booking.ear ~/output-results/
- En un navegador, abra el archivo
OUTPUT_DIRECTORY/index.html
y haga clic en "JBoss AS 7" bajo la sección "Reports".- La columna a la izquierda lista los archivos que la aplicación utiliza. Haga clic en el enlace ARCHIVE_NAME para ver los detalles sobre el archivo tal como la ubicación, la información del manifesto y las clases que contiene.
- El enlace
jboss-deployment-structure.xml
en la columna a la derecha muestra la manera de especificar la dependencia de módulos para el archivo nombrado en la columna izquierda. Haga clic en este enlace para ver la manera de definir la información del módulo de dependencias de implementación para este archivo.
4.1.6. Uso de la herramienta IronJacamar para migrar configuraciones del adapatador de recursos y la fuente de datos
En versiones anteriores del servidor de aplicaciones, las fuentes de datos y los adaptadores de recursos se configuraban y se implementaban usando un archivo con el sufijo *-ds.xml
. La distribución IronJacamar 1.1 contiene una herramienta de migración que se puede utilizar para convertir estos archivos de configuración en el formato que la JBoss EAP 6 espera. La herramienta analiza sintácticamente el archivo de configuración fuente del lanzamiento anterior y luego crea y escribe la configuración XML en un archivo de salida en el nuevo formato. Este XML luego se puede copiar y pegar bajo el subsistema correcto en el archivo de configuración del servidor de JBoss EAP 6. Esta herrmienta hace el mejor esfuerzo para convertir atributos y elementos antiguos al formato nuevo, sin embargo, puede que sea necesario el realizar modificaciones adicionales al archivo generado.
Procedimiento 4.3. Instalación y ejecución de la herramienta de migración IronJacamar
Nota
4.1.7. Descarga e instalación de la herramienta de migración IronJacamar
Nota
- Descargue la última distribución de IronJacamar de aquí: http://www.ironjacamar.org/download.html
- Descomprima el archivo descargado en el directorio que escoja.
- Busque el script convertidor en la distribución IronJacamar.
- El script Linux se encuentra aquí:
IRONJACAMAR_HOME/doc/as/converter.sh
- El archivo de agrupación Windows se encuentra aquí:
IRONJACAMAR_HOME/doc/as/converter.bat
4.1.8. Use la herramienta de migración IronJacamar para convertir un archivo de configuración de la fuente de datos
Nota
Procedimiento 4.4. Convertir un archivo de configuración de la fuente de datos
- Abra una línea de comandos y navegue al directorio
IRONJACAMAR_HOME/doc/as/
. - Ejecute el script convertidor con el siguiente comando:
- Para Linux:
./converter.sh -ds
SOURCE_FILE
TARGET_FILE
- Para Microsoft Windows:
./converter.bat -ds
SOURCE_FILE
TARGET_FILE
ElSOURCE_FILE
es el atchivo -ds.xml de la fuente de datos del lanzamiento anterior. ElTARGET_FILE
contiene la nueva configuración.Por ejemplo, para convertir el archivo de configuración de la fuente de datosjboss-seam-booking-ds.xml
en el directorio actual escribiría:- Para Linux:
./converter.sh -ds
jboss-seam-booking-ds.xml
new-datasource-config.xml
- Para Microsoft Windows:
./converter.bat -ds
jboss-seam-booking-ds.xml
new-datasource-config.xml
Note que el parámetro para la conversión de la fuente de datos es-ds
. - Copie el elemento
<datasource>
del archivo de destino y péguelo en el archivo de configuración del servidor bajo el elemento<subsystem xmlns="urn:jboss:domain:datasources:1.1">
<datasources>
.Importante
Tiene que detener el servidor antes de modificar el archivo de configuración del servidor para que su cambio persista al reiniciar el servidor.- Si está ejecutando en un dominio administrado, copie el XML en el archivo
EAP_HOME/domain/configuration/domain.xml
. - Si está ejecutando como un servidor autónomo, copie el XML en el archivo
EAP_HOME/standalone/configuration/standalone.xml
.
- Modifique el XML generado en el nuevo archivo de configuración.Este es un ejemplo del archivo de configuración de la fuente de datos
jboss-seam-booking-ds.xml
para el ejemplo de reservas de Seam 2.2 que se envía junto con 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>
El siguiente es el archivo de configuración que se generó ejecutando el script convertidor. El archivo generado contiene u elemento<driver-class>
. La manera preferida de definir la clase controladora en JBoss EAP 6 es utilizar un elemento<driver>
. Este es el XML que resulta en el archivo de configuración de JBoss EAP 6 con modificaciones para borrar el comentario del elemento<driver-class>
y agregar el elemento correspondiente<driver>
:<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. Uso de la herramienta de migración IronJacamar para convertir un archivo de configuración del adaptador de recursos
Nota
- Abra una línea de comandos y navegue al directorio
IRONJACAMAR_HOME/docs/as/
. - Ejecute el script convertidor con el siguiente comando:
- Para Linux:
./converter.sh -ra
SOURCE_FILE
TARGET_FILE
- Para Microsoft Windows:
./converter.bat -ra
SOURCE_FILE
TARGET_FILE
ElSOURCE_FILE
es el archivo -ds.xml del adaptador de recursos del lanzamiento anterior. ElTARGET_FILE
contiene la nueva configuración.Por ejemplo, para convertir el archivo de configuración del adaptador de recursosmttestadapter-ds.xml
en el directorio actual escribiría:- Para Linux:
./converter.sh -ra
mttestadapter-ds.xml
new-adapter-config.xml
- Para Microsoft Windows:
./converter.bat -ra
mttestadapter-ds.xml
new-adapter-config.xml
Note que el parámetro para la conversión del adaptador de recursos es-ra
. - Copie el elemento
<resource-adapters>
del archivo de destino y péguelo en el archivo de configuración del servidor bajo el elemento<subsystem xmlns="urn:jboss:domain:resource-adapters:1.1">
.Importante
Tiene que detener el servidor antes de modificar el archivo de configuración del servidor para que su cambio persista al reiniciar el servidor.- Si está ejecutando en un dominio administrado, copie el XML en el archivo
EAP_HOME/domain/configuration/domain.xml
. - Si está ejecutando como un servidor autónomo, copie el XML en el archivo
EAP_HOME/standalone/configuration/standalone.xml
.
- Modifique el XML generado en el nuevo archivo de configuración.Este es un ejemplo del archivo de configuración del adaptador de recursos
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>
El siguiente es el archivo de configuración que se generó ejecutando el script convertidor. Reemplace el valor del atributo nombre-clase "FIXME_MCF_CLASS_NAME" en el XML generado con el nombre de clase correcto de la fábrica de conexiones administrada, en este caso, "org.jboss.test.jca.adapter.TestManagedConnectionFactory". Este es el XML que resulta en el archivo de configuración de JBoss EAP 6 con modificaciones para el valor del elemento<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>