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

Java EE Discussion :

appel du bean stateful


Sujet :

Java EE

  1. #1
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 72
    Points : 43
    Points
    43
    Par défaut appel du bean stateful
    bonjour

    je suis en train de développer une application pour un site de vente en ligne et j'utilise des bean stateful mais au niveau de la servlet qui gére l'ajout de nouveaux client j'ai un problème.

    voici l'interface :
    @Remote
    public interface GestionClientRemote {

    public void addClient(client c);
    public List <client> infoclients(String login,String pass);
    public Boolean clientNotExiste(String login,String pass);


    }


    voici le bean :
    @Stateful
    public class GestionClient implements GestionClientRemote {
    @PersistenceContext(name="entities")
    private EntityManager em;


    public GestionClient() {

    }


    public void addClient(client c) {

    em.persist(c);
    }


    @SuppressWarnings("unchecked")
    public List<client> infoclients(String login,String pass) {

    return em.createQuery("SELECT c FROM client c where c.login='"+login+"' and c.pass='"+pass+"'").getResultList();
    }


    voici la servlet :

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String nom = request.getParameter("nom");
    String prenom = request.getParameter("prenom");
    String tel = request.getParameter("tel");
    String mail = request.getParameter("mail");
    String adresse = request.getParameter("adresse");
    String login = request.getParameter("login");
    String pass = request.getParameter("pass");

    if ((nom.equals(""))||(prenom.equals(""))||(tel.equals(""))||(adresse.equals(""))||(login.equals(""))||(pass .equals("")))
    response.sendRedirect("inscription.jsp");
    else
    {
    Properties p = new Properties( );
    p.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
    p.put(Context.URL_PKG_PREFIXES, " org.jboss.naming:org.jnp.interfaces");
    p.put(Context.PROVIDER_URL, "jnp://localhost:1099");
    Context ctx;
    try {

    ctx = new InitialContext(p);

    GestionClientRemote GC = (GestionClientRemote) ctx.lookup("GestionClient/remote");

    if (GC.clientNotExiste(login, pass))
    {
    System.out.print("ok1");
    GC.addClient(new client(nom, prenom, tel, mail, adresse, login, pass));
    response.sendRedirect("inscriptionValide.jsp");
    }

    else
    response.sendRedirect("Echec.jsp?action=0");
    } catch (NamingException e) {

    }


    mais quand je déploi sous jboss et j'exécute le client il me donne l'erreur suivante :

    java.lang.ClassCastException: $Proxy87 cannot be cast to siteVente.bean.GestionClientRemote
    at administration.authCustomer.doPost(authCustomer.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    [/COLOR]

    je suis bloqué sur cette erreur il ya 3 jour je ne sais pas quoi faire,
    Aidez moi svp!!

  2. #2
    Membre VIP Avatar de kalysto
    Profil pro
    Développeur
    Inscrit en
    Mars 2003
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mars 2003
    Messages : 442
    Points : 568
    Points
    568
    Par défaut
    Ben deja tu peux verifier que c'est bien un bean siteVente.bean.GestionClientRemote que tu veux obtenir.

    Si c'est le cas, regarde ce qu'est l'objet qu'on te retroune:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Object o = ctx.lookup("GestionClient/remote");
    for (Class itf : o.getInterfaces()) {
       System.out.println("interface " + itf);
    }
    et d'ou il vient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("o.classloader" + o.getClass().getClassLoader());
    et si ca correspond a ce que tu attends:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("expected.classloader" + GestionClientRemote.class.getClassLoader());
    Si les 2 valeurs de ClassLoader sont differentes, tu as surement un probleme de packaging (ear ou standalone webapp avec standalone EJB ou interfaces présentes en double qqpart).

    A toi de fouiller

  3. #3
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 72
    Points : 43
    Points
    43
    Par défaut
    j'ai changé l'annotation @Stateful en @Stateless et ça a marché, donc il n'ya pas de problème dans le bean. c'est juste quand je mets l'annotation Stateful que j'obtiens cette erreur

Discussions similaires

  1. Problème d'appel à un Bean dans un JSF
    Par Nandou56 dans le forum JSF
    Réponses: 20
    Dernier message: 12/09/2011, 15h44
  2. Appeler des beans à distance avec EJB3 et JBoss
    Par Bassemca dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 11/12/2009, 13h06
  3. Spring : partage de bean stateful
    Par zomurn dans le forum Spring
    Réponses: 2
    Dernier message: 05/11/2009, 17h52
  4. [EJB3] appel de bean stateful
    Par noutazia20 dans le forum Java EE
    Réponses: 1
    Dernier message: 15/09/2009, 18h46
  5. appel methode bean dans selectOneMenu
    Par psycho_xn dans le forum JSF
    Réponses: 12
    Dernier message: 11/09/2008, 16h49

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