4.3.8. Revisão do Sumário das Alterações Feitas Quando Migrando o Aplicativo Seam 2.2 Booking

Embora seja mais eficiente determinar previamente as dependências e adicionar as dependências implícitas em uma única etapa, essa prática mostra como os problemas aparecem no log e fornece informações sobre como depurá-los e resolvê-los. Segue abaixo um sumário das alterações feitas ao aplicativo quando migrando-o para o JBoss EAP 6.

Importante

Os aplicativos que usam Hibernate diretamente com Seam 2.2 podem usar uma versão do Hibernate 3 empacotada dentro do aplicativo. O Hibernate 4, que é fornecido através do módulo org.hibernate do JBoss EAP 6, não é suportado pelo Seam 2.2. Este exemplo tem a intenção de ajudá-lo a executar o seu aplicativo no JBoss EAP 6 como um primeiro passo. Observe que o empacotamento do Hibernate 3 com um aplicativo Seam 2.2 não possui uma configuração suportada.
  1. Você criou um arquivo jboss-deployment-structure.xml no diretório META-INF/ EAR. <dependencies> e <exclusions> foram adicionadas para resolver ClassNotFoundExceptions. Este arquivo 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"/>
    	      <module name="org.apache.commons.logging" export="true"/>
        	      <module name="org.dom4j" export="true"/>
    	      <module name="org.apache.commons.collections" 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>
    
  2. Os seguintes JARs foram copiados do diretório EAP5_HOME/jboss-eap-5.X/seam/lib/ (substitua 5.X pela versão do EAP 5 da qual você está migrando) para o diretório jboss-seam-booking.ear/lib/ para resolver ClassNotFoundExceptions:
    • hibernate-core.jar
    • hibernate-validator.jar
  3. O arquivo jboss-seam-booking.jar/META-INF/persistence.xml foi modificado como a seguir.
    1. O elemento jta-data-source foi alterado para usar o banco de dados do exemplo que é enviado junto com o JBoss EAP 6:
      <!-- <jta-data-source>java:/bookingDatasource</jta-data-source> -->
      <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
      
    2. A propriedade hibernate.cache.provider_class foi convertida em comentário:
      <!-- <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/> -->
      
  4. O arquivo lib/components.xml WAR foi modificado para usar as novas vinculações JNDI
    1. O elemento core:init foi substituído como a seguir:
      <!-- <core:init jndi-pattern="jboss-seam-booking/#{ejbName}/local" debug="true" distributable="false"/> -->
      <core:init jndi-pattern="java:app/jboss-seam-booking.jar/#{ejbName}" debug="true" distributable="false"/>
      
    2. Os elementos do componente para as vinculações JNDI "EjbSynchronizations" e "TimerServiceDispatcher" foram adicionados:
      <component class="org.jboss.seam.transaction.EjbSynchronizations" jndi-name="java:app/jboss-seam/EjbSynchronizations"/>
       <component class="org.jboss.seam.async.TimerServiceDispatcher" jndi-name="java:app/jboss-seam/TimerServiceDispatcher"/>