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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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

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