3.2.13. Migration von Seam 2.2 Applikationen
3.2.13.1. Migration der Seam 2.2 Archive zur JBoss EAP 6
Wenn Sie eine Seam 2.2 Applikation migrieren, so müssen Sie die Datenquelle konfigurieren und mögliche Modulabhängigkeiten festlegen. Sie müssen außerdem festlegen, ob die Applikation Abhängigkeiten von Archiven besitzt, die nicht mit der JBoss EAP 6 geliefert werden und etwaige abhängige JARs in das lib/-Verzeichnis der Applikation kopieren.
Wichtig
Prozedur 3.25. Migration der Seam 2.2 Archive
Aktualisierung der Datenquellen-Konfiguration
Einige Seam 2.2 Beispiele verwenden die standardmäßige JDBC-Datenquelle namensjava:/ExampleDS. Diese Standard-Datenquelle hat sich bei der JBoss EAP 6 zujava:jboss/datasources/ExampleDSgeändert. Falls Ihre Applikation die Beispieldatenbank verwendet, so so können Sie eine der folgenden Vorgehensweisen wählen:Weitere Informationen zur Konfiguration einer Datenquelle finden Sie unter Abschnitt 3.1.6.2, »Aktualisierung der Datenquellen-Konfiguration«.- Falls Sie die mit der JBoss EAP 6 gelieferte Beispieldatenbank verwenden möchten, so bearbeiten Sie die
META-INF/persistence.xml-Datei, damit sie das bestehendejta-data-source-Element mit dem Datenquellen JNDI-Namen der Beispieldatenbank ersetzt:<!-- <jta-data-source>java:/ExampleDS</jta-data-source> --> <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
- Falls Sie Ihre bestehende Datenbank lieber behalten möchten, so können Sie die Datenquellendefinition der
EAP_HOME/standalone/configuration/standalone.xml-Datei hinzufügen.Wichtig
Sie müssen den Server stoppen, ehe Sie die Server Konfigurations-Datei bearbeiten, damit Ihre Änderungen bei einem Server-Neustart als dauerhaft erstellt werden.Die folgende Definition ist eine Kopie der standardmäßigen HSQL Datenquelle, die in der JBoss EAP 6 definiert ist:<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> - Sie können die Datenquellen-Definition auch mittels der Management-CLI-Befehlszeilen-Interface hinzufügen. Nachfolgend sehen Sie ein Beispiel für die Syntax, mit der Sie eine Datenquelle hinzufügen. Der "\" am Ende der Zeile zeigt die Fortsetzung des Befehls in der folgenden Zeile an.
Beispiel 3.5. Beispiel der Syntax für die Hinzufügung der Datenquellen-Definition
$ 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
Fügen Sie die erforderlichen Abhängigkeiten hinzu
Da Seam 2.2 Applikationen JSF 1.2 verwenden, müssen Sie Abhängigkeiten für die JSF 1.2 Module hinzufügen und die JSF 2.0 Module ausschließen. Um dies zu bewerkstelligen, müssen Sie einejboss-deployment-structure.xml-Datei imMETA-INF/-Verzeichnis des EAR erstellen, das folgende Daten enthält:<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>Falls Ihre Applikation Protokollierungs-Frameworks von Drittanbietern verwendet, so müssen Sie diese Abhängigkeiten wie hier beschrieben hinzufügen: Abschnitt 3.1.4.1, »Bearbeitung von Protokollierungsabhängigkeiten«.Falls Ihre Applikation Hibernate 3.x verwendet, so versuchen Sie die Applikation zunächst unter Verwendung von Hibernate 4 Bibliotheken auszuführen
Falls Ihre Applikation Seam Managed Persistence Context, Hibernate Suche, Validierung und andere Features, die sich in Hibernate 4 geändert haben, nicht verwendet, so können Sie möglicherweise die Hibernate 4 Bibliotheken verwenden. Falls Sie jedochClassNotFoundExceptionsoderClassCastExceptionssehen, die auf Hibernate Klassen verweisen oder Fehler ähnlich dem folgenden sehen, so folgen Sie den Anweisungen im nachfolgenden Schritt und bearbeiten Sie die Applikation dahingehend, dass sie Hibernate 3.3 Bibliotheken verwendet.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 signatureKopieren Sie abhängige Archive von außerhalb liegenden Frameworks oder anderen Orten
Falls Ihre Applikation Hibernate 3.x verwendet und Sie Hibernate 4 nicht erfolgreich mit Ihrer Applikation verwenden können, so müssen Sie die Hibernate 3.x JARs in das/lib-Verzeichnis kopieren und das Hibernate-Modul im Deployments-Abschnitt derMETA-INF/jboss-deployment-structure.xmlwie folgt ausschließen:<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0"> <deployment> <exclusions> <module name="org.hibernate"/> </exclusions> <deployment> </jboss-deployment-structure>Hier sind zusätzliche Schritte, die Sie beim bündeln von Hibernate 3.x mit Ihrer Applikation vornehmen müssen. Weitere Informationen finden Sie unter Abschnitt 3.2.2.2, »Konfiguration der Änderungen bei Applikationen, die Hibernate und JPA verwenden«.Fehlerbehebung und Auflösung von Seam 2.2 JNDI-Fehlern
Bei der Migration einer Seam 2.2 Applikation kann es sein, dass Siejavax.naming.NameNotFoundExceptionFehler wie den folgenden im Protokoll sehen:javax.naming.NameNotFoundException: Name 'jboss-seam-booking' not found in context ''
Falls Sie JNDI-Lookups nicht durch den Code hindurch bearbeiten wollen, so können Sie diecomponents.xml-Datei der Applikation wie folgt bearbeiten:Ersetzen Sie das bestehende core-init Element
Zuerst müssen Sie das bestehende core-init Element wie folgt ersetzen:<!-- <core:init jndi-pattern="jboss-seam-booking/#{ejbName}/local" debug="true" distributable="false"/> --> <core:init debug="true" distributable="false"/>Finden Sie die JNDI-Binding INFO-Nachrichten im Serverprotokoll
Anschließend finden Sie die JNDI-Binding INFO-Nachrichten im Serverprotokoll, die beim Deployment der Applikation gedruckt wurden. Die JNDI-Binding-Nachrichten sollten in etwa so aussehen: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/AuthenticatorActionFügen Sie Komponentenelemente hinzu
Für jede JNDI-Binding INFO-Nachricht im Protokoll fügen Sie demcomponents.xml-Datei ein entsprechendescomponent-Element hinzu:<component class="org.jboss.seam.example.booking.AuthenticatorAction" jndi-name="java:app/jboss-seam-booking.jar/AuthenticatorAction" />
Weitere Informationen zur Fehlerbehebung und Auflösung von Migrationsproblemen finden Sie unter Abschnitt 4.2.1, »Fehler- und Problembehebung bei der Migration«.Eine Liste bekannter Migrationsprobleme mit Seam 2 Archiven finden Sie unter Abschnitt 3.2.13.2, »Seam 2.2 Archiv-Migrationsprobleme«.
Das Seam 2.2 Archiv 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.