Capítulo 4. Ferramentas e Dicas
4.1. Recursos que Podem Auxiliar na Migração
4.1.1. Recursos que Podem Assistí-lo na sua Migração
- Ferramentas
- Existem diversas ferramentas que ajudam a automatizar algumas das alterações de configuração. Consulte Seção 4.1.2, “Familiarize-se com as Ferramentas que Podem Assistí-lo com a Migração” para mais informações.
- Dicas de Depuração
- Consulte Seção 4.2.1, “Depuração e Solução de Problemas de Migração” para uma lista dos erros e das causas e resoluções de problemas mais comuns que você pode encontrar quando migrar seu aplicativo.
- Exemplo de Migrações
- Consulte Seção 4.3.1, “Revisão da Migração dos Aplicativos de Exemplo” para exemplos de aplicativos que foram migrados para o JBoss EAP 6.
4.1.2. Familiarize-se com as Ferramentas que Podem Assistí-lo com a Migração
Existem algumas ferramentas que podem assisti-lo no processo de sua migração. Segue abaixo uma lista dessas ferramentas juntamente com a descrição do que elas fazem.
- Tattletale
- Com a alteração para o carregamento de classe modular, você precisa encontrar e retificar as dependências dos aplicativos. Tattletale pode ajudá-lo a identificar os nomes dos módulos dependentes e gerar a configuração XML para seu aplicativo.
- Ferramenta de Migração IronJacamar
- No JBoss EAP 6, as fontes de dados e os adaptadores de recurso não são mais configurados em um arquivo separado. Eles são agora definidos no arquivo de configuração do servidor e usam novos esquemas. A Ferramenta de Migração IronJacamar pode ajudar a converter a configuração antiga no formato esperado pelo JBoss EAP 6.
4.1.3. Uso do Tattletale para Encontrar as Dependências dos Aplicativos
Devido às alterações para o carregamento de classe modular no JBoss EAP 6, você pode encontrar os rastreamentos ClassNotFoundException ou ClassCastException no log do JBoss quando migrar o seu aplicativo. Para resolver esses erros, você precisa encontrar os JARs que contêm as classes especificadas pelas exceções.
jboss-deployment-structure.xml do seu aplicativo.
Procedimento 4.1. Instale e execute Tattletale para encontrar as dependências do aplicativo
Nota
4.1.4. Baixe e Instale Tattletale
Procedimento 4.2. Baixe e Instale Tattletale
- Baixe Tattletale versão 1.2.0.Beta2, ou a mais recente, em http://sourceforge.net/projects/jboss/files/JBoss%20Tattletale.
- Descomprima o arquivo no diretório de sua escolha.
- Modifique o arquivo
TATTLETALE_HOME/jboss-tattletale.propertiesrealizando o seguinte:- Adicione
ee6eas7à propriedadeprofiles.profiles=java5, java6, ee6, as7
- Remova os comentários das propriedades
scanereports.
4.1.5. Criação e Revisão do Relatório Tattletale
- Crie o relatório Tattletale emitindo o comando:
java -jarTATTLETALE_HOME/tattletale.jarAPPLICATION_ARCHIVEOUTPUT_DIRECTORYPor exemplo:java -jar tattletale-1.2.0.Beta2/tattletale.jar ~/applications/jboss-seam-booking.ear ~/output-results/ - Em um navegador, abra o arquivo
OUTPUT_DIRECTORY/index.htmle clique em "JBoss AS 7" sob a seção "Reports" (Relatórios).- A coluna da esquerda lista os arquivos usados pelo aplicativo. Clique no link ARCHIVE_NAME para visualizar detalhes sobre o arquivo, tais como sua localização, informações de manifesto e as classes que contém.
- O link
jboss-deployment-structure.xmlna coluna da direita mostra como especificar a dependência do módulo para o arquivo nomeado na coluna da esquerda. Clique neste link para verificar como definir as informações de módulos de dependência da implantação para este arquivo.
4.1.6. Uso da Ferramenta IronJacamar para a Migração das Configurações do Adaptador de Recursos e das Fontes de Dados
Nas versões anteriores do servidor do aplicativo, as fontes de dados e os adaptadores de recursos eram configurados e implantados usando um arquivo com um sufixo *-ds.xml. A distribuição IronJacamar 1.1 contém uma ferramenta de migração que pode ser usada para converter esses arquivos de configuração no formato esperado pelo JBoss EAP 6. A ferramenta analisa o arquivo de configuração da fonte a partir da versão anterior, cria e grava a configuração XML a um arquivo de saída no novo formato. Esse XML pode, então, ser copiado e colado sob o subsistema correto no arquivo de configuração do servidor do JBoss EAP 6. Essa ferramenta envida todos os esforços para converter atributos e elementos antigos no novo formato. No entanto, pode ser necessário realizar modificações adicionais no arquivo gerado.
Procedimento 4.3. Instalação e execução da ferramenta de Migração IronJacamar
Nota
4.1.7. Baixe e Instale a Ferramenta de Migração IronJacamar
Nota
- Baixe a distribuição mais recente do IronJacamar aqui: http://www.ironjacamar.org/download.html
- Descomprima o arquivo baixado em um diretório de sua escolha.
- Localize o script conversor na distribuição IronJacamar.
- O script Linux está localizado aqui:
IRONJACAMAR_HOME/doc/as/converter.sh - O arquivo em lotes do Windows está localizado aqui:
IRONJACAMAR_HOME/doc/as/converter.bat
4.1.8. Uso da Ferramenta de Migração IronJacamar para Converter um Arquivo de Configuração da Fonte de Dados
Nota
Procedimento 4.4. Conversão de um Arquivo de Configuração da Fonte de Dados
- Abra uma linha de comando e navegue até o diretório
IRONJACAMAR_HOME/doc/as/. - Execute o script conversor digitando o seguinte comando:
- Para Linux:
./converter.sh -dsSOURCE_FILETARGET_FILE - Para Microsoft Windows:
./converter.bat -dsSOURCE_FILETARGET_FILE
SOURCE_FILEé o arquivo -ds.xml da fonte de dados da versão anterior.TARGET_FILEcontém a nova configuração.Por exemplo, para converter o arquivo de configuração da fonte de dadosjboss-seam-booking-ds.xmllocalizado no diretório atual, você digitaria:- Para Linux:
./converter.sh -dsjboss-seam-booking-ds.xmlnew-datasource-config.xml - Para Microsoft Windows:
./converter.bat -dsjboss-seam-booking-ds.xmlnew-datasource-config.xml
Perceba que o parâmetro para a conversão da fonte de dados é-ds. - Copie o elemento
<datasource>do arquivo de destino e cole-o no arquivo de configuração do servidor sob o elemento<subsystem xmlns="urn:jboss:domain:datasources:1.1"><datasources>.Importante
Você deve interromper o servidor antes de editar o arquivo de configuração do servidor para que sua alteração seja efetivada ao reiniciar o servidor.- Caso você esteja executando em um domínio gerenciado, copie o XML no arquivo
EAP_HOME/domain/configuration/domain.xml. - Caso você esteja executando como um servidor autônomo, copie o XML no arquivo
EAP_HOME/standalone/configuration/standalone.xml.
- Modifique o XML gerado no novo arquivo de configuração.Segue abaixo um exemplo do arquivo de configuração da fonte de dados
jboss-seam-booking-ds.xmlpara exemplo do Seam 2.2 Booking que foi enviado junto com o 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>Segue abaixo o arquivo de configuração que foi gerado pela execução do script conversor. O arquivo gerado contém um elemento<driver-class>. A melhor maneira de definir a classe de driver no JBoss EAP 6 é usando um elemento<driver>. Segue abaixo o XML resultante no arquivo de configuração do JBoss EAP 6 com modificações para converter em comentário o elemento<driver-class>e adicionar o elemento correspondente<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 da Ferramenta de Migração IronJacamar para Converter um Arquivo de Configuração do Adaptador de Recursos
Nota
- Abra uma linha de comando e navegue até o diretório
IRONJACAMAR_HOME/docs/as/. - Execute o script conversor digitando o seguinte comando:
- Para Linux:
./converter.sh -raSOURCE_FILETARGET_FILE - Para Microsoft Windows:
./converter.bat -raSOURCE_FILETARGET_FILE
SOURCE_FILEé o arquivo -ds.xml do adaptador de recursos da versão anterior.TARGET_FILEcontém a nova configuração.Por exemplo, para converter o arquivo de configuração do adaptador de recursosmttestadapter-ds.xmllocalizado no diretório atual, você digitaria:- Para Linux:
./converter.sh -ramttestadapter-ds.xmlnew-adapter-config.xml - Para Microsoft Windows:
./converter.bat -ramttestadapter-ds.xmlnew-adapter-config.xml
Perceba que o parâmetro para a conversão do adaptador de recursos é-ra. - Copie o elemento inteiro
<resource-adapters>do arquivo de destino e cole-o no arquivo de configuração do servidor sob o elemento<subsystem xmlns="urn:jboss:domain:resource-adapters:1.1">.Importante
Você deve interromper o servidor antes de editar o arquivo de configuração do servidor para que sua alteração seja efetivada ao reiniciar o servidor.- Caso você esteja executando em um domínio gerenciado, copie o XML no arquivo
EAP_HOME/domain/configuration/domain.xml. - Caso você esteja executando como um servidor autônomo, copie o XML no arquivo
EAP_HOME/standalone/configuration/standalone.xml.
- Modifique o XML gerado no novo arquivo de configuração.Segue abaixo um exemplo do arquivo de configuração do adaptador de recursos
mttestadapter-ds.xmla partir do 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>Segue abaixo o arquivo de configuração que foi gerado pela execução do script conversor. Substitua o valor do atributo do nome da classe "FIXME_MCF_CLASS_NAME" no XML gerado com o nome de classe correto da fábrica de conexão gerenciada, neste caso "org.jboss.test.jca.adapter.TestManagedConnectionFactory". Este é o XML resultante no arquivo de configuração do JBoss EAP 6 com modificações no valor do 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>

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.