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 :

Lookup JNDI d'EJB et Maven


Sujet :

Java EE

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Par défaut Lookup JNDI d'EJB et Maven
    bonjour,

    retrouver un EJB sur le serveur application se fait via un lookup JNDI. Et pour cela on doit préciser le nom de l'application, et je déploie mon EAR via maven sous JBOss 5.1.0.
    Logiquement la console JMX me montre mes objets déployés dont l'entrée est le nom de l'EAR (par exemple test-1.0.0-SNAPSHOT)

    le lookup devient alors : lookup ("test-1.0.0-SNAPSHOT/Imonobjet/remote") et ca fonctionne tres bien.

    Seulement ce système crée une dépendance inverse entre le code et la chaine de fabrication du livrable. en effet dès que je vais monter en version de mon appli je vais devoir modifier la chaine de lookup... pas terrible

    Plusieurs solutions :
    - faire un lookup de niveau classe : lookup(java:global/classes/Imonobjet"). C'est mieux mais que ce passe-t-il si un autre EAR déploie un objet de même nom?
    - récupérer le nom de l'EAR créé par Maven dans le code mais comment ?
    - avoir un fichier ressource dans lequel on met la version de l'EAR (mais bon je passe aussi par le plugin release et je suis pas certain qu'il le traite)

    bref des idées ?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Par défaut
    je me réponds : en EJB 3.0 la façon de retrouver un objet est propre à chaque fournisseur.
    JBoss par exemple à ses propres annotations pour modifier le chemin JNDI.

    Seule solution : passer aux EJB 3.1

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Par défaut
    Tu pourrais aussi garder ton conteneur EJB3.0 et nommez tes EJB sessions.
    par exemple :
    @EJB(name="ejb/MySessionBean", beanInterface=MySessionBeanInterface.class)

    peut être remplacer par une declaration ejb-ref dans le fichier de config ejb-jar.xml.

    Ensuite pour récupérer ton proxy tu n'as plus qu'à faire un lookup("java:comp/env/ejb/MySessionBean");

    Ceci est censé être supporté par tous les serveurs d'application.

  4. #4
    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
    Mais pourquoi tout le monde tient-il autant a ecrire des noms JNDI ?

    Une simple declaration comme ca suffit:
    Le container est ensuite assez grand pour retrouver tout seul le bon EJB dans le reste de ton application.

    Et ca ca marche deja en EJB 3.0

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    Bonjour,

    @kalysto: Je voudrais rebondir sur ta remarque:
    Est il possible de faire de l'injection d'EJB de manière simple dans tout les cas. Par exemple, dans le cas d'un client "lourd" (c'est peut être le cas ici), complétement indépendant d'un serveur d'application?

    Merci d'avance.

  6. #6
    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
    Tout dépend si ton code tourne dans un container ou pas.
    Il faut savoir qu'il existe un client container dans Java EE qui permet donc, dans un client, d'utiliser les memes annotations que si tu avais un EJB.

Discussions similaires

  1. [JNDI] Premier EJB
    Par chady dans le forum Wildfly/JBoss
    Réponses: 4
    Dernier message: 08/02/2010, 17h45
  2. [EJB] Accès JNDI à un EJB
    Par olivier57b dans le forum Java EE
    Réponses: 3
    Dernier message: 28/05/2009, 12h13
  3. web - ejb - jpa - maven
    Par ekremyilmaz dans le forum Maven
    Réponses: 2
    Dernier message: 28/01/2009, 23h24
  4. Plugin JNDI compatible Spring pour Maven
    Par PONSOLLE dans le forum Maven
    Réponses: 2
    Dernier message: 18/12/2008, 10h18
  5. Réponses: 1
    Dernier message: 22/11/2006, 16h33

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