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 :

[EasyBean] catalogue & erreur!


Sujet :

Java EE

  1. #1
    Membre éclairé
    Avatar de clio671
    Profil pro
    Développeur Web
    Inscrit en
    Février 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2007
    Messages : 203
    Par défaut [EasyBean] catalogue & erreur!
    Bonjour tout le monde,

    En ce moment je bosse avec des ejb 3.0 & dans ce cadre j'ai des erreurs.

    J'essaye d'appeler un catalogue via une interface :

    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
    public static void afficheCatalogue() throws NamingException{
    		ICatalogue iCatalogue = (ICatalogue)initial.lookup("EjbCatalogue");
    		
    		//recupération du catalogue
    		List<Article> lArt = iCatalogue.getCatalogue();
    		
    		// lecture du catalogue
    		Iterator iArt = lArt.iterator();
    		
    		System.out.println("id\tdesignation\tprix");
    		
    		while(iArt.hasNext()){
    			System.out.println(((Article)iArt.next()).affiche());
    		}
    	}
    dont l'interface précise est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @Remote
    public interface ICatalogue 
    {
    	public Article addArticle(String libelle, Float prix, int stock);
    	public List<Article> getCatalogue();
    	public Article updateArticle(Article art);
    	public Article getArticle(int id);
    }
    et le corps de cette méthode est :

    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
     
    @Stateless(mappedName="EjbCatalogue")
    @Remote(ICatalogue.class)
    public class CatalogueDAO implements ICatalogue,Serializable
    {
                 ...
     
     
     
    @SuppressWarnings("unchecked")
    	public List<Article> getCatalogue(){
    		Query oQuery = persistenceContext.createQuery("from Article");
    		return oQuery.getResultList();
    	}
    }
    Maintenant je récupère ça comme comme erreurs :

    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
    javax.ejb.EJBException: Error while sending a request
    	at org.ow2.easybeans.proxy.client.ClientRPCInvocationHandler.invoke(ClientRPCInvocationHandler.java:147)
    	at $Proxy1.getCatalogue(Unknown Source)
    	at client.Client.afficheCatalogue(Client.java:235)
    	at client.Client.main(Client.java:75)
    Caused by: java.lang.NullPointerException
    	at java.util.Hashtable.put(Hashtable.java:394)
    	at org.ow2.easybeans.naming.context.ContextImpl.rebind(ContextImpl.java:262)
    	at org.ow2.easybeans.naming.context.ContextImpl.rebind(ContextImpl.java:273)
    	at org.ow2.easybeans.injection.JNDIBinderHelper.bindEnvJndiName(JNDIBinderHelper.java:128)
    	at catalogue.CatalogueDAO.original$EasyBeans$injectedByEasyBeans(CatalogueDAO.java)
    	at org.ow2.easybeans.gen.invocationcontext.catalogue.CatalogueDAO.EasyBeansInvocationContextImploriginal$EasyBeans$injectedByEasyBeansDEPINJECT39797.proceed(Unknown Source)
    	at org.ow2.easybeans.naming.interceptors.TomcatENCInterceptor.intercept(TomcatENCInterceptor.java:174)
    	at org.ow2.easybeans.gen.invocationcontext.catalogue.CatalogueDAO.EasyBeansInvocationContextImploriginal$EasyBeans$injectedByEasyBeansDEPINJECT39797.proceed(Unknown Source)
    	at catalogue.CatalogueDAO.injectedByEasyBeans(CatalogueDAO.java)
    	at org.ow2.easybeans.container.AbsFactory.injectResources(AbsFactory.java:202)
    	at org.ow2.easybeans.container.session.SessionFactory.create(SessionFactory.java:148)
    	at org.ow2.easybeans.container.session.stateless.StatelessSessionFactory.create(StatelessSessionFactory.java:52)
    	at org.ow2.easybeans.pool.JPool.get(JPool.java:275)
    	at org.ow2.easybeans.pool.JPool.get(JPool.java:193)
    	at org.ow2.easybeans.container.session.stateless.StatelessSessionFactory.getBean(StatelessSessionFactory.java:107)
    	at org.ow2.easybeans.container.session.stateless.StatelessSessionFactory.localCall(StatelessSessionFactory.java:128)
    	at org.ow2.easybeans.container.session.SessionFactory.rpcInvoke(SessionFactory.java:181)
    	at org.ow2.easybeans.rpc.rmi.server.RMIServerRPCImpl.getEJBResponse(RMIServerRPCImpl.java:105)
    	at sun.reflect.GeneratedMethodAccessor30.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
    	at org.objectweb.carol.rmi.jrmp.server.JUnicastServerRef.dispatch(JUnicastServerRef.java:143)
    	at sun.rmi.transport.Transport$1.run(Transport.java:159)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
    	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
    	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
    	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
    	at java.lang.Thread.run(Thread.java:619)
    	at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
    	at org.objectweb.carol.rmi.jrmp.server.JRemoteCall.executeCall(JRemoteCall.java:89)
    	at org.objectweb.carol.rmi.jrmp.server.JUnicastRef.performRemoteCall(JUnicastRef.java:194)
    	at org.objectweb.carol.rmi.jrmp.server.JUnicastRef.invoke(JUnicastRef.java:158)
    	at org.ow2.easybeans.rpc.rmi.server.RMIServerRPCImpl_Stub.getEJBResponse(RMIServerRPCImpl_Stub.java:47)
    	at org.ow2.easybeans.rpc.rmi.client.RMIClientRPC.sendEJBRequest(RMIClientRPC.java:102)
    	at org.ow2.easybeans.proxy.client.ClientRPCInvocationHandler.invoke(ClientRPCInvocationHandler.java:144)
    	... 3 more
    la première erreur surlignée est dû à cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public static void afficheCatalogue() throws NamingException{
    		ICatalogue iCatalogue = (ICatalogue)initial.lookup("EjbCatalogue");
    		
    		//recupération du catalogue
    		List<Article> lArt = iCatalogue.getCatalogue();
    la 2eme erreur est dû à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    else if (recup.equals("1")) {
    					afficheCatalogue();
    				}
    				else if (recup.equals("2")) {

    Si quelqu'un avait une idée à me suggérer sur l'origine de cette erreur ça serait cool ...

    merci d'avance
    a+

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Par défaut
    Est ce un appel d'EJB remote
    As tu correctement initialisé ton InitialContext ?

  3. #3
    Membre éclairé
    Avatar de clio671
    Profil pro
    Développeur Web
    Inscrit en
    Février 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2007
    Messages : 203
    Par défaut
    bonsoir,


    Bon en fait j'ai résolu l'erreur, il faut que je mette l'initialisation du contexte juste après le main & ça marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public static void main(String[] args) {
    		
    		
    		try {
    			//initContext(); //initialisation du contexte
    		
    			Hashtable<String, String> env = new Hashtable<String, String>();
    			env.put(Context.INITIAL_CONTEXT_FACTORY, 
    					"org.ow2.easybeans.component.smartclient.spi.SmartContextFactory");
    			
    
    			
    			 InitialContext oContext = new InitialContext(env);
          ...
    et à l'execution j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    2 mai 2008 20:54:14 org.ow2.easybeans.component.smartclient.spi.SmartContextFactory checkInit
    ATTENTION: No PROVIDER_URL setting found, use the default URL 'smart://localhost:2503'.
    2 mai 2008 20:54:16 org.objectweb.carol.util.configuration.ConfigurationRepository init
    INFO: No protocols were defined for property 'carol.protocols', trying with default protocol = 'jrmp'.
    merci

  4. #4
    Membre éclairé
    Avatar de clio671
    Profil pro
    Développeur Web
    Inscrit en
    Février 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2007
    Messages : 203
    Par défaut
    Maintenant autre question voilà :

    A l'exécution de mon client j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    java.lang.NullPointerException
    	at client.Client.initCatalogue(Client.java:539)
    	at client.Client.main(Client.java:93)
    java.lang.NullPointerException
    	at client.Client.afficheCatalogue(Client.java:309)
    	at client.Client.main(Client.java:94)
    exception init Catalogue
    java.lang.NullPointerException
    at client.Client.initCatalogue(Client.java:539)
    cette erreur vient de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public static void initCatalogue(){
    		ICatalogue oRemote;
    		try {
    			oRemote = (ICatalogue)initial.lookup("EjbCatalogue");
    			oRemote.addArticle("x", 3.0f , 15);
    			oRemote.addArticle("y", 200.0f , 17);
    			oRemote.addArticle("z", 300.0f , 19);
    		} catch (Exception e) {
    			e.printStackTrace();
    		System.out.println("exception init Catalogue");
    		}
    	}
    client.Client.main(Client.java:93)
    vient de
    et le code de mon stateless est :

    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
    package catalogue;
    
    import java.util.List;
    
    import javax.ejb.Remote;
    import javax.ejb.Stateless;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
    import javax.persistence.Query;
    
    import article.Article;
    
    
    @Stateless(mappedName="EjbCatalogue")
    @Remote(ICatalogue.class)
    public class CatalogueDAO implements ICatalogue
    {
    	public CatalogueDAO()
    	{
    		
    	}
    	
    	
    	
    	@PersistenceContext
    	private EntityManager persistenceContext;
    
    	public Article addArticle(String libelle, Float prix, int stock) {
    			Article art = new Article(libelle, prix, stock);
    			persistenceContext.persist(art);
    			return art ;
    	}
    	
    	@SuppressWarnings("unchecked")
    	public List<Article> getCatalogue(){
    		Query oQuery = persistenceContext.createQuery("from Article");
    		return oQuery.getResultList();
    	}
    	
    	public Article updateArticle(Article art){
    		persistenceContext.merge(art);
    		return art;
    	}
    	
    	public Article getArticle(int id){
    		Query oQuery = persistenceContext.createQuery("from Article where id=:identifiant");
    		oQuery.setParameter("identifiant", id);
    		return (Article)oQuery.getSingleResult();
    	}
    	
    }
    J'ai d'abord pensé que ca venait du contructeur mais bon si quelqu'un a une idée j'suis preneur !

    merci d'avance
    a+

  5. #5
    Membre chevronné 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
    Par défaut
    Ta 2nd erreur (celle de ton dernier message) est plus simple que celle de ton 1er message.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oRemote = (ICatalogue)initial.lookup("EjbCatalogue");
    Il semblerait tout simplement que initial soit null, ca explqiue le NPE!

    Ton probleme initial est plus sioux.
    Le NPE vient de la:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Caused by: java.lang.NullPointerException
    	at java.util.Hashtable.put(Hashtable.java:394)
    	at org.ow2.easybeans.naming.context.ContextImpl.rebind(ContextImpl.java:262)
    	at org.ow2.easybeans.naming.context.ContextImpl.rebind(ContextImpl.java:273)
    	at org.ow2.easybeans.injection.JNDIBinderHelper.bindEnvJndiName(JNDIBinderHelper.java:128)
    	at catalogue.CatalogueDAO.original$EasyBeans$injectedByEasyBeans(CatalogueDAO.java)
    Visiblement, easybeans veut binder un truc null dans le COntext. Et la je sais pas trop d'ou ca vient. Verifies tes noms JNDI/mappedName voir si tu n'as pas un soucis

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Quel serveur d'application utilises-tu ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre éclairé
    Avatar de clio671
    Profil pro
    Développeur Web
    Inscrit en
    Février 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2007
    Messages : 203
    Par défaut
    Salut,

    J'utilise apache-tomcat 6.0.14 !!
    a+

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Tomcat n'a pas de conteneur EJB, ça ne risque pas de fonctionner...

    Il faudrait utiliser un serveur d'application complet (JBoss.4.2.2 par exemple, il est gratuit)

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Tomcat n'a pas de conteneur EJB, ça ne risque pas de fonctionner...

    Il faudrait utiliser un serveur d'application complet (JBoss.4.2.2 par exemple, il est gratuit)

    A+
    Il utilise Easybeans qui est une implem EJB 3 qui fonctionne sous tomcat

Discussions similaires

  1. Erreur de catalogue de macro
    Par j.klein dans le forum Macro
    Réponses: 2
    Dernier message: 08/09/2014, 13h25
  2. Réponses: 28
    Dernier message: 05/02/2010, 14h38
  3. Erreur de mises à jour appropriées des catalogues du système
    Par Sytchev3 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 11/01/2007, 10h08
  4. [Kylix] Erreur objet
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 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