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

  1. #1
    Membre habitué

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

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Points : 167
    Points
    167
    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 habitué

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

    Informations forums :
    Inscription : Juillet 2004
    Messages : 639
    Points : 167
    Points
    167
    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