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 :

Problème appel de methode entre projet Web et projet EJB [EJB3]


Sujet :

Java EE

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Par défaut Problème appel de methode entre projet Web et projet EJB
    Bonjour,

    J'ai un soucis de communication entre mon Projet Web(JSF) et mon Projet EJB. Lors de l'appel , coté web, d'une méthode coté EJB, l'objet passé en paramètre est apparemment "null".

    Du côté EJB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    package com.ejb.IEJBSession;
     
    import java.util.List;
    import javax.ejb.Local;
    import javax.ejb.Remote;
    import com.ejb.entities.Wine;
     
    @Local
    public interface IWineSession {
    	public void add(Wine wine);
    	public void delete(Wine wine);
    	public List<Wine> showListOfWines();
    }
    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
    package com.ejb.EJBSession;
     
    import java.util.List;
    import javax.ejb.Stateless;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
    import javax.persistence.Query;
    import com.ejb.IEJBSession.IWineSession;
    import com.ejb.entities.Wine;
     
     
    @Stateless
     
    public class WineSession implements IWineSession {
    	@PersistenceContext(unitName="WineCaveEJB")
     
    	private EntityManager em;
     
    	public void add(Wine wine) {
    		// TODO Auto-generated method stub
    			em.persist(wine);		
    	}
     
    	public void delete(Wine wine){
    		wine = em.merge(wine);
    		em.remove(wine);
    	}
     
     
    	public List<Wine> showListOfWines() {
    		// TODO Auto-generated method stub
    		Query query = em.createNamedQuery("wineList");
    		List<Wine> wineList = query.getResultList();
     
     
    		return wineList;
    	}
     
    }
    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
    package com.ejb.entities;
     
    import java.io.Serializable;
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.NamedQueries;
    import javax.persistence.NamedQuery;
     
    @Entity
    @NamedQueries({
    	@NamedQuery(name ="wineList", query = "SELECT w from Wine w")
    				})
     
    	public class Wine implements Serializable{
     
    		private static final long serialVersionUID = -4335426208843293310L;
     
     
    			@Id
    			private Integer id;
     
    			private String name;
     
    			public Wine(){};
    			public Wine(Integer id, String name){
    				this.id=id;
    				this.name=name;
    			}
     
    			public Integer getId() {
    				return id;
    			}
    			public void setId(Integer id) {
    				this.id = id;
    			}
    			public String getName() {
    				return name;
    			}
    			public void setName(String name) {
    				this.name = name;
    			}
    }
    Coté client j'ai mon managed bean que je souhaite tester :
    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
    package com.bean;
     
    import javax.ejb.EJB;
     
    import com.ejb.EJBSession.WineSession;
    import com.ejb.IEJBSession.IWineSession;
    import com.ejb.entities.Wine;
     
    public class WineBean {
     
    	@EJB
    	private IWineSession wineSession;
     
    	Wine currentWine;
     
    	public WineBean(){setCurrentWine(new Wine());}
     
    	public String addWine(){
    		Wine wine = new Wine(1,"Bordeaux");
    		wineSession.add(wine);
    		System.out.println("Vin ajouté");
    		return "addedWine";
    	}
     
    	public Wine getCurrentWine(){
    		return currentWine;
    	}
     
    	public void setCurrentWine(Wine wine){
    		this.currentWine=wine;
    	}
    }
    Quand j'exécute le projet, j'ai une erreur quand il appelle la methode wineSession.addWine(wine)

    Voici l'erreur :
    java.lang.NullPointerException
    at com.bean.WineBean.addWine(WineBean.java:40)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.el.parser.AstValue.invoke(AstValue.java:170)
    at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
    at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
    at javax.faces.component.UICommand.broadcast(UICommand.java:387)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:475)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:756)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
    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:235)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Unknown Source)
    Apparemment l'objet Wine ne passe pas d'un projet à l'autre.

    Merci d'avance pour votre aide.

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Par défaut
    J'ai résolu le problème en remplaçant @EJB par @EJB(mappedName="WineSession/local")

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

Discussions similaires

  1. Gestion de projet web + multi-projets + multi-interlocuteurs
    Par nikolas92400 dans le forum Gestion de projet
    Réponses: 0
    Dernier message: 22/03/2012, 17h45
  2. Projet web dynamique # projet Tomcat
    Par menyarito dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 19/11/2010, 16h44
  3. Réponses: 23
    Dernier message: 02/07/2010, 11h02
  4. [C#] problème de type donnée entre Service Web
    Par Cédric B. dans le forum Services Web
    Réponses: 1
    Dernier message: 01/11/2007, 01h19
  5. tranformer projet java en projet web
    Par vain_mich dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 23/07/2007, 11h10

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