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 :

[Débutant][EJB 3] javax.naming.NameNotFoundException [JNDI]


Sujet :

Java EE

  1. #1
    Membre expérimenté
    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
    Points : 1 745
    Points
    1 745
    Par défaut [Débutant][EJB 3] javax.naming.NameNotFoundException
    Bonjour,

    J'essaye de mettre en oeuvre un EJB 3.0 Session Stateless dans mon application JSF.
    Seulement il semblerai que mon EJB soit introuvable :

    Le code de mon interface Remote
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    package jpm.application.issuetrack;
    import javax.ejb.Remote;
     
    /**
     * This is the business interface for IssueTrackingService enterprise bean.
     */
    @Remote
    public interface IssueTrackingServiceRemote {
     
        public abstract String getMessage();
    }
    Le code du bean :

    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 jpm.application.issuetrack;
     
    import javax.ejb.Stateless;
    import javax.ejb.Remote;
    import javax.ejb.Local;
    /**
     *
     * @author madmath
     */
    @Stateless
    public class IssueTrackingServiceBean implements IssueTrackingServiceRemote, IssueTrackingServiceLocal {
     
        /** Creates a new instance of IssueTrackingServiceBean */
        public IssueTrackingServiceBean() {
        }    
     
        public String getMessage() {
            return "SESSION STATELESS EJB3";
        }
    }
    L'ejb-jar.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?xml version=”1.0” encoding=”UTF-8” ?>
     <ejb-jar 
     xmlns="http://java.sun.com/xml/ns/j2ee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_3_0.xsd"
    version="3.0">
     <enterprise-beans>
     
     </enterprise-beans>
    </ejb-jar>

    Le code qui récupère le service
    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
     
        private final String ISSUE_TRACKING_SERVICE_NAME = IssueTrackingServiceRemote.class.getName();
     
     
        public IssueTrackingServiceRemote getIssueTrackingService() {
     
            try{
                InitialContext context = new InitialContext();
                issueTrackingService = (IssueTrackingServiceRemote) context.lookup( ISSUE_TRACKING_SERVICE_NAME );
     
            }catch( NamingException e ){
                ...
            }
            return issueTrackingService;
        }
    Je n'ai pas d'erreur à la compile ni au déploiement.
    Mais une exception a l'exécution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    12:51:08,470 ERROR [STDERR] javax.naming.NameNotFoundException: jpm.application.issuetrack.IssueTrackingServiceRemote not bound
    Je me suis basé sur des codes données en exemple de "Mastering EJB3"

    Serveur d'appli :
    JBoss 4.0.5 GA installé en mode EJB3

    Version java :
    madmath@pc-madmath:~$ java -version
    java version "1.5.0_11"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_11-b03)
    Java HotSpot(TM) Client VM (build 1.5.0_11-b03, mixed mode, sharing)

    IDE : Netbeans 5.5.1

    Os : ubuntu

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 79
    Points : 89
    Points
    89
    Par défaut
    bonjour,

    et bien a première vu, j'avoue que ton ejb-jar.xml me parrait un peu léger, je ne vois pas la référence de ton EJB, pour moi là tu n'injecte pas ton service pour jboss et donc c'est bien a "l'exécution qui crie"

    7.2.4. References de l'article http://docs.jboss.org/ejb3/app-serve...scriptors.html

    bonne journée

  3. #3
    Membre expérimenté
    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
    Points : 1 745
    Points
    1 745
    Par défaut
    Tous les exemples que j'ai vu mettent un squelette d' ejb-jar.xml vide. Les annotations dans les EJB3 sont sensées remplacer l'ejb-jar.xml

    Par contre :
    En fouillant un peu plus sur la doc que tu m'as donné j'ai trouvé ce tutorial :
    http://docs.jboss.org/ejb3/app-serve...stateless.html

    Qui explique que JBoss utilise des noms JNDI avec des '/'

    By default, JBoss will use ejbName/local and ejbName/remote for the local and remote interfaces, respectively.
    Alors que sur les exemples que j'ai vu (Qui ne doivent pas être spécialement fait pour JBoss) c'est le nom de classe qui est utilisé...

    Donc à voir si ça viens de là.

    EDIT:
    Il semble qu'il faille aussi ajouter un fichier jndi.properties qui contient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    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

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    J'espère que ça aidera quelqu'un

    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
    // Nom JNDI du bean (valable par defaut sous JBoss)
    private final String ISSUE_TRACKING_SERVICE_NAME = IssueTrackingServiceRemote.class.getSimpleName() + "/remote";
     
    public IssueTrackingServiceRemote getIssueTrackingService() {
        try{
            // précision du contexte pour JNDI
            // on peut aussi passer par le fichier jndi.properties
            final Hashtable<String, String> env = new Hashtable<String, String>();
            env.put(Context.INITIAL_CONTEXT_FACTORY,
                    "org.jnp.interfaces.NamingContextFactory");
            env.put(Context.URL_PKG_PREFIXES,
                    "org.jboss.naming:org.jnp.interfaces");
            env.put(Context.PROVIDER_URL, "localhost:1099");
            // récupération du contexte avec la configuration
            final Context context = new InitialContext(env);
            // récupération du bean grâce à JNDI
            issueTrackingService = (IssueTrackingServiceRemote) context.lookup( ISSUE_TRACKING_SERVICE_NAME );
        }catch( NamingException e ){
            ...
        }
        return issueTrackingService;
    }
    En outre, il ne faut pas renseigner le fichier ejb-jar.xml pour les EJBs 3.0, et il faut même le retirer s'il est complètement vide, sinon les EJBs ne se déploieront pas.

  5. #5
    Membre actif Avatar de kore62
    Profil pro
    Inscrit en
    Août 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 222
    Points : 205
    Points
    205
    Par défaut
    Je confirme j'avais ce probleme de deploiement..
    L'habitude est l'illusion d'un acquis imaginaire...

    Mes Compos Ziks Electros:http://fishbone2k.free.fr/technorulez/news.php?id=89

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/07/2011, 19h26
  2. Problème de débutant (javax.naming.NameNotFoundException)
    Par Krauq dans le forum Wildfly/JBoss
    Réponses: 0
    Dernier message: 05/06/2010, 20h47
  3. Réponses: 2
    Dernier message: 09/01/2010, 00h09
  4. [EJB Stateless] javax.naming.NameNotFoundException: ejb not bound
    Par slymira dans le forum Java EE
    Réponses: 18
    Dernier message: 04/07/2005, 15h30
  5. [EJB] [JBOSS][javax.naming.NameNotFoundException]
    Par hamed dans le forum Java EE
    Réponses: 5
    Dernier message: 18/12/2003, 18h00

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