4.3.3. Migration des Seam 2.2 Buchungsbeispiels zur JBoss EAP 6
Die Seam 2.2 Booking EAR Migration ist komplizierter als das Seam 2.2 JPA WAR Beispiel. Die Dokumentation für die Seam 2.2 JPA WAR Beispielmigration finden Sie hier: Abschnitt 4.3.2, »Migration des Seam 2.2 JPA Beispiels zur JBoss EAP 6«. Um die Applikation zu migrieren, müssen Sie das Folgende tun:
- Initialisieren Sie JSF 1.2 statt des standardmäßigen JSF 2.
- Bündeln Sie ältere Versionen der Hibernate JARs statt derer, die mit der JBoss EAP 6 geliefert werden.
- Ändern Sie die JNDI-Bindings, damit diese die neue, portierbare Java EE 6 JNDI Syntax verwenden.
Wichtig
Prozedur 4.7. Migration des Seam 2.2 Buchungsbeispiels
Erstellen Sie die
jboss-deployment-structure.xml-DateiErstellen Sie eine neue Datei namensjboss-deployment-structure.xmlimjboss-seam-booking.ear/META-INF/und fügen Sie folgenden Inhalt hinzu:<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>Ändern Sie die
jboss-seam-booking.jar/META-INF/persistence.xml-Datei wie folgt.- Entfernen Sie die Hibernate-Property für die Cache Provider-Klasse oder kommentieren Sie sie aus:
<!-- <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/> -->
- Provider-Moduleigenschaft zur
jboss-seam-booking.jar/META-INF/persistence.xmlDatei hinzufügen:<property name="jboss.as.jpa.providerModule" value="hibernate3-bundled" />
- Die
jta-data-sourceEigenschaft ändern um den standardmäßigen JDBC Datenquellen JNDI Namen zu benutzen:<jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
Kopieren Sie JARs aus der Seam 2.2 Distribution
Kopieren Sie die folgenden JARs aus der Seam 2.2 DistributionEAP5.x_HOME/jboss-eap5.x/seam/lib/in dasjboss-seam-booking.ear/lib-Verzeichnis.antlr.jar slf4j-api.jar slf4j-log4j12.jar hibernate-core.jar hibernate-entitymanager.jar hibernate-validator.jar hibernate-annotations.jar hibernate-commons-annotations.jar
Ändern Sie die JNDI Lookup-Namen
Ändern Sie die JNDI Lookup-Strings in derjboss-seam-booking.war/WEB-INF/components.xml-Datei. Wegen der neuen JNDI portierbaren Regeln bindet die JBoss EAP 6 jetzt EJBs mittels JNDI portierbarer Syntax-Regeln und Sie nicht das einzelne jndiPattern verwenden wie noch in der JBoss EAP 5. Dies ist, wie Sie die Applikations EJB JNDI Lookup-Strings in der JBoss EAP 6 ändern müssen: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
Die JNDI-Lookup-Strings für die Seam 2.2 Framework EJBs müssen wie folgt geändert werden: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
Wählen Sie eine der folgenden Vorgehensweisen:Fügen Sie Komponentenelemente hinzu
Sie können einenjndi-namefür jedes EJB derWEB-INF/components.xmlhinzufügen:<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" />- Sie können den Code bearbeiten, indem Sie die
@JNDIName(value="")-Annotation hinzufügen, die den JNDI-Pfad festlegt. Ein Beispiel für den veränderten stateless Session Bean Code sehen Sie unten. Eine ausführliche Beschreibung dieses Vorgangs finden Sie in der Seam 2.2 Referenzdokumentation.@Stateless @Name("authenticator") @JndiName(value="java:app/jboss-seam-booking/AuthenticatorAction") public class AuthenticatorAction implements Authenticator { ... }
Die Seam 2.2 JPA Buchungsanwendung deployt und läuft nun auf der 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.