IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Wildfly/JBoss Java Discussion :

JBOSS_4.2.0 - EJB2.1 - EAR - ClassCastException $ProxyXX


Sujet :

Wildfly/JBoss Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Architecte de système d’information
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte de système d’information
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Par défaut JBOSS_4.2.0 - EJB2.1 - EAR - ClassCastException $ProxyXX
    Bonjour,
    Je participe à la montée de version d'une application n tiers réalisée en EJB2.1 et Struts.

    Cette application est packagée en deux EARs:
    EAR Metier:
    - EJB + INTERFACE
    - LOGIQUE METIER DIVERSE

    Structure
    !
    !-- business-ejb.jar
    !-- META-INF
    !-- application.xml
    !-- MANIFEST.MF
    !-- diverses libs declarees dans l'application xml


    EAR presentation:
    - LOGIQUE DE NAVIGATION ET IHM
    - client business

    Structure
    !
    !-- business-client.jar
    !-- META-INF
    !-- application.xml
    !-- MANIFEST.MF
    !-- diverses libs declarees dans l'application xml
    !-- SSLv2.WAR
    !-- META-INF
    !-- MANIFEST.MF
    !-- pages JSP
    !-- SSLv3.WAR
    !-- META-INF
    !-- MANIFEST.MF
    !-- pages JSP
    !-- WEB-CLASSES.jar

    L'organisation générale vous étant présenté, je peux m'attaquer au problème.
    Sur les versions 4.0.x de Jboss et antérieur, je n'avais aucun problème d'execution.
    Lorsque j'execute sur JBoss4.2.0Ga, je recois une exception de type ClassCastException sur l'invocation suivante:
    Object obj = PortableRemoteObject.narrow(objRef, homeClassName);

    Code complet
    Object objRef = initialContext.lookup(jndiHomeName);
    Object obj = PortableRemoteObject.narrow(objRef, homeClassName);
    remoteHome = (EJBHome) obj;
    cache.put(jndiHomeName, remoteHome);

    Les manifestes des wars et du jar de classes reference en classpath le client business qui contient uniquement les facades.

    Avez vous une idee?

  2. #2
    Membre émérite Avatar de XmasRock
    Inscrit en
    Janvier 2007
    Messages
    729
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 729
    Par défaut
    Tout est-il déployé dans le même serveur ?

    Peux-tu donner le résultat de la méthode displayClassInfo du MBean JMImplementation:name=Default,service=LoaderRepository (ou l'equivalent si tu as isolé tes applis) pour la classe posant le probleme ?

  3. #3
    Membre habitué
    Profil pro
    Architecte de système d’information
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte de système d’information
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Par défaut
    Oui l'ensemble des ears est en local, le même effet se produit sur deux machines physiques.

    résultat de la méthode displayClassInfo du MBean JMImplementation:name=Default,service=LoaderRepository
    Information
    Not loaded in repository cache

  4. #4
    Membre émérite Avatar de XmasRock
    Inscrit en
    Janvier 2007
    Messages
    729
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 729
    Par défaut
    Peux-tu nous montrer la stacktrace complete ?

    Tu dis que tu as les interfaces dans ton EAR métier. L'origine est ici.
    - sont-elles compilées en même temps ?
    - dans le même serveur, c'est pas une bonne idée de séparer les couches. Vires les interfaces de business-ejb.jar et regroupe le tout dans une seule ear.

  5. #5
    Membre habitué
    Profil pro
    Architecte de système d’information
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte de système d’information
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Par défaut
    Bonjour,

    Je vous joins la trace de de l'erreur,

    javax.servlet.ServletException: fr.pamrs.af4j.InfrastructureException: Impossible de retrouver UserManagerRemoteHome
    [Orig : java.lang.ClassCastException ]
    org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:516)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:423)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
    org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)


    cause mère

    fr.pamrs.af4j.InfrastructureException: Impossible de retrouver UserManagerRemoteHome
    [Orig : java.lang.ClassCastException ]
    fr.pamrs.mdx.user.service.delegate.UserManagerDelegate.<init>(UserManagerDelegate.java:57)
    fr.pamrs.mdx.user.service.delegate.UserManagerDelegate.<init>(UserManagerDelegate.java:45)
    fr.pamrs.mdx.ActionAccueil.execute(ActionAccueil.java:62)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
    org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)


    cause mère

    fr.pamrs.af4j.j2ee.ServiceLocatorException: java.lang.ClassCastException
    fr.pamrs.af4j.j2ee.ServiceLocatorClient.getRemoteHome(ServiceLocatorClient.java:223)
    fr.pamrs.mdx.user.service.delegate.UserManagerDelegate.<init>(UserManagerDelegate.java:53)
    fr.pamrs.mdx.user.service.delegate.UserManagerDelegate.<init>(UserManagerDelegate.java:45)
    fr.pamrs.mdx.ActionAccueil.execute(ActionAccueil.java:62)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
    org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)


    cause mère

    java.lang.ClassCastException
    com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:229)
    javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:137)
    fr.pamrs.af4j.j2ee.ServiceLocatorClient.getRemoteHome(ServiceLocatorClient.java:212)
    fr.pamrs.mdx.user.service.delegate.UserManagerDelegate.<init>(UserManagerDelegate.java:53)
    fr.pamrs.mdx.user.service.delegate.UserManagerDelegate.<init>(UserManagerDelegate.java:45)
    fr.pamrs.mdx.ActionAccueil.execute(ActionAccueil.java:62)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
    org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)


    cause mère

    java.lang.ClassCastException: $Proxy95
    com.sun.corba.se.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:212)
    javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:137)
    fr.pamrs.af4j.j2ee.ServiceLocatorClient.getRemoteHome(ServiceLocatorClient.java:212)
    fr.pamrs.mdx.user.service.delegate.UserManagerDelegate.<init>(UserManagerDelegate.java:53)
    fr.pamrs.mdx.user.service.delegate.UserManagerDelegate.<init>(UserManagerDelegate.java:45)
    fr.pamrs.mdx.ActionAccueil.execute(ActionAccueil.java:62)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
    org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

    Les interfaces sont compilées avec les ejbs. Le choix de la séparation de tiers n'est pas de mon fait. Je suis obligé de rester dans ce mode de déploiement.

  6. #6
    Membre habitué
    Profil pro
    Architecte de système d’information
    Inscrit en
    Avril 2004
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte de système d’information
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2004
    Messages : 9
    Par défaut Solution ...
    Après avoir analyser un peu plus profondement le problème, il s'avère que la façon d'effectuer le narrow sur notre système est inapproprié. La convergence des locators EJB2 et EJB3 dans Jboss 4.2.0 est la cause de nos problèmes. Nous avons donc modifier notre service locator.
    Merci de votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Hibernate] - ClassCastException dans une requête
    Par charlot44 dans le forum Hibernate
    Réponses: 8
    Dernier message: 25/04/2008, 20h01
  2. Réponses: 15
    Dernier message: 20/09/2005, 09h54
  3. [struts] pb:ClassCastException
    Par francon81 dans le forum Struts 1
    Réponses: 2
    Dernier message: 15/04/2005, 15h56
  4. Différences entre .war, .jar et .ear ?
    Par swirtel dans le forum Langage
    Réponses: 2
    Dernier message: 16/02/2005, 08h53
  5. JBuilder2005 - J2EE1.4 avec les EJB2.x
    Par fidififouille dans le forum JBuilder
    Réponses: 3
    Dernier message: 08/02/2005, 13h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo