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

Segue abaixo uma lista de recursos que podem ajudá-lo na migração de um aplicativo para o JBoss EAP 6.
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

Sumário

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

Sumário

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.

Tattletale é uma excelente ferramenta de terceiros que escaneia recursivamente seu aplicativo e fornece relatórios detalhados sobre seus conteúdos. Tattletale 1.2.0.Beta2, ou versões posteriores, contém um suporte adicional para ajudar no novo carregamento de classe do JBoss Modules usado no JBoss EAP 6. O relatório "JBoss AS 7" do Tattletale pode ser usado para identificar e gerar automaticamente os nomes dos módulos dependentes para incluir o arquivo jboss-deployment-structure.xml do seu aplicativo.

Procedimento 4.1. Instale e execute Tattletale para encontrar as dependências do aplicativo

Nota

Tattletale é uma ferramenta de terceiros e não é suportada como parte do JBoss EAP 6. Para a documentação atual sobre como instalar e usar Tattletale, visite o website do Tattletale http://tattletale.jboss.org/.

4.1.4. Baixe e Instale Tattletale

Procedimento 4.2. Baixe e Instale Tattletale

  1. Baixe Tattletale versão 1.2.0.Beta2, ou a mais recente, em http://sourceforge.net/projects/jboss/files/JBoss%20Tattletale.
  2. Descomprima o arquivo no diretório de sua escolha.
  3. Modifique o arquivo TATTLETALE_HOME/jboss-tattletale.properties realizando o seguinte:
    1. Adicione ee6 e as7 à propriedade profiles.
      profiles=java5, java6, ee6, as7
    2. Remova os comentários das propriedades scan e reports.

4.1.5. Criação e Revisão do Relatório Tattletale

  1. Crie o relatório Tattletale emitindo o comando: java -jar TATTLETALE_HOME/tattletale.jar APPLICATION_ARCHIVE OUTPUT_DIRECTORY
    Por exemplo: java -jar tattletale-1.2.0.Beta2/tattletale.jar ~/applications/jboss-seam-booking.ear ~/output-results/
  2. Em um navegador, abra o arquivo OUTPUT_DIRECTORY/index.html e clique em "JBoss AS 7" sob a seção "Reports" (Relatórios).
    1. 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.
    2. O link jboss-deployment-structure.xml na 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

Sumário

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.

Nota

A ferramenta de Migração IronJacamar é uma ferramenta de terceiros e não possui suporte como parte do JBoss EAP 6. Consulte http://www.ironjacamar.org/ para mais informações sobre IronJacar. Consulte http://www.ironjacamar.org/documentation.html para informações atuais sobre como instalar e usar esta ferramenta.

4.1.7. Baixe e Instale a Ferramenta de Migração IronJacamar

Nota

A ferramenta de migração está disponível apenas na versão Jacamar 1.1, ou posteriores, e requer Java 7 ou versão posterior.
  1. Baixe a distribuição mais recente do IronJacamar aqui: http://www.ironjacamar.org/download.html
  2. Descomprima o arquivo baixado em um diretório de sua escolha.
  3. 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

O script convertor IronJacamar requer Java 7 ou versão posterior.

Procedimento 4.4. Conversão de um Arquivo de Configuração da Fonte de Dados

  1. Abra uma linha de comando e navegue até o diretório IRONJACAMAR_HOME/doc/as/.
  2. Execute o script conversor digitando o seguinte comando:
    • Para Linux: ./converter.sh -ds SOURCE_FILE TARGET_FILE
    • Para Microsoft Windows: ./converter.bat -ds SOURCE_FILE TARGET_FILE
    SOURCE_FILE é o arquivo -ds.xml da fonte de dados da versão anterior. TARGET_FILE contém a nova configuração.
    Por exemplo, para converter o arquivo de configuração da fonte de dados jboss-seam-booking-ds.xml localizado no diretório atual, você digitaria:
    • 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
    Perceba que o parâmetro para a conversão da fonte de dados é -ds.
  3. 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.
  4. 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.xml para 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

O script convertor IronJacamar requer Java 7 ou versão posterior.
  1. Abra uma linha de comando e navegue até o diretório IRONJACAMAR_HOME/docs/as/.
  2. Execute o script conversor digitando o seguinte comando:
    • Para Linux: ./converter.sh -ra SOURCE_FILE TARGET_FILE
    • Para Microsoft Windows: ./converter.bat -ra SOURCE_FILE TARGET_FILE
    SOURCE_FILE é o arquivo -ds.xml do adaptador de recursos da versão anterior. TARGET_FILE contém a nova configuração.
    Por exemplo, para converter o arquivo de configuração do adaptador de recursos mttestadapter-ds.xml localizado no diretório atual, você digitaria:
    • 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
    Perceba que o parâmetro para a conversão do adaptador de recursos é -ra.
  3. 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.
  4. 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.xml a 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>
    
Red Hat logoGithubRedditYoutubeTwitter

Aprender

Experimente, compre e venda

Comunidades

Sobre a documentação da Red Hat

Ajudamos os usuários da Red Hat a inovar e atingir seus objetivos com nossos produtos e serviços com conteúdo em que podem confiar. Explore nossas atualizações recentes.

Tornando o open source mais inclusivo

A Red Hat está comprometida em substituir a linguagem problemática em nosso código, documentação e propriedades da web. Para mais detalhes veja o Blog da Red Hat.

Sobre a Red Hat

Fornecemos soluções robustas que facilitam o trabalho das empresas em plataformas e ambientes, desde o data center principal até a borda da rede.

© 2024 Red Hat, Inc.