4.3.8. Übersicht über eine Zusammenfassung von Änderungen bei der Migration der Seam 2.2 Booking Application

Obwohl es wesentlich effizienter wäre Abhängigkeiten im Voraus zu bestimmen und die impliziten Abhängigkeiten in einem Schritt hinzuzufügen, so zeigt diese Übung, wie Probleme im Protokoll erscheinen und liefert Informationen wie diese behoben werden können. Nachfolgend sehen Sie eine Zusammenfassung der Änderungen an der Applikation bei der Migration zur JBoss EAP 6.

Wichtig

Applikationen, die Hibernate direkt mit Seam 2.2 verwenden, können eine innerhalb der Applikation gepackte Version von Hibernate 3 verwenden. Hibernate 4, welches mittels des org.hibernate Moduls der JBoss EAP 6 bereitgestellt wird, wird von Seam 2.2 nicht unterstützt. Dieses Beispiel soll Ihnen dabei helfen, Ihre Applikation auf der JBoss EAP 6 in Betrieb zu nehmen. Bitte beachten Sie, dass das Packen von Hibernate 3 mit einer Seam 2.2 Applikation keine unterstützte Konfiguration ist.
  1. Sie haben eine jboss-deployment-structure.xml-Datei im META-INF/-Verzeichnis des EAR erstellt. Sie haben <dependencies> und <exclusions> hinzugefügt, um ClassNotFoundExceptions aufzulösen. DIese Datei enthält die folgenden Daten:
    <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. Sie haben die folgenden JARs aus dem EAP5_HOME/jboss-eap-5.X/seam/lib/-Verzeichnis (ersetzen Sie dabei 5.X durch die Version der EAP 5, von der Sie migrieren) in das jboss-seam-booking.ear/lib/-Verzeichnis kopiert, um ClassNotFoundExceptions aufzulösen:
    • hibernate-core.jar
    • hibernate-validator.jar
  3. Sie haben die jboss-seam-booking.jar/META-INF/persistence.xml-Datei wie folgt bearbeitet.
    1. Sie haben das jta-data-source-Element geändert, damit es die mit der JBoss EAP 6 gelieferte Beispieldatenbank verwendet:
      <!-- <jta-data-source>java:/bookingDatasource</jta-data-source> -->
      <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
      
    2. Sie haben die hibernate.cache.provider_class-Property auskommentiert:
      <!-- <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/> -->
      
  4. Sie haben die lib/components.xml-Datei des WAR bearbeitet, damit sie die neuen JNDI-Bindings verwendet
    1. Sie haben das bestehende core:init-Element wie folgt ersetzt:
      <!-- <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. Sie haben Komponentenelemente für die "EjbSynchronizations" und "TimerServiceDispatcher" JNDI-Bindings hinzugefügt.
      <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"/>