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 :

Test d'une class @Stateless avec façade


Sujet :

Java EE

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 11
    Par défaut Test d'une class @Stateless avec façade
    Bonjour,
    voila je cherche à tester une class @Stateless.

    voici ma class de Test.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    import com.jmd.test.domaine.ejb.PersonneFacade;
    import com.jmd.test.domaine.entity.Personne;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Iterator;
    import java.util.List;
    import javax.ejb.EJB;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    @WebServlet(name = "Test")
    public class Test extends HttpServlet{
     
        @EJB
        PersonneFacade pF;
     
        @Override
        public void service( HttpServletRequest request, HttpServletResponse response )
            throws ServletException, IOException {
     
            Personne p = new Personne();
            p.setNom("Nom");
            p.setPrenom("Prenom");
            this.pF.create(p);
     
            PrintWriter out = response.getWriter();
     
            out.println( "<html><body>" );
            out.println( "<h1>Hello depuis une servlet</h1>" );
            List<Personne> pList = this.pF.findAll();
            Iterator<Personne> i = pList.iterator();
            while(i.hasNext()){
                out.println(i.next()+"<br>");
            }
            out.println( "</body></html>" );
     
     
        }
    }
    ma PersonneFacade.class

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    import com.jmd.test.domaine.entity.Personne;
    import java.util.List;
    import javax.ejb.Stateless;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
     
    @Stateless
    public class PersonneFacade implements PersonneFacadeLocal, PersonneFacadeRemote {
        @PersistenceContext
        private EntityManager em;
     
        @Override
        public void create(Personne personne) {
            em.persist(personne);
        }
     
        @Override
        public void edit(Personne personne) {
            em.merge(personne);
        }
     
        @Override
        public void remove(Personne personne) {
            em.remove(em.merge(personne));
        }
     
        @Override
        public Personne find(Object id) {
            return em.find(com.jmd.test.domaine.entity.Personne.class, id);
        }
     
        @Override
        public List<Personne> findAll() {
            return em.createQuery("select object(o) from Personne as o").getResultList();
        }
    }
    et voici les erreur obtenu quand j'essaye d'aller sur ma page de test:
    http://localhost:8080/JavaEE-war/Test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    HTTP Status 500 -
    
    type Exception report
    
    message
    
    descriptionThe server encountered an internal error () that prevented it from fulfilling this request.
    
    exception
    
    javax.servlet.ServletException: PWC1392: Error instantiating servlet class test.Test
    
    root cause
    
    com.sun.enterprise.container.common.spi.util.InjectionException: Erreur lors de la création de l'objet géré pour la classe : class test.Test
    
    root cause
    
    com.sun.enterprise.container.common.spi.util.InjectionException: Exception lors de la tentative d'injection de l'élément Remote ejb-ref name=test.Test/pF,Remote 3.x interface =com.jmd.test.domaine.ejb.PersonneFacade,ejb-link=null,lookup=,mappedName=,jndi-name=com.jmd.test.domaine.ejb.PersonneFacade,refType=Session dans class test.Test : Lookup failed for 'java:comp/env/test.Test/pF' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming}
    
    root cause
    
    javax.naming.NamingException: Lookup failed for 'java:comp/env/test.Test/pF' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=test.Test/pF,Remote 3.x interface =com.jmd.test.domaine.ejb.PersonneFacade,ejb-link=null,lookup=,mappedName=,jndi-name=com.jmd.test.domaine.ejb.PersonneFacade,refType=Session' .  Actual (possibly internal) Remote JNDI name used for lookup is 'com.jmd.test.domaine.ejb.PersonneFacade#com.jmd.test.domaine.ejb.PersonneFacade' [Root exception is javax.naming.NamingException: Lookup failed for 'com.jmd.test.domaine.ejb.PersonneFacade#com.jmd.test.domaine.ejb.PersonneFacade' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: com.jmd.test.domaine.ejb.PersonneFacade#com.jmd.test.domaine.ejb.PersonneFacade not found]]]
    
    root cause
    
    javax.naming.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=test.Test/pF,Remote 3.x interface =com.jmd.test.domaine.ejb.PersonneFacade,ejb-link=null,lookup=,mappedName=,jndi-name=com.jmd.test.domaine.ejb.PersonneFacade,refType=Session' .  Actual (possibly internal) Remote JNDI name used for lookup is 'com.jmd.test.domaine.ejb.PersonneFacade#com.jmd.test.domaine.ejb.PersonneFacade' [Root exception is javax.naming.NamingException: Lookup failed for 'com.jmd.test.domaine.ejb.PersonneFacade#com.jmd.test.domaine.ejb.PersonneFacade' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: com.jmd.test.domaine.ejb.PersonneFacade#com.jmd.test.domaine.ejb.PersonneFacade not found]]
    
    root cause
    
    javax.naming.NamingException: Lookup failed for 'com.jmd.test.domaine.ejb.PersonneFacade#com.jmd.test.domaine.ejb.PersonneFacade' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: com.jmd.test.domaine.ejb.PersonneFacade#com.jmd.test.domaine.ejb.PersonneFacade not found]
    
    root cause
    
    javax.naming.NameNotFoundException: com.jmd.test.domaine.ejb.PersonneFacade#com.jmd.test.domaine.ejb.PersonneFacade not found
    
    note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 3.1.2 logs.
    GlassFish Server Open Source Edition 3.1.2
    Je n'ai pas tout mis pour évité de polluer.
    J'ai fais le projet avec NetBeans
    il est divisé en 3 le ejb, le war et l'application
    j'ai essayé de tout recompiler construire et déployer sur l'application
    le serveur me sort environ les même lot mais en plus long.

    Je sais que le problème se situe dans ma class test.

    Merci de votre aide et de m'avoir lu.

  2. #2
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    Salut, tu peux montrer ton interface "PersonneFacadeLocal" ?

    essaye en fait de mettre ça dans ta Servlet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    @EJB
    PersonneFacadeLocal personneFacade;

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 11
    Par défaut
    Sa marche merci beaucoup
    et pour pas avec PersonneFacadeRemote?
    C'est quoi la difference?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    import java.util.List;
    import javax.ejb.Local;
     
    @Local
    public interface PersonneFacadeLocal {
        void create(Personne personne);
     
        void edit(Personne personne);
     
        void remove(Personne personne);
     
        Personne find(Object id);
     
        List<Personne> findAll();
    }

  4. #4
    Membre Expert
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Par défaut
    L'interface Local, comme son nom l'indique c'est au sein du même EAR (par exemple le WAR appelant l'EJB JAR, ou encore un autre EJB-JAR appelant cet EJB-JAR)

    L'interface Remote, c'est pour de l'appel distant, avec sérialisation, sur le protocole RMI-IIOP, donc entre 2 JVM (un client lourd en swing par exemple, et ton EJB-JAR).

    En théorie tu es donc capable de dissocier ce que tu offres comme service de manière local ou distante.

    N'oublie pas de cliquer sur "résolu"

Discussions similaires

  1. Réponses: 9
    Dernier message: 13/03/2015, 18h19
  2. [ClassLoader] Chargement dynamique d'une classe -> problème avec packages !
    Par ymerej dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 31/05/2006, 21h37
  3. Réponses: 4
    Dernier message: 10/04/2006, 16h12
  4. Appeler une classe CSS avec Javascript
    Par p0Kep0K dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 13/02/2006, 14h50
  5. Réponses: 2
    Dernier message: 06/12/2005, 09h41

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