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
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>
- 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:<datasource name="ExampleDS" jndi-name="java:/ExampleDS" enabled="true" jta="true" use-java-context="true" use-ccm="true"> <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url> <driver>h2</driver> <security> <user-name>sa</user-name> <password>sa</password> </security> </datasource> - 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
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:<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0"> <deployment> <dependencies> <module name="javax.faces.api" slot="1.2" export="true"/> <module name="com.sun.jsf-impl" slot="1.2" export="true"/> </dependencies> </deployment> <sub-deployment name="jboss-seam-booking.war"> <exclusions> <module name="javax.faces.api" slot="main"/> <module name="com.sun.jsf-impl" slot="main"/> </exclusions> <dependencies> <module name="javax.faces.api" slot="1.2"/> <module name="com.sun.jsf-impl" slot="1.2"/> </dependencies> </sub-deployment> </jboss-deployment-structure>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”.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 signatureCopie 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:<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0"> <deployment> <exclusions> <module name="org.hibernate"/> </exclusions> <deployment> </jboss-deployment-structure>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:javax.naming.NameNotFoundException: Name 'jboss-seam-booking' not found in context ''
Se você não deseja modificar as pesquisas JNDI através do código, você pode modificar o arquivocomponents.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"/>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:INFO org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor (MSC service thread 1-1) JNDI bindings for session bean named AuthenticatorAction in deployment unit subdeployment "jboss-seam-booking.jar" of deployment "jboss-seam-booking.ear" are as follows: java:global/jboss-seam-booking/jboss-seam-booking.jar/AuthenticatorAction!org.jboss.seam.example.booking.Authenticator java:app/jboss-seam-booking.jar/AuthenticatorAction!org.jboss.seam.example.booking.Authenticator java:module/AuthenticatorAction!org.jboss.seam.example.booking.Authenticator java:global/jboss-seam-booking/jboss-seam-booking.jar/AuthenticatorAction java:app/jboss-seam-booking.jar/AuthenticatorAction java:module/AuthenticatorActionAdicione 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" />
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.

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.