4.3.6. Débogger et résoudre les Erreurs de déploiement et les Exceptions de Seam 2.2 Booking Archive

Dans l'étape précédente, Section 4.3.5, « Générer et déployer la version JBoss Enterprise Application Platform 5.1 de l'application Seam 2.2 Booking », vous avez créé l'application JBos Enterprise Application Platform 5.1 Seam 2.2 Booking et vous l'avez déployée dans le dossier de déploiement JBoss Enterprise Application Platform 6. Au cours de cette étape, vous avez résolu et débogué chaque erreur de déploiement que vous avez rencontrée.

Important

Les applications qui utilisent Hibernate directement avec Seam 2.2 utilisent sans doute une version d'Hibernate 3 empaquetée dans l'application. Hibernate 4, fourni par le module org.hibernate de JBoss Enterprise Application Platform 6, n'est pas pris en charge par Seam 2.2. Cet exemple a pour but de vous aider à exécuter votre application dans JBoss Enterprise Application Platform 6 comme première étape. Notez qu'empaqueter Hibernate 3 avec une application Seam 2.2 n'est pas une configuration empaquetée.

Procédure 4.16. Déboguer et résoudre les erreurs et les exceptions de déploiement

  1. Problème - java.lang.ClassNotFoundException: javax.faces.FacesException
    Quand vous déployez l'application, le journal contient l'erreur suivante :
    ERROR \[org.jboss.msc.service.fail\] (MSC service thread 1-1) MSC00001: Failed to start service jboss.deployment.subunit."jboss-seam-booking.ear"."jboss-seam-booking.war".POST_MODULE:
    org.jboss.msc.service.StartException in service jboss.deployment.subunit."jboss-seam-booking.ear"."jboss-seam-booking.war".POST_MODULE:
    Failed to process phase POST_MODULE of subdeployment "jboss-seam-booking.war" of deployment "jboss-seam-booking.ear"
        (.. additional logs removed ...)
    Caused by: java.lang.ClassNotFoundException: javax.faces.FacesException from \[Module "deployment.jboss-seam-booking.ear:main" from Service Module Loader\]
        at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:191)
    
    Ceci signifie :

    L'exception ClassNotFoundException indique une dépendance manquante. Dans ce cas, impossible de trouver la classe javax.faces.FacesException et vous devez donc ajouter explicitement la dépendance.

    Comment résoudre ceci :

    Chercher le nom du module pour cette classe dans le répertoire EAP6_HOME/modules/system/layers/base/ en cherchant un chemin d'accès qui corresponde à la classe manquante. Dans ce cas, vous trouverez 2 modules qui correspondent :

    javax/faces/api/main
    javax/faces/api/1.2
    
    Les deux modules ont le même nom de module : javax.faces.api mais un d'entre eux, qui se trouve dans le répertoire principal, est pour JSF 2.0 et l'autre, située dans le répertoire 1.2, est pour JSF 1.2. S'il n'y avait qu'un seul module disponible, vous pourriez simplement créer un fichier MANIFEST.MF et ajouter la dépendance de module. Mais, dans ce cas, vous devez utiliser la version JSF 1.2 et non pas la version 2.0 du répertoire principal, donc vous devez en spécifier une et exclure l'autre. Pour ceci, créer un fichier jboss-deployment-structure.xml dans le répertoire META-INF/ de l'EAR qui contiendra les données suivantes :
    <jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
      <deployment>
          <dependencies>
            <module name="javax.faces.api" slot="1.2" export="true"/>
          </dependencies>
      </deployment>
      <sub-deployment name="jboss-seam-booking.war">
        <exclusions>
            <module name="javax.faces.api" slot="main"/>
          </exclusions>
          <dependencies>
            <module name="javax.faces.api" slot="1.2"/>
          </dependencies>
      </sub-deployment>
    </jboss-deployment-structure>
    
    
    Dans la section deployment, vous ajoutez la dépendance pour l'API javax.faces.api du module JSF 1.2. Vous ajoutez aussi la dépendance du module JSF 1.2 dans la section de sous-déploiement du WAR et vous excluez le module JSF 2.0.

    Redéployer l'application en effaçant le fichier EAP6_HOME/standalone/deployments/jboss-seam-booking.ear.failed et en créant un fichier vide jboss-seam-booking.ear.dodeploy dans le même répertoire.
  2. Problème - java.lang.ClassNotFoundException: org.apache.commons.logging.Log
    Quand vous déployez l'application, le journal contient l'erreur suivante :
    ERROR [org.jboss.msc.service.fail] (MSC service thread 1-8) MSC00001: Failed to start service jboss.deployment.unit."jboss-seam-booking.ear".INSTALL:
    org.jboss.msc.service.StartException in service jboss.deployment.unit."jboss-seam-booking.ear".INSTALL:
    Failed to process phase INSTALL of deployment "jboss-seam-booking.ear"
        (.. additional logs removed ...)
    Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.Log from [Module "deployment.jboss-seam-booking.ear.jboss-seam-booking.war:main" from Service Module Loader]
    
    Ceci signifie :

    L'exception ClassNotFoundException indique une dépendance manquante. Dans ce cas, impossible de trouver la classe org.apache.commons.logging.Log et vous devez donc ajouter explicitement la dépendance.

    Comment résoudre ceci :

    Chercher le nom du module pour cette classe dans le répertoire EAP6_HOME/modules/system/layers/base/ en cherchant un chemin d'accès qui corresponde à la classe manquante. Dans ce cas, vous trouverez un module qui correspond au chemin org/apache/commons/logging/. Le nom du module est “org.apache.commons.logging”.

    Modifier le fichier jboss-deployment-structure.xml pour ajouter la dépendance de module à la section de déploiement du fichier.
    <module name="org.apache.commons.logging" export="true"/>
    
    
    Le fichier jboss-deployment-structure.xml devrait maintenant ressembler à ceci :
    <jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
      <deployment>
          <dependencies>
            <module name="javax.faces.api" slot="1.2" export="true"/>
            <module name="org.apache.commons.logging" export="true"/>
          </dependencies>
      </deployment>
      <sub-deployment name="jboss-seam-booking.war">
        <exclusions>
            <module name="javax.faces.api" slot="main"/>
          </exclusions>
          <dependencies>
            <module name="javax.faces.api" slot="1.2"/>
          </dependencies>
      </sub-deployment>
    </jboss-deployment-structure>
    
    
    Redéployer l'application en effaçant le fichier EAP6_HOME/standalone/deployments/jboss-seam-booking.ear.failed et en créant un fichier vide jboss-seam-booking.ear.dodeploy dans le même répertoire.
  3. Problème - java.lang.ClassNotFoundException: org.dom4j.DocumentException
    Quand vous déployez l'application, le journal contient l'erreur suivante :
    ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/seam-booking]] (MSC service thread 1-3) Exception sending context initialized event to listener instance of class org.jboss.seam.servlet.SeamListener: java.lang.NoClassDefFoundError: org/dom4j/DocumentException
        (... additional logs removed ...)
    Caused by: java.lang.ClassNotFoundException: org.dom4j.DocumentException from [Module "deployment.jboss-seam-booking.ear.jboss-seam.jar:main" from Service Module Loader]
    
    Ceci signifie :

    L'exception ClassNotFoundException indique une dépendance manquante. Dans ce cas, impossible de trouver la classe org.dom4j.DocumentException.

    Comment résoudre ceci :

    Trouver le nom de module dans le répertoire EAP6_HOME/modules/system/layers/base/ en cherchant org/dom4j/DocumentException. Le nom du module est “org.dom4j”. Modifier le fichier jboss-deployment-structure.xml pour ajouter la dépendance de module à la section de déploiement du fichier.

    <module name="org.dom4j" export="true"/>
    
    
    Le fichier jboss-deployment-structure.xml doit maintenant ressembler à ceci :
    <jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
      <deployment>
          <dependencies>
            <module name="javax.faces.api" slot="1.2" export="true"/>
            <module name="org.apache.commons.logging" export="true"/>
                <module name="org.dom4j" export="true"/>
              </dependencies>
      </deployment>
      <sub-deployment name="jboss-seam-booking.war">
        <exclusions>
            <module name="javax.faces.api" slot="main"/>
          </exclusions>
          <dependencies>
            <module name="javax.faces.api" slot="1.2"/>
          </dependencies>
      </sub-deployment>
    </jboss-deployment-structure>
    
    

    Redéployer l'application en effaçant le fichier EAP6_HOME/standalone/deployments/jboss-seam-booking.ear.failed et en créant un fichier vide jboss-seam-booking.ear.dodeploy dans le même répertoire.
  4. Problème - java.lang.ClassNotFoundException: org.hibernate.validator.InvalidValue
    Quand vous déployez l'application, le journal contient l'erreur suivante :
    ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/seam-booking]] (MSC service thread 1-6) Exception sending context initialized event to listener instance of class org.jboss.seam.servlet.SeamListener: java.lang.RuntimeException: Could not create Component: org.jboss.seam.international.statusMessages
        (... additional logs removed ...)
    Caused by: java.lang.ClassNotFoundException: org.hibernate.validator.InvalidValue from [Module "deployment.jboss-seam-booking.ear.jboss-seam.jar:main" from Service Module Loader]
    
    Ceci signifie :

    L'exception ClassNotFoundException indique une dépendance manquante. Dans ce cas, impossible de trouver la classe org.hibernate.validator.InvalidValue.

    Comment résoudre ceci :

    Il y a un module “org.hibernate.validator”, mais le JAR ne contient pas la classe org.hibernate.validator.InvalidValue, donc si on ajoute la dépendance de module, on ne résout pas le problème. Dans un tel cas, le JAR qui contient la classe faisait partie du déploiement de JBoss Enterprise Application Platform 5.1. Chercher le JAR qui contient la classe manquante dans le répertoire EAP5_HOME/jboss-eap-5.1/seam/lib/. Pour cela, ouvrir la console et tapez ce qui suit :

    $ cd EAP5_HOME/seam/lib
    $ grep 'org.hibernate.validator.InvalidValue' `find . -name '*.jar'
    
    Résultat :
    $ Binary file ./hibernate-validator.jar matches
    $ Binary file ./test/hibernate-all.jar matches
    
    Dans ce cas, copier hibernate-validator.jar dans le répertoire jboss-seam-booking.ear/lib/ :
    $ cp EAP5_HOME/seam/lib/hibernate-validator.jar jboss-seam-booking.ear/lib
    

    Redéployer l'application en effaçant le fichier EAP6_HOME/standalone/deployments/jboss-seam-booking.ear.failed et en créant un fichier vide jboss-seam-booking.ear.dodeploy dans le même répertoire.
  5. Problème - java.lang.InstantiationException: org.jboss.seam.jsf.SeamApplicationFactory
    Quand vous déployez l'application, le journal contient l'erreur suivante :
    INFO  [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-7) Unsanitized stacktrace from failed start...: com.sun.faces.config.ConfigurationException: Factory 'javax.faces.application.ApplicationFactory' was not configured properly.
      at com.sun.faces.config.processor.FactoryConfigProcessor.verifyFactoriesExist(FactoryConfigProcessor.java:296) [jsf-impl-2.0.4-b09-jbossorg-4.jar:2.0.4-b09-jbossorg-4]
      (... additional logs removed ...)
    Caused by: javax.faces.FacesException: org.jboss.seam.jsf.SeamApplicationFactory
      at javax.faces.FactoryFinder.getImplGivenPreviousImpl(FactoryFinder.java:606) [jsf-api-1.2_13.jar:1.2_13-b01-FCS]
      (... additional logs removed ...)
      at com.sun.faces.config.processor.FactoryConfigProcessor.verifyFactoriesExist(FactoryConfigProcessor.java:294) [jsf-impl-2.0.4-b09-jbossorg-4.jar:2.0.4-b09-jbossorg-4]
      ... 11 more
    Caused by: java.lang.InstantiationException: org.jboss.seam.jsf.SeamApplicationFactory
      at java.lang.Class.newInstance0(Class.java:340) [:1.6.0_25]
      at java.lang.Class.newInstance(Class.java:308) [:1.6.0_25]
      at javax.faces.FactoryFinder.getImplGivenPreviousImpl(FactoryFinder.java:604) [jsf-api-1.2_13.jar:1.2_13-b01-FCS]
      ... 16 more
    
    Ceci signifie :

    Les com.sun.faces.config.ConfigurationException et java.lang.InstantiationException indiquent un problème de dépendance. Dans un tel cas, la cause n'est pas évidente.

    Comment résoudre ceci :

    Il vous faut trouver le module qui contient les classes com.sun.faces. Malgré qu'il n'y ait pas de module com.sun.faces, il y a deux modules com.sun.jsf-impl. Une simple vérification du jsf-impl-1.2_13.jar dans le répertoire 1.2 révèle qu'il contient les classes com.sun.faces. Comme avec les exceptions javax.faces.FacesExceptionClassNotFoundException, vous devez utiliser la version JSF 1.2 et non pas la version JSF 2.0 dans le principal, donc vous devrez en indiquer une et en exclure l'autre. Vous devrez modifier le fichier jboss-deployment-structure.xml pour ajouter la dépendance de module à la section de déploiement du fichier. Vous devrez aussi y ajouter le sous-déploiement du WAR et exclure le module JSF 2.0. Le fichier devrait ressembler à ceci :

    <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"/>
          </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>
    

    Redéployer l'application en effaçant le fichier EAP6_HOME/standalone/deployments/jboss-seam-booking.ear.failed et en créant un fichier vide jboss-seam-booking.ear.dodeploy dans le même répertoire.
  6. Problème - java.lang.ClassNotFoundException: org.apache.commons.collections.ArrayStack
    Quand vous déployez l'application, le journal contient l'erreur suivante :
    ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/seam-booking]] (MSC service thread 1-1) Exception sending context initialized event to listener instance of class com.sun.faces.config.ConfigureListener: java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! org.apache.commons.collections.ArrayStack from [Module "deployment.jboss-seam-booking.ear:main" from Service Module Loader]
        (... additional logs removed ...)
    Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.ArrayStack from [Module "deployment.jboss-seam-booking.ear:main" from Service Module Loader]
    
    Ceci signifie :

    Le ClassNotFoundException indique une dépendance manquante. Dans ce cas, il ne peut pas trouver la classe org.apache.commons.collections.ArrayStack.

    Comment résoudre ceci :

    Trouver le nom de module dans le répertoire EAP6_HOME/modules/system/layers/base/ en cherchant org/apache/commons/collections. Le nom du module est “org.apache.commons.collections”. Modifier le fichier jboss-deployment-structure.xml pour ajouter la dépendance de module à la section de déploiement du fichier.

    <module name="org.apache.commons.collections" export="true"/>
    
    Le fichier jboss-deployment-structure.xml doit maintenant ressembler à ceci :
    <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>
    

    Redéployer l'application en effaçant le fichier EAP6_HOME/standalone/deployments/jboss-seam-booking.ear.failed et en créant un fichier vide jboss-seam-booking.ear.dodeploy dans le même répertoire.
  7. Problème - Services avec des dépendances manquantes/non disponibles
    Quand vous déployez l'application, le journal contient l'erreur suivante :
    ERROR [org.jboss.as.deployment] (DeploymentScanner-threads - 2) {"Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"Services with missing/unavailable dependencies" => ["jboss.deployment.subunit.\"jboss-seam-booking.ear\".\"jboss-seam-booking.jar\".component.AuthenticatorAction.START missing [ jboss.naming.context.java.comp.jboss-seam-booking.\"jboss-seam-booking.jar\".AuthenticatorAction.\"env/org.jboss.seam.example.booking.AuthenticatorAction/em\" ]","jboss.deployment.subunit.\"jboss-seam-booking.ear\".\"jboss-seam-booking.jar\".component.HotelSearchingAction.START missing [ jboss.naming.context.java.comp.jboss-seam-booking.\"jboss-seam-booking.jar\".HotelSearchingAction.\"env/org.jboss.seam.example.booking.HotelSearchingAction/em\" ]","
      (... additional logs removed ...)
    "jboss.deployment.subunit.\"jboss-seam-booking.ear\".\"jboss-seam-booking.jar\".component.BookingListAction.START missing [ jboss.naming.context.java.comp.jboss-seam-booking.\"jboss-seam-booking.jar\".BookingListAction.\"env/org.jboss.seam.example.booking.BookingListAction/em\" ]","jboss.persistenceunit.\"jboss-seam-booking.ear/jboss-seam-booking.jar#bookingDatabase\" missing [ jboss.naming.context.java.bookingDatasource ]"]}}}
    
    Ceci signifie :

    Quand vous avez l'erreur suivante : “Services with missing/unavailable dependencies”, chercher le texte entre les guillemets après “missing”. Dans ce cas, vous verrez :

    missing [ jboss.naming.context.java.comp.jboss-seam-booking.\"jboss-seam-booking.jar\".AuthenticatorAction.\"env/org.jboss.seam.example.booking.AuthenticatorAction/em\" ]
    
    “/em” indique un problème de Gestionnaire d'entité (Entity Manager) et de source de données.

    Comment résoudre ceci :

    Dans JBoss Enterprise Application Platform 6, la configuration de la source de données a été modifiée et doit être définie dans le fichier EAP6_HOME/standalone/configuration/standalone.xml. Comme JBoss Enterprise Application Platform 6 est fourni avec une base de données déjà définie dans le fichier standalone.xml, modifier le fichier persistence.xml pour utiliser cet exemple de base de données dans cette application. Si vous regardez dans le fichier standalone.xml, vous verrez que jndi-name de l'exemple de source de données est java:jboss/datasources/ExampleDS. Modifier le fichier jboss-seam-booking.jar/META-INF/persistence.xml pour commenter l'élément jta-data-source et le remplacer comme suit :

    <!-- <jta-data-source>java:/bookingDatasource</jta-data-source> -->
    <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
    

    Redéployer l'application en effaçant le fichier EAP6_HOME/standalone/deployments/jboss-seam-booking.ear.failed et en créant un fichier vide jboss-seam-booking.ear.dodeploy dans le même répertoire.
  8. Problème - java.lang.ClassNotFoundException: org.hibernate.cache.HashtableCacheProvider
    Quand vous déployez l'application, le journal contient l'erreur suivante :
    ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC00001: Failed to start service jboss.persistenceunit."jboss-seam-booking.ear/jboss-seam-booking.jar#bookingDatabase": org.jboss.msc.service.StartException in service jboss.persistenceunit."jboss-seam-booking.ear/jboss-seam-booking.jar#bookingDatabase": Failed to start service
      at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1786)
      (... log messages removed ...)
    Caused by: java.lang.ClassNotFoundException: org.hibernate.cache.HashtableCacheProvider from [Module "org.hibernate:main" from local module loader @12a3793 (roots: /home/sgilda/tools/jboss7/modules)]
      at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:191)
      (... log messages removed ...)
    
    Ceci signifie :

    L'exception ClassNotFoundException indique une dépendance manquante. Dans ce cas, impossible de trouver la classe org.hibernate.cache.HashtableCacheProvider.

    Comment résoudre ceci :

    Il y a pas de module pour “org.hibernate.cache”. Dans ce cas, le JAR contenant la classe faisait partie du déploiement de JBoss Enterprise Application Platform 5.1. Chercher le JAR qui contient la classe manquante dans le répertoire EAP5_HOME/seam/lib/. Pour cela, ouvrir la console et tapez ce qui suit :

    $ cd EAP5_HOME/seam/lib
    $ grep 'org.hibernate.validator.InvalidValue' `find . -name '*.jar'`
    
    Résultat :
    Binary file ./hibernate-core.jar matches
    Binary file ./test/hibernate-all.jar matches
    
    Dans ce cas, copier hibernate-core.jar dans le répertoire jboss-seam-booking.ear/lib/ :
    cp EAP5_HOME/seam/lib/hibernate-core.jar jboss-seam-booking.ear/lib
    

    Redéployer l'application en effaçant le fichier EAP6_HOME/standalone/deployments/jboss-seam-booking.ear.failed et en créant un fichier vide jboss-seam-booking.ear.dodeploy dans le même répertoire.
  9. Problème - java.lang.ClassCastException: org.hibernate.cache.HashtableCacheProvider
    Quand vous déployez l'application, le journal contient l'erreur suivante :
    ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC00001: Failed to start service jboss.persistenceunit."jboss-seam-booking.ear/jboss-seam-booking.jar#bookingDatabase": org.jboss.msc.service.StartException in service jboss.persistenceunit."jboss-seam-booking.ear/jboss-seam-booking.jar#bookingDatabase": Failed to start service
      at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1786)
      (... log messages removed ...)
    Caused by: java.lang.ClassCastException: org.hibernate.cache.HashtableCacheProvider cannot be cast to org.hibernate.cache.spi.CacheProvider
      at org.hibernate.cache.internal.bridge.RegionFactoryCacheProviderBridge.init(RegionFactoryCacheProviderBridge.java:65)
      ... 20 more
    
    Ceci signifie :

    Une exception ClassCastException peut résulter à la suite d'un certain nombre de problèmes. Si vous cherchez cette exception dans le log, on voit que la classe org.hibernate.cache.HashtableCacheProvider étend org.hibernate.cache.spi.CacheProvider et est téléchargée par un autre chargeur de classes que celui de la classe qu'il étend. La classe org.hibernate.cache.HashtableCacheProvider est dans hibernate-core.jar et est chargée par le chargeur de classes de l'application. La classe étendue, org.hibernate.cache.spi.CacheProvider, est dans le org/hibernate/main/hibernate-core-4.0.0.Beta1.jar et se trouve implicitement chargée par ce module. Ce n'est pas évident, mais en raison de changements dans Hibernate 4, ce problème est causé par un problème de compatibilité rétro-active en raison du déplacement de la classe HashtableCacheProvider vers un autre package. Cette classe a été déplacée à partir du package org.hibernate.cache vers le package org.hibernate.cache.internal. Si vous ne retirez pas la propriété hibernate.cache.provider_class du fichier persistence.xml, cela force l'application Seam à regrouper les anciennes bibliothèques d'Hibernate, ce qui résulte en une ClassCastExceptions. Dans JBoss Enterprise Application Platform 6, vous devez vous refréner d'utiliser HashtableCacheProvider et utiliser Infinispan à la place.

    Comment résoudre ceci :

    Dans JBoss Enterprise Application Platform 6, décommenter hibernate.cache.provider_class property dans le fichier jboss-seam-booking.jar/META-INF/persistence.xml comme suit :

    <!-- <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/> -->
    

    Redéployer l'application en effaçant le fichier EAP6_HOME/standalone/deployments/jboss-seam-booking.ear.failed et en créant un fichier vide jboss-seam-booking.ear.dodeploy dans le même répertoire.
  10. À ce moment là, l'application se déploie sans erreur, mais quand vous accédez à l'URL http://localhost:8080/seam-booking/ par un navigateur et tentez un "Account Login", vous obtenez l'erreur suivante : “The page isn't redirecting properly”. Dans une prochaine étape, vous allez apprendre comment déboguer et résoudre les erreurs de runtime.
    Pour apprendre comment débogger et comment résoudre les problèmes de runtime, cliquer ici : Section 4.3.7, « Déboguer et résoudre les Erreurs de runtime et les Exceptions de Seam 2.2 Booking Archive »