4.3.3. Migração de Exemplo do Seam 2.2 Booking para o JBoss EAP 6
A migração do Seam 2.2 Booking EAR é mais complicada do que o exemplo do Seam 2.2 JPA WAR. A documentação para a migração de exemplo do Seam 2.2 JPA WAR pode ser encontrada aqui Seção 4.3.2, “Migração do Exemplo Seam 2.2 JPA para o JBoss EAP 6”. Para migrar o aplicativo, por favor realize o seguinte:
- Inicialize JSF 1.2 ao invés do JSF 2 padrão.
- Empacote as versões antigas dos JARs Hibernate ao invés de usar aquelas que foram enviadas junto com o JBoss EAP 6.
- Altere as vinculações JNDI para uso da nova sintaxe portátil do Java EE 6 JNDI.
Importante
Procedimento 4.7. Migração de exemplo do Seam 2.2 Booking
Crie o arquivo
jboss-deployment-structure.xmlCrie um novo arquivo nomeadojboss-deployment-structure.xmlnojboss-seam-booking.ear/META-INF/e adicione o seguinte conteúdo:<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.log4j" export="true"/> <module name="org.dom4j" export="true"/> <module name="org.apache.commons.logging" export="true"/> <module name="org.apache.commons.collections" export="true"/> </dependencies> <exclusions> <module name="org.hibernate" slot="main"/> </exclusions> </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>Modifique o arquivo
jboss-seam-booking.jar/META-INF/persistence.xmlcomo a seguir.- Remova ou converta em comentário a propriedade hibernate para a classe do provedor do cache:
<!-- <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/> -->
- Adicione a propriedade de módulo do provedor ao arquivo
jboss-seam-booking.jar/META-INF/persistence.xml:<property name="jboss.as.jpa.providerModule" value="hibernate3-bundled" />
- Altere a propriedade
jta-data-sourcepara usar o nome JNDI da fonte de dados JDBC padrão:<jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
Copie os JARs da distribuição Seam 2.2
Copie os JARs a seguir da distribuição Seam 2.2EAP5.x_HOME/jboss-eap5.x/seam/lib/no diretóriojboss-seam-booking.ear/lib.antlr.jar slf4j-api.jar slf4j-log4j12.jar hibernate-core.jar hibernate-entitymanager.jar hibernate-validator.jar hibernate-annotations.jar hibernate-commons-annotations.jar
Altere os nomes de pesquisa JNDI
Altere as cadeias de pesquisa JNDI no arquivojboss-seam-booking.war/WEB-INF/components.xml. Devido a novas regras portáteis JNDI, o JBoss EAP 6 agora vincula EJBs usando as regras de sintaxe portáteis JNDI e não é possível usar o jndiPattern que era usado no JBoss EAP 5. Segue abaixo as cadeias de pesquisa JNDI EJB do aplicativo que devem ser alteradas para o JBoss EAP 6:java:global/jboss-seam-booking/jboss-seam-booking/HotelSearchingAction!org.jboss.seam.example.booking.HotelSearching java:app/jboss-seam-booking/HotelSearchingAction!org.jboss.seam.example.booking.HotelSearching java:module/HotelSearchingAction!org.jboss.seam.example.booking.HotelSearching java:global/jboss-seam-booking/jboss-seam-booking/HotelSearchingAction java:app/jboss-seam-booking/HotelSearchingAction java:module/HotelSearchingAction
As cadeias de pesquisa JNDI para os EJBs de estrutura Seam 2.2 devem ser alteradas conforme abaixo:java:global/jboss-seam-booking/jboss-seam/EjbSynchronizations!org.jboss.seam.transaction.LocalEjbSynchronizations java:app/jboss-seam/EjbSynchronizations!org.jboss.seam.transaction.LocalEjbSynchronizations java:module/EjbSynchronizations!org.jboss.seam.transaction.LocalEjbSynchronizations java:global/jboss-seam-booking/jboss-seam/EjbSynchronizations java:app/jboss-seam/EjbSynchronizations java:module/EjbSynchronizations
Você pode usar uma das seguintes abordagens:Adicionar os elementos do componente
Você pode adicionar umjndi-namepara cada EJB aoWEB-INF/components.xml:<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"/> <component class="org.jboss.seam.example.booking.AuthenticatorAction" jndi-name="java:app/jboss-seam-booking/AuthenticatorAction" /> <component class="org.jboss.seam.example.booking.BookingListAction" jndi-name="java:app/jboss-seam-booking/BookingListAction" /> <component class="org.jboss.seam.example.booking.RegisterAction" jndi-name="java:app/jboss-seam-booking/RegisterAction" /> <component class="org.jboss.seam.example.booking.HotelSearchingAction" jndi-name="java:app/jboss-seam-booking/HotelSearchingAction" /> <component class="org.jboss.seam.example.booking.HotelBookingAction" jndi-name="java:app/jboss-seam-booking/HotelBookingAction" /> <component class="org.jboss.seam.example.booking.ChangePasswordAction" jndi-name="java:app/jboss-seam-booking/ChangePasswordAction" />- Você pode modificar o código adicionando a anotação
@JNDIName(value="")e especificando o caminho JNDI. Segue abaixo um exemplo do código de bean de sessão sem monitorização de estado alterado. Uma descrição detalhada deste processo está disponível na documentação de referência do Seam 2.2.@Stateless @Name("authenticator") @JndiName(value="java:app/jboss-seam-booking/AuthenticatorAction") public class AuthenticatorAction implements Authenticator { ... }
O aplicativo Seam 2.2 Booking é implantado e executado 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.