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 :

EJB problème de lookup ? [JNDI]


Sujet :

Java EE

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Par défaut EJB problème de lookup ?
    Bonjour

    J'ai un probleme de Naming que je n'arrive pas à résoudre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    package org.test;
     
    import java.util.List;
     
    public interface HelloWorldService {
     
        public String sayHello(String name);
        public List<Welcome> findWelcomeHistory();
     
    }
    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
    package org.test;
     
    import java.util.List;
     
    import javax.ejb.Local;
    import javax.ejb.Stateless;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
    import javax.persistence.Query;
     
    @Stateless(mappedName="HelloWorldServiceBean")
    @Local(HelloWorldService.class)
    public class HelloWorldServiceBean implements HelloWorldService {
     
        @PersistenceContext
        protected EntityManager manager;
     
        @Override
        public String sayHello(String name) {
            manager.persist(new Welcome(name));
            return "Hello " + name + "!";
        }
     
        @SuppressWarnings("unchecked")
        @Override
        public List<Welcome> findWelcomeHistory() {
            Query query = manager.createQuery("from " + Welcome.class.getName());
            return query.getResultList();
        }
    }
    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
    package org.test;
     
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
     
    public class MainTest {
     
    	/**
             * @param args
             * @throws NamingException 
             */
    	public static void main(String[] args) throws NamingException {
            InitialContext ctx = new InitialContext();
            HelloWorldServiceBean br = (HelloWorldServiceBean) ctx.lookup("HelloWorldServiceBean");
            System.err.println("=================================");
            System.err.println("EJB message is:" + br.sayHello("Test"));
            System.err.println("=================================");
     
    	}
     
    }

    Ce bout de code me parait simple...est pourtant il me retourne une jolie erreur...pourquoi ? :o

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Exception in thread "main" javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
    	at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
    	at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
    	at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
    	at javax.naming.InitialContext.lookup(InitialContext.java:392)
    	at org.test.MainTest.main(MainTest.java:14)
    

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Bonjour,

    Il faut soit que tu configure ton contexte en lui passant des properties qui vont bien, soit ajouter le jar de ton serveur qui contient un fichier namming.properties (Si je me souviens bien) par défaut.

    Pour pouvoir plus t'aider, il faudrait que l'on sache quel serveur tu utilise.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Par défaut
    Je travaille actuellement sous jboss-4.2.3.GA

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut


    http://www.eclipsetotale.com/article...c_Eclipse.html

    A la racine du projet créer un fichier nommé jndi.properties contenant les informations qui permetteront à l'application cliente de se connecter au service de nommage du serveur JBoss :

    java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
    java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
    java.naming.provider.url=localhost:1099
    Et juste avant dans la page, ils montrent les jars nécessaires.

    Edit : bien entendu, le port (ici 1099) est à adapter en fonction de ton installation de JBoss.

  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
    La solution propre et standard est de passer par un conteneur client, qui va executer ta classe avec ton main (en ayant préalablement injecté tout ce dont tu as besoin et préparé le systeme pour que ton new InitialContext() marche bien).

    Il doit bien y avoir un peu de doc la dessus qq part dans JBoss...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Par défaut
    Merci de vos réponses cela fonctionne correctement maintenant ^^'

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

Discussions similaires

  1. [EJB] problème avec 1 EJB.
    Par Marco_L dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 22/05/2007, 11h57
  2. Réponses: 7
    Dernier message: 05/07/2006, 17h14
  3. [MFC][CMap] Problème avec Lookup
    Par MystEre dans le forum MFC
    Réponses: 6
    Dernier message: 27/12/2005, 11h00
  4. [Ant] [Ejb] Probléme de création d'ejb avec Genic
    Par rivierem dans le forum JOnAS
    Réponses: 7
    Dernier message: 25/06/2004, 16h21
  5. [EJB] Problème avec configuration jonas
    Par SteelBox dans le forum JBuilder
    Réponses: 30
    Dernier message: 11/03/2004, 21h30

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