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 :

[Débutant] Problème d'ajout EJB3


Sujet :

Java EE

  1. #1
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 60
    Points : 40
    Points
    40
    Par défaut [Débutant] Problème d'ajout EJB3
    Salut
    voila j'ai un problème d’ajout est je ne sais pas vraiment d'ou vient l'erreur
    j'ai crée une Entity Bean Personne
    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
    43
    44
    45
    46
    47
    48
    49
    @Entity
    public class Personne implements Serializable {
        private static final long serialVersionUID = 1L;
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private int id;
        private String nomComplet;
        public int getId() {
            return id;
        }
     
        public void setId(int id) {
            this.id = id;
        }
     
        public String getNomComplet() {
            return nomComplet;
        }
     
        public void setNomComplet(String nomComplet) {
            this.nomComplet = nomComplet;
        }
     
        @Override
        public int hashCode() {
            int hash = 0;
            hash += (int) id;
            return hash;
        }
     
        @Override
        public boolean equals(Object object) {
            // TODO: Warning - this method won't work in the case the id fields are not set
            if (!(object instanceof Personne)) {
                return false;
            }
            Personne other = (Personne) object;
            if (this.id != other.id) {
                return false;
            }
            return true;
        }
     
        @Override
        public String toString() {
            return "entites.Personne[id=" + id + "]";
        }
     
    }
    puis j'ai crée un Manger bean pour avec une fonction d'ajout
    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
    @ManagedBean
    @RequestScoped
    public class indexBean {
     
     
       @PersistenceContext(unitName="TestSimplePU")
       EntityManager em;
        private String message="En attente";
     
        public indexBean() {
        }
     
        public String getMessage() {
            return message;
        }
     
        public void setMessage(String message) {
            this.message = message;
        }
     
        public void ajouter(){
            try {
     
            Personne personne= new Personne();
            personne.setNomComplet("Super Man");
                em.persist(personne);
                message="Ajout bin fait ";
            } catch (Exception e) {
                message = "Erreur "+e;
            }
        }
    }
    mais rien ne marche j'ai ce message d'erreur javax.persistence.TransactionRequiredException

    merci d’avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Points : 495
    Points
    495
    Par défaut
    Citation Envoyé par ghost10 Voir le message
    j'ai ce message d'erreur javax.persistence.TransactionRequiredException
    L'exception veut tout simplement dire que EntityManager a besoin d'une transaction pour réaliser l'opération em.persist().

    Les JSF ManagedBeans ne sont pas des composants transactionnels par défaut, tu peux donc juste transformer ton bean en EJB (en ajoutant juste une annotation!) pour que les transactions soient gérées automatiquement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @ManagedBean
    @RequestScoped
    @Stateless
    public class IndexBean {
    ...
    }
    Là je suppose que tu es dans un environnement Java EE 6, où tu peux déployer un EJB 3.1 dans ton .war

    Une autre solution serait de créer un ejb séparé qui gérerait l'accès aux données, et ensuite le managed bean injecterait l'ejb:

    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
     
    @Stateless
    public MonEJB implements Service {
       @PersistenceContext(unitName="TestSimplePU")
       EntityManager em;
     
       public void ajouter(Personne p){
           em.persist(personne);
       }
     
    }
     
     
    @ManagedBean
    @RequestScoped
    public class IndexBean {
        @EJB Service service;
     
        ...
     
        public void ajouter(){
            Personne personne= new Personne();
            personne.setNomComplet("Super Man");
     
            service.ajouter(personne);
         ...
        }
    }
    Sinon, il y a des projets comme Seam Persistence, qui est une extension CDI (JSR-299) et te permet de rendre transactionnel n'importe quel composant CDI, par exemple dans un environnement manquant de support des EJBs. Mais je pense que dans ton cas, la solution proposée plus haut devrait suffire.

    Bon courge.
    SCJP 5 / SCBCD 1.3 Certified

  3. #3
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 60
    Points : 40
    Points
    40
    Par défaut
    manblaizoun merci
    j'ai une autre question
    voila j'ai essayé d'utiliser une interface local
    donc
    une interface
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    @Local
    public interface PersonneSessionBeanLocalLocal {
     
       public  void ajouterPersonne(Personne p);
     
    }
    }
    puis un bean qui implémente cette dernière

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @Stateless
    public class PersonneSessionBeanLocal implements PersonneSessionBeanLocalLocal {
     
        @PersistenceContext(unitName="TestPersonnePU")
        EntityManager em;
     
        @Override
        public void ajouterPersonne(Personne p) {
     
            em.persist(p);
     
        }
    en fin un manger bean

    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
     
    @ManagedBean(name="Prs")
    @RequestScoped
    public class indexManagerBean {
     
       // @EJB
        private PersonneSessionBean psb;
     
     
        @EJB
        private PersonneSessionBeanLocal psbl;
                       ....
        public void ajouter2(){
     
            try {
     
            Personne p= new Personne();
            p.setNomComplet(this.nomComplte);
     
               psbl.ajouterPersonne(p);
     
            message="Personne bien ajouter ";
            } catch (Exception e) {
     
                message=e.toString();
            }
     
                   ....
        }
    à la fin j'ai ce message d'erreur Erreur lors de linjection de ressources dans le bean géré Prs vous savez pas d'où viens le problème s'il vous plait ??
    merci d'avance

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Points : 495
    Points
    495
    Par défaut
    Tu pourrais être un peu plus précis? injection de quelle ressource? pourrais-tu poster la trace de l'erreur que tu reçois?

    Je pense que ton code est correct, mais bon, creuse un peu et poste l'erreur exacte.
    SCJP 5 / SCBCD 1.3 Certified

  5. #5
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 60
    Points : 40
    Points
    40
    Par défaut
    je voulu pas posté le message d'erreur car je me suis dit que ca peut venir de mon code .
    le voila un peu long

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    com.sun.faces.mgbean.ManagedBeanCreationException: Erreur lors de linjection de ressources dans le bean géré Prs
    	at com.sun.faces.mgbean.BeanBuilder.injectResources(BeanBuilder.java:211)
    	at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:103)
    	at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:405)
    	at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:267)
    	at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:86)
    	at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:175)
    	at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
    	at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:99)
    	at com.sun.el.parser.AstValue.getValue(AstValue.java:158)
    	at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:219)
    	at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:102)
    	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:190)
    	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:178)
    	at javax.faces.component.UIOutput.getValue(UIOutput.java:168)
    	at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:205)
    	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:338)
    	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:164)
    	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:878)
    	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1620)
    	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
    	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:848)
    	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1613)
    	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
    	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
    	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:380)
    	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:126)
    	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:127)
    	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:313)
    	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
    	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
    	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
    	at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
    	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
    	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
    	at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
    	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
    	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
    	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
    	at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
    	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
    	at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
    	at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
    	at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
    	at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
    	at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
    	at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
    	at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
    	at java.lang.Thread.run(Thread.java:636)
    Caused by: com.sun.faces.spi.InjectionProviderException: com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting to inject Remote ejb-ref name=Controller.indexManagerBean/psbl,Remote 3.x interface =SessionBeans.PersonneSessionBeanLocal,ejb-link=null,lookup=null,mappedName=,jndi-name=SessionBeans.PersonneSessionBeanLocal,refType=Session into class Controller.indexManagerBean
    	at org.glassfish.faces.integration.GlassFishInjectionProvider.inject(GlassFishInjectionProvider.java:98)
    	at com.sun.faces.mgbean.BeanBuilder.injectResources(BeanBuilder.java:205)
    	... 53 more
    Caused by: com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting to inject Remote ejb-ref name=Controller.indexManagerBean/psbl,Remote 3.x interface =SessionBeans.PersonneSessionBeanLocal,ejb-link=null,lookup=null,mappedName=,jndi-name=SessionBeans.PersonneSessionBeanLocal,refType=Session into class Controller.indexManagerBean
    	at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:614)
    	at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:384)
    	at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:168)
    	at org.glassfish.faces.integration.GlassFishInjectionProvider.inject(GlassFishInjectionProvider.java:94)
    	... 54 more
    Caused by: javax.naming.NamingException: Lookup failed for 'java:comp/env/Controller.indexManagerBean/psbl' in SerialContext  [Root exception is javax.naming.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=Controller.indexManagerBean/psbl,Remote 3.x interface =SessionBeans.PersonneSessionBeanLocal,ejb-link=null,lookup=null,mappedName=,jndi-name=SessionBeans.PersonneSessionBeanLocal,refType=Session' .  Actual (possibly internal) Remote JNDI name used for lookup is 'SessionBeans.PersonneSessionBeanLocal#SessionBeans.PersonneSessionBeanLocal' [Root exception is javax.naming.NamingException: Lookup failed for 'SessionBeans.PersonneSessionBeanLocal#SessionBeans.PersonneSessionBeanLocal' in SerialContext  [Root exception is javax.naming.NameNotFoundException: SessionBeans.PersonneSessionBeanLocal#SessionBeans.PersonneSessionBeanLocal not found]]]
    	at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:442)
    	at javax.naming.InitialContext.lookup(InitialContext.java:409)
    	at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:513)
    	... 57 more
    Caused by: javax.naming.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=Controller.indexManagerBean/psbl,Remote 3.x interface =SessionBeans.PersonneSessionBeanLocal,ejb-link=null,lookup=null,mappedName=,jndi-name=SessionBeans.PersonneSessionBeanLocal,refType=Session' .  Actual (possibly internal) Remote JNDI name used for lookup is 'SessionBeans.PersonneSessionBeanLocal#SessionBeans.PersonneSessionBeanLocal' [Root exception is javax.naming.NamingException: Lookup failed for 'SessionBeans.PersonneSessionBeanLocal#SessionBeans.PersonneSessionBeanLocal' in SerialContext  [Root exception is javax.naming.NameNotFoundException: SessionBeans.PersonneSessionBeanLocal#SessionBeans.PersonneSessionBeanLocal not found]]
    	at com.sun.ejb.EjbNamingReferenceManagerImpl.resolveEjbReference(EjbNamingReferenceManagerImpl.java:174)
    	at com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl$EjbReferenceProxy.create(ComponentEnvManagerImpl.java:1040)
    	at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:688)
    	at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:657)
    	at com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:148)
    	at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:428)
    	... 59 more
    Caused by: javax.naming.NamingException: Lookup failed for 'SessionBeans.PersonneSessionBeanLocal#SessionBeans.PersonneSessionBeanLocal' in SerialContext  [Root exception is javax.naming.NameNotFoundException: SessionBeans.PersonneSessionBeanLocal#SessionBeans.PersonneSessionBeanLocal not found]
    	at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:442)
    	at javax.naming.InitialContext.lookup(InitialContext.java:409)
    	at com.sun.ejb.EjbNamingReferenceManagerImpl.resolveEjbReference(EjbNamingReferenceManagerImpl.java:169)
    	... 64 more
    Caused by: javax.naming.NameNotFoundException: SessionBeans.PersonneSessionBeanLocal#SessionBeans.PersonneSessionBeanLocal not found
    	at com.sun.enterprise.naming.impl.TransientContext.doLookup(TransientContext.java:197)
    	at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:168)
    	at com.sun.enterprise.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:58)
    	at com.sun.enterprise.naming.impl.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:101)
    	at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:430)
    	... 66 more

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Points : 495
    Points
    495
    Par défaut
    OK, je vois.
    Apparemment on ne peut toujours pas injecter directement un @EJB dans un @javax.faces.bean.ManagedBean, je pensais que c'était le cas désormais puisque ça l'est pour une servlet.
    Je n'avais jamais testé.

    Le mieux c'est donc d'annoter le managed bean @Stateless pour le transformer en EJB et ainsi diminuer le nombre de couches, comme je l'avais indiqué plus haut.

    Et s'il faut malgré tout séparer la couche JSF avec la couche service ejb, la solution la plus naturelle est de profiter dès maintenant de l'excellent CDI (jsr299) qui est déjà présent, puisque tu déploies sur GlassFish v3 qui implémente entièrement JavaEE6.
    C'est ce que j'utilise par défaut pour mes développements JSF2.0 dans JavaEE 6, en zappant le model de composant proposé JSF. C'est sûrement pour ça que je n'ai jamais rencontré ce problème d'injection que tu décris.
    CDI te permet d'injecter un EJB dans un simple POJO et vice-versa.

    Remplace donc tes annotations JSF par des annotations CDI sur ton managed bean et le tour est joué:

    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
     
    import javax.inject.Named;
    import javax.enterprise.context.RequestScoped;
     
    @Named("Prs")
    @RequestScoped
    public class indexManagerBean {
     
       @EJB
       private PersonneSessionBeanLocal psbl;
     
       ...
     
       // reste du code pareil
     
    }
    Il te suffit ensuite d'ajouter un fichier vide /WEB-INF/beans.xml pour que cdi soit activé, et c'est tout.

    Sinon, si tu veux quand même continuer avec les annotations JSF (@javax.faces.bean.ManagedBean et @javax.faces.bean.RequestScoped), une solution serait de faire un lookup JNDI:
    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
     
    @ManagedBean(name="Prs")
    @RequestScoped
    @EJB(name="ejb/mybean", beanInterface = PersonneSessionBeanLocal.class)
    public class indexManagerBean {
     
         ...
     
        public void ajouter() {
           Context ctx = new InitialContext();
           PersonneSessionBeanLocal psbl = (PersonneSessionBeanLocal)ctx.lookup("java:comp/env/ejb/mybean");
     
           ...
     
           pbls.ajouter(personne);
        }
     
    }
    Voilà, je crois que entre les deux solutions y a pas vraiment photo, CDI est un must. D'ailleurs, il y a plusieurs discussions où il est dit que JSF n'avait peut-être pas besoin de définir un autre modèle de composant, à partir du moment où CDI (jsr299) est ce qui se fait de mieux en ce moment et qu'il est très bien intégré à JSF.
    http://weblogs.java.net/blog/cayhors...n-dead-arrival

    En plus tu as le context @ConversationScoped dans CDI qui résout pas mal de problèmes. Il faut donc s'y mettre déjà

    Bon courage.
    SCJP 5 / SCBCD 1.3 Certified

  7. #7
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 60
    Points : 40
    Points
    40
    Par défaut
    manblaizo merci infiniment maintenant tous mes problèmes sont résolu

    merci encore

  8. #8
    Membre du Club
    Inscrit en
    Novembre 2008
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 98
    Points : 55
    Points
    55
    Par défaut
    Salut en lisant le poste j'ai remarqué une chose et a mon avis c'est de la d'où viens l'erreur de ghost10

    tu fait (dans le poste #3) l'injection de PersonneSessionBean et non PersonneSessionBeanLocalLocal c'est ton erreur

    donc soit tu ajoute @LocalBean à PersonneSessionBean pour dire que ce SessionBean(Stateless) n'aura pas de vu soi tu fais l'injection d'une des interfaces remote ou local ici PersonneSessionBeanLocalLocal apres ta rien à changer pour ton Jsf Manger
    après je ne sais pas pourquoi en JEE y a toujours mille solutions c'est un peu dérangeant non

  9. #9
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 60
    Points : 40
    Points
    40
    Par défaut
    merci kohan95 ça marche bien merci encore

  10. #10
    Futur Membre du Club
    Profil pro
    java/j2ee
    Inscrit en
    Juillet 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : java/j2ee

    Informations forums :
    Inscription : Juillet 2011
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Probleme d'injection ejb dans jsf2
    Bonjour je suis entrin de faire une application en java ee6 et je suis vraiment bloqué ,j'ai bésoin une aide svp
    j'ai creé une classe ejb et je veux injecter le ejb dans jsf 2 avec @ ejb j'ai une erreur (Erreur lors de linjection de ressources dans le bean géré uniteJsf)

    @Stateless
    public class UniteBilletEJB implements UniteBilletEJBRemote {
    @PersistenceContext(unitName="ceDatabase")
    private EntityManager em;

    @Override
    public List<UniteBillet>searche(String nomUnite){
    Query query= em.createNamedQuery(UniteBillet.Find_Allunitebillet);
    List result=query.getResultList();
    return result;

    }
    /*
    * fonction permettant de persister dans la base de données
    */

    @Override
    public boolean creeUnite(final String nomUnite,final Integer nbUnite,final Integer lotUnite,final double prixUnite,final Date moisUnite,final Date dateRentre,final Date dateExperation){
    UniteBillet unite=new UniteBillet();
    unite.setNomUnite(nomUnite);
    unite.setNbUnite(nbUnite);
    unite.setLotUnite(lotUnite);
    unite.setPrixUnite(prixUnite);
    unite.setMoisUnite(moisUnite);
    unite.setDateRentre(dateRentre);
    unite.setDateExperation(dateExperation);
    em.persist(unite);
    return true;
    }
    /**
    * fonction permettant de modifier dans la base de donner
    * @param unite
    * @return
    */

    @Override
    public boolean modifierUnite(UniteBillet unite){

    em.merge(unite);
    return true;
    }

    @Override
    public boolean supprimeUnite(UniteBillet unite){

    em.remove(em.merge(unite));
    return true;
    }


    }
    et la classe jsf
    @ManagedBean
    @RequestScoped
    @TransactionManagement(TransactionManagementType.BEAN)
    public class UniteJsf {


    @EJB
    private static UniteBilletEJB uniteEjb;
    /** Creates a new instance of UniteJsf */
    private UniteBillet unite;


    public List<UniteBillet> searcheUniteJSF(String nomUnite){
    List result=uniteEjb.searche(nomUnite);
    return result;
    }

    public boolean creeUniteJSF(final String nomUnite,final Integer nbUnite,final Integer lotUnite,final double prixUnite,final Date moisUnite,final Date dateRentre,final Date dateExperation){
    uniteEjb.creeUnite(nomUnite, nbUnite, lotUnite, prixUnite, moisUnite, dateRentre, dateExperation);
    return true;
    }
    public boolean supprimeUniteJSF(UniteBillet unite){
    uniteEjb.supprimeunite(unite);

    return true;
    }

    public boolean modifieUniteJSF(UniteBillet unite){
    uniteEjb.supprimeunite(unite);
    return true;
    }

    public UniteBillet getUnite() {
    return unite;
    }

    public void setUnite(UniteBillet unite) {
    this.unite = unite;
    }

    }

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

Discussions similaires

  1. [Débutant] Problème d’héritage avec EJB3
    Par ghost10 dans le forum Persistance des données
    Réponses: 4
    Dernier message: 28/10/2010, 01h25
  2. [JSF + EJB3] débutant, problème à la création
    Par MaxLaMenaX dans le forum JSF
    Réponses: 2
    Dernier message: 18/06/2009, 14h13
  3. [débutant] Problème de déploiement d'EJB3 sous NetBeans
    Par Olivier BEZES dans le forum Glassfish et Payara
    Réponses: 3
    Dernier message: 04/02/2008, 14h02
  4. [débutant] Problèmes avec CRegKey
    Par Pedro dans le forum MFC
    Réponses: 4
    Dernier message: 10/11/2003, 15h28
  5. Réponses: 11
    Dernier message: 02/09/2003, 14h20

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