3.2.13. Migração dos Aplicativos Seam 2.2
3.2.13.1. Migração dos Arquivos Seam 2.2 para o JBoss EAP 6 Copiar o linkLink copiado para a área de transferência!
Quando você migra um aplicativo Seam 2.2, você precisa configurar a fonte de dados e especificar quaisquer dependências de módulo. Você precisa determinar também se o aplicativo possui alguma dependência nos arquivos que não são enviados juntos com o JBoss EAP 6 e copiar os JARs dependentes no diretório lib/ do aplicativo.
Importante
Procedimento 3.25. Migração dos Arquivos Seam 2.2
Atualize a configuração da fonte de dados
Alguns exemplos do Seam 2.2 usam a fonte de dados JDBC padrão nomeadajava:/ExampleDS. Essa fonte de dados padrão foi alterada no JBoss EAP 6 parajava:jboss/datasources/ExampleDS. Caso seu aplicativo utilize o banco de dados do exemplo, você pode realizar uma das seguintes opções:Consulte Seção 3.1.6.2, “Atualização da Configuração da DataSource” para mais informações sobre como configurar uma fonte de dados.- Se você quiser usar o banco de dados do exemplo que é enviado junto com o JBoss EAP 6, modifique o arquivo
META-INF/persistence.xmlpara substituir o elementojta-data-sourceexistente com o nome JNDI da fonte de dados do banco de dados do exemplo:<!-- <jta-data-source>java:/ExampleDS</jta-data-source> --> <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
<!-- <jta-data-source>java:/ExampleDS</jta-data-source> --> <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Caso você prefira manter o seu banco de dados existente, você pode adicionar a definição da fonte de dados ao arquivo
EAP_HOME/standalone/configuration/standalone.xml.Importante
Você deve interromper o servidor antes de editar o arquivo de configuração do servidor para que a sua alteração seja efetivada ao reiniciar o servidor.A seguinte definição é uma cópia da fonte de dados HSQL padrão definida no JBoss EAP 6:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Você pode também adicionar a definição da fonte de dados usando a interface da linha de comando do Gerenciamento CLI. Segue abaixo um exemplo da sintaxe que você deve usar para adicionar uma fonte de dados. O "\" no final da linha indica a continuação do comando na linha seguinte.
Exemplo 3.5. Exemplo da sintaxe para a adição da definição da fonte de dados
EAP_HOME/bin/jboss-cli --connect [standalone@localhost:9999 /] data-source add --name=ExampleDS --jndi-name=java:/ExampleDS \ --connection-url=jdbc:h2:mem:test;DB_CLOSE_DELAY=-1 --driver-name=h2 \ --user-name=sa --password=sa$ EAP_HOME/bin/jboss-cli --connect [standalone@localhost:9999 /] data-source add --name=ExampleDS --jndi-name=java:/ExampleDS \ --connection-url=jdbc:h2:mem:test;DB_CLOSE_DELAY=-1 --driver-name=h2 \ --user-name=sa --password=saCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Adicione quaisquer dependências necessárias
Já que os aplicativos Seam 2.2 utilizam JSF 1.2, você precisa adicionar dependências para os módulos JSF 1.2 e excluir os módulos JSF 2.0. Para realizar isto, você precisa criar um arquivojboss-deployment-structure.xmlno diretórioMETA-INF/do EAR que contém os seguintes dados:Se o seu aplicativo utiliza estruturas de registro em log de terceiros, você precisa adicionar essas dependências conforme descrito aqui: Seção 3.1.4.1, “Modificação das Dependências de Registro em Log”.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Se o seu aplicativo utilza Hibernate 3.x, tente executar primeiro o aplicativo usando as bibliotecas do Hibernate 4
Se o seu aplicativo não utiliza o Contexto de Persistência Gerenciado Seam, a busca Hibernate, a validação ou quaisquer outros recursos que mudaram com o Hibernate 4, é possível que consiga executar com as bibliotecas do Hibernate 4. No entanto, se você encontrarClassNotFoundExceptionsouClassCastExceptionsque apontam para as classes Hibernate, ou ver erros semelhantes aos seguintes, é possível que tenha que seguir as instruções da próxima etapa e modificar o seu aplicativo para usar as bibliotecas do Hibernate 3.3.Caused by: java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "org.jboss.seam.persistence.HibernateSessionProxy.getSession(Lorg/hibernate/EntityMode;)Lorg/hibernate/Session;" the class loader (instance of org/jboss/modules/ModuleClassLoader) of the current class, org/jboss/seam/persistence/HibernateSessionProxy, and the class loader (instance of org/jboss/modules/ModuleClassLoader) for interface org/hibernate/Session have different Class objects for the type org/hibernate/Session used in the signature
Caused by: java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "org.jboss.seam.persistence.HibernateSessionProxy.getSession(Lorg/hibernate/EntityMode;)Lorg/hibernate/Session;" the class loader (instance of org/jboss/modules/ModuleClassLoader) of the current class, org/jboss/seam/persistence/HibernateSessionProxy, and the class loader (instance of org/jboss/modules/ModuleClassLoader) for interface org/hibernate/Session have different Class objects for the type org/hibernate/Session used in the signatureCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copie os arquivos dependentes das estruturas externas ou de outras localizações
Se o seu aplicativo utiliza Hibernate 3.x e você não consegue usar Hibernate 4 no seu aplicativo com sucesso, você precisará copiar os JARs do Hibernate 3-x no diretório/libe excluir o módulo Hibernate na seção de implantações deMETA-INF/jboss-deployment-structure.xml, como a seguir:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Você deve tomar algumas medidas adicionais quando agrupar Hibernate 3.x ao seu aplicativo. Consulte Seção 3.2.2.2, “Configuração das Alterações para os Aplicativos que Utilizam Hibernate e JPA” para mais informações.Depure e resolva os erros JNDI do Seam 2.2
Ao migrar o aplicativo Seam 2.2, você pode encontrar errosjavax.naming.NameNotFoundExceptionno log, como a seguir:Se você não deseja modificar as pesquisas JNDI através do código, você pode modificar o arquivojavax.naming.NameNotFoundException: Name 'jboss-seam-booking' not found in context ''
javax.naming.NameNotFoundException: Name 'jboss-seam-booking' not found in context ''Copy to Clipboard Copied! Toggle word wrap Toggle overflow components.xmldo aplicativo, como a seguir:Substitua o elemento core-init existente
Primeiro, você precisa substituir o elemento core-init existente, como a seguir:<!-- <core:init jndi-pattern="jboss-seam-booking/#{ejbName}/local" debug="true" distributable="false"/> --> <core:init debug="true" distributable="false"/><!-- <core:init jndi-pattern="jboss-seam-booking/#{ejbName}/local" debug="true" distributable="false"/> --> <core:init debug="true" distributable="false"/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Localize as mensagens INFO associadas ao JNDI no log do servidor
A seguir, localize as mensagens INFO associadas ao JNDI que estão impressas no log do servidor quando o aplicativo é implantado. As mensages vinculadas ao JNIDI devem parecer-se com o seguinte:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Adicione os elementos do componente
Para cada mensagem INFO vinculada ao JNDI no log, adicione um elementocomponentcorrespondente ao arquivocomponents.xml:<component class="org.jboss.seam.example.booking.AuthenticatorAction" jndi-name="java:app/jboss-seam-booking.jar/AuthenticatorAction" />
<component class="org.jboss.seam.example.booking.AuthenticatorAction" jndi-name="java:app/jboss-seam-booking.jar/AuthenticatorAction" />Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Para mais informações sobre como depurar e resolver problemas de migração, consulte Seção 4.2.1, “Depuração e Solução de Problemas de Migração”.Para uma lista de problemas de migração conhecidos com os arquivos Seam 2, consulte Seção 3.2.13.2, “Problemas de Migração do Arquivo Seam 2.2 ”.
O arquivo Seam 2.2 implanta e executa com êxito no JBoss EAP 6.