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 :

Erreur not bound


Sujet :

Java EE

  1. #1
    Membre éclairé

    Inscrit en
    Avril 2005
    Messages
    246
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 246
    Par défaut Erreur not bound
    Bonjour,

    J'ai développé un ejb session de login.
    Je fais donun test avec un client java et lors de ce test:

    Cet etape me renvoie une erreur :

    Object object = initialContext.lookup(EzbayAccessHome.JNDI_NAME);

    Voici l'erreur :

    javax.naming.NameNotFoundException: ejb not bound
    at org.jnp.server.NamingServer.getBinding(NamingServer.java:514)
    at org.jnp.server.NamingServer.getBinding(NamingServer.java:522)
    at org.jnp.server.NamingServer.getObject(NamingServer.java:528)
    at org.jnp.server.NamingServer.lookup(NamingServer.java:252)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
    at sun.rmi.transport.Transport$1.run(Transport.java:153)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
    at java.lang.Thread.run(Thread.java:595)
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
    at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:126)
    at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:610)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:572)
    at javax.naming.InitialContext.lookup(InitialContext.java:351)
    at com.access.client.TestClient.testUserLogin(TestClient.java:55)
    at com.access.client.TestClient.main(TestClient.java:27)
    D'ou cela peut-il venir

    Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Par défaut
    Quelle est la valeur de ta constante EzbayAccessHome.JNDI_NAME ?

    Si EzbayAccessHome.JNDI_NAME est du style "ejb/EzbayAccess" alors essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Object object = initialContext.lookup(new StringBuffer("java:comp/env/").append(EzbayAccessHome.JNDI_NAME).toString());

  3. #3
    Membre éclairé

    Inscrit en
    Avril 2005
    Messages
    246
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 246
    Par défaut
    Merci pour ce conseil EzbayAccessHome.JNDI_NAME est du style "ejb/EzbayAccess",mais j'btiens cet erreur en modifiant ce que tu m'as dit:

    javax.naming.NameNotFoundException: comp not bound
    at org.jnp.server.NamingServer.getBinding(NamingServer.java:514)
    at org.jnp.server.NamingServer.getBinding(NamingServer.java:522)
    at org.jnp.server.NamingServer.getObject(NamingServer.java:528)
    at org.jnp.server.NamingServer.lookup(NamingServer.java:252)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
    at sun.rmi.transport.Transport$1.run(Transport.java:153)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
    at java.lang.Thread.run(Thread.java:595)
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
    at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:126)
    at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:610)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:572)
    at javax.naming.InitialContext.lookup(InitialContext.java:351)
    at com.access.client.TestClient.testUserLogin(TestClient.java:56)
    at com.access.client.TestClient.main(TestClient.java:27)

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Par défaut
    Comment initialises tu l'objet "initialContext" ?

  5. #5
    Membre éclairé

    Inscrit en
    Avril 2005
    Messages
    246
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 246
    Par défaut
    J'ai la fonction init suivante :

    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
    public void init() {
    		Properties properties = new Properties();
    		properties = new Properties();
    		properties.put("java.naming.factory.initial",
    				"org.jnp.interfaces.NamingContextFactory");
    		properties.put("java.naming.factory.url.pkgs",
    				"org.jboss.naming:org.jnp.interfaces");
    		properties.put("java.naming.provider.url", "jnp://127.0.0.1:1099");
    		properties.put("jnp.disableDiscovery", "true");
     
    		try
    		{
    			 initialContext = new InitialContext(properties);
    		} catch (NamingException e)
    		{
    			e.printStackTrace();
    		}
    	}

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Par défaut
    Je ne connais pas JBOSS.

    Par contre, tu peux essayer d'initialiser le context sans les propriétés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    initialContext = new InitialContext();

  7. #7
    Membre éclairé

    Inscrit en
    Avril 2005
    Messages
    246
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 246
    Par défaut
    Merci quand meme

    N'y a t-il personne qui connait jboss?
    Pour info lors du déploiement j'ai :

    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
     
    16:27:37,524 INFO  [EJBDeployer] Deployed: file:/D:/jboss-4.0.3SP1/server/projet/deploy/Ezbay2.jar/
    16:31:08,517 INFO  [EJBDeployer] Undeploying: file:/D:/jboss-4.0.3SP1/server/projet/deploy/Ezbay2.jar/
    16:31:08,517 INFO  [BaseLocalProxyFactory] Unbind EJB LocalHome 'EzbayAccess' from jndi 'local/EzbayAccess@3255301'
    16:31:08,587 INFO  [BaseLocalProxyFactory] Unbind EJB LocalHome 'Article' from jndi 'local/Article@16277459'
    16:31:08,628 INFO  [ProxyFactory] Unbind EJB Home 'EzbayAccess' from jndi 'EzbayAccess'
    16:31:08,628 INFO  [EjbModule] Undeployed EzbayAccess
    16:31:08,638 INFO  [EjbModule] Undeployed Article
    16:31:09,028 INFO  [EjbModule] Deploying Article
    16:31:09,058 INFO  [EjbModule] Deploying EzbayAccess
    16:31:09,319 INFO  [BaseLocalProxyFactory] Bound EJB LocalHome 'Article' to jndi 'local/Article@4794542'
    16:31:09,679 INFO  [BaseLocalProxyFactory] Bound EJB LocalHome 'EzbayAccess' to jndi 'local/EzbayAccess@202526'
    16:31:09,749 INFO  [ProxyFactory] Bound EJB Home 'EzbayAccess' to jndi 'EzbayAccess'
    16:31:09,759 INFO  [EJBDeployer] Deployed: file:/D:/jboss-4.0.3SP1/server/projet/deploy/Ezbay2.jar/
    16:31:24,981 INFO  [EJBDeployer] Undeploying: file:/D:/jboss-4.0.3SP1/server/projet/deploy/Ezbay2.jar/
    16:31:25,021 INFO  [BaseLocalProxyFactory] Unbind EJB LocalHome 'EzbayAccess' from jndi 'local/EzbayAccess@202526'
    16:31:25,051 INFO  [BaseLocalProxyFactory] Unbind EJB LocalHome 'Article' from jndi 'local/Article@4794542'
    16:31:25,091 INFO  [ProxyFactory] Unbind EJB Home 'EzbayAccess' from jndi 'EzbayAccess'
    16:31:25,091 INFO  [EjbModule] Undeployed EzbayAccess
    16:31:25,101 INFO  [EjbModule] Undeployed Article
    16:31:25,322 INFO  [EjbModule] Deploying Article
    16:31:25,342 INFO  [EjbModule] Deploying EzbayAccess
    16:31:25,492 INFO  [BaseLocalProxyFactory] Bound EJB LocalHome 'Article' to jndi 'local/Article@21449759'
    16:31:25,692 INFO  [BaseLocalProxyFactory] Bound EJB LocalHome 'EzbayAccess' to jndi 'local/EzbayAccess@5520452'
    16:31:25,712 INFO  [ProxyFactory] Bound EJB Home 'EzbayAccess' to jndi 'EzbayAccess'
    16:31:25,712 INFO  [EJBDeployer] Deployed: file:/D:/jboss-4.0.3SP1/server/projet/deploy/Ezbay2.jar/

  8. #8
    Membre expérimenté Avatar de xv-mnt
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2005
    Messages : 142
    Par défaut
    Il existe 2 cas pour accéder au contexte JNDI d'un EJB :
    1) Appel remote a partir d'un client simple (appli JAVA toute simple, test unitaire, etc...)
    1.1) tu dois créer un InitialContext avec les parametres de connexion à ton serveur :
    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
     
          Properties properties = new Properties(); 
          properties = new Properties(); 
          properties.put("java.naming.factory.initial", 
                "org.jnp.interfaces.NamingContextFactory"); 
          properties.put("java.naming.factory.url.pkgs", 
                "org.jboss.naming:org.jnp.interfaces"); 
          properties.put("java.naming.provider.url", "jnp://127.0.0.1:1099"); 
          properties.put("jnp.disableDiscovery", "true"); 
     
          try 
          { 
              initialContext = new InitialContext(properties); 
          } catch (NamingException e) 
          { 
             e.printStackTrace(); 
          }
    Le code que tu avais indiqué est correct, pour autant que l'URL de connexion soit juste (en particulier le localhost).

    1.2) Il suffit de faire le lookup avec l'alias JNDI de ton EJB
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    myEjb = initialContext.lookup("ejb/myEJB");
    myEjb.narrow(...);
    Rq : Dans ce cas il est NECESSAIRE de faire un narrow().

    2) Tu appelles l'EJB au sein de ton app server.
    2.1) Dans ce cas, il n'y a aucun parametre à passer dans le constructeur de l'initial context car tu vas interroger le JNDI ENC de ton app server (ENC pour Environment Naming Context). L'intérêt est que l'accès à ce JNDI est bcp plus rapide.
    Cependant, pour préciser que tu interroges le JNDI-ENC, il faut préfixer l'alias de ton EJB par java:comp/env/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
              InitialContext ctx = new InitialContext();
              ctx.lookup("java:comp/env/ejb/myEJB");
    2.2) Ici, pas besoin de faire un narrow ; Un simple cast suffit !!

    3) Enfin, vérifie que ton EJB a bien comme référence ejb/myEJB dans le fichier ejb-jar.xml.
    C'est le tag <ejb-ref> pour les appels remote et <ejb-local-ref> pour les appels locaux.

    En espérant que çà puisse t'aider...

  9. #9
    Membre éprouvé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2005
    Messages : 63
    Par défaut
    Il me semble que caster ou faire un narrow sur une home ne dépend pas de la manière dont tu initialises le context.

    Il faut :
    _ caster si tu appelles la LocalHome d'un EJB
    _ faire un narrow si tu appelles la Remote Home d'un EJB

    Exemple de code avec un contexte initialiser sans propriétés:
    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
     
          if (initialContext != null) {
     
             Object nsObject = initialContext.lookup(new StringBuffer("java:comp/env/").append(ejbRef).toString());
     
             if (log.isDebugEnabled()) {
                log.debug("class=" + nsObject.getClass());
             }
     
             if (nsObject instanceof EJBLocalHome) {
                if (log.isDebugEnabled()) {
                   log.debug("ejbRef " + ejbRef + " is a local ref.");
                }
                return nsObject;
             } else {
                EJBHome ejbHome = (EJBHome) javax.rmi.PortableRemoteObject.narrow((org.omg.CORBA.Object) nsObject, EJBHome.class);
     
                if (log.isDebugEnabled()) {
                   log.debug("ejbRef " + ejbRef + " is a remote ref.");
                }
                return ejbHome;
             }
          } else {
             throw new NamingException("HomeFactory:no InitialContext");
          }
       }

  10. #10
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 5
    Par défaut
    Bonjour,

    En effet, le narrow ne dépend pas de l'environnement paramétré pour JNDI (InitialContext).
    Narrow permet de spécifier le type d'objet à mapper sur l'objet récupérer via le réseau (principalement lorsqu'on le récupère via le protocole IIOP qui ne type pas fortement les objets).

    En ce qui concerne la création d'un context via new InitialContext(), celui-ci sera créé en essayant de lire le fichier jndi.properties qui doit se trouver dans le classpath.
    Dans le cas d'un serveur d'application new InitialContext prend les paramètres d'environnement interne au serveur d'application.

    Pour en revenir à ton erreur.
    Peux tu donner le fichier ejb-jar de déploiement de ton ejb ?
    Essaie de faire lister l'ensemble des objet de l'annuaire JNDI de ton serveur afin de voir où se trouve ton EJB.

    Cordialement,

    Cyril Joui

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/03/2012, 15h41
  2. [EJB3] Erreur "classRemote" not bound
    Par divail dans le forum Java EE
    Réponses: 23
    Dernier message: 27/02/2007, 15h47
  3. Probleme JBoss TransactionManager not bound
    Par jctigre dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 26/07/2006, 15h37
  4. YPBINDPROC_DOMAIN: Domain not bound
    Par roger12 dans le forum Réseau
    Réponses: 2
    Dernier message: 24/10/2005, 13h25
  5. [EJB Stateless] javax.naming.NameNotFoundException: ejb not bound
    Par slymira dans le forum Java EE
    Réponses: 18
    Dernier message: 04/07/2005, 15h30

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