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 :

JNDI + EJB Remote


Sujet :

Java EE

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 94
    Points : 53
    Points
    53
    Par défaut JNDI + EJB Remote
    Bonjour à tous,

    nouveau dans le monde Java EE, je n'arrive pas à accéder à mon EJB Remote déployé sur mon serveur Glassfish.

    Je voudrais accéder à mon EJB via une application Java Standard.
    En cherchant sur le web, je comprends qu'il faut utiliser JNDI mais je ne sais pas comment le configurer.

    J'ai essayé ceci mais ça ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     Properties props = new Properties();
    props.setProperty("java.naming.factory.initial",
    					"com.sun.enterprise.naming.SerialInitContextFactory");
    props.setProperty("java.naming.factory.url.pkgs",
    					"com.sun.enterprise.naming");
    props.setProperty("java.naming.factory.state",
    					"com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
    props.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");
    props.setProperty("org.omg.CORBA.ORBInitialPort", "8686");
     
    InitialContext ctx = new InitialContext(props);
     
           MonEJB ejb = (MonEJB) ctx.lookup("MonEJB"); // Dans mon EJB : @Stateless(mappedName = "MonEJB")
    Le serveur tourne sur ma machine.
    J'avoue ne pas comprendre toutes les propriétés de mon Properties.
    J'ai également rajouté le jar gf-client.jar à mon classpath.

    L'erreur obtenue est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.omg.CORBA.COMM_FAILURE: FINE: 00410008: Connection abort  vmcid: OMG  minor code: 8 completed: Maybe
    Merci.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 18
    Points : 15
    Points
    15
    Par défaut Service de partage d'objets
    Bonjour.

    En principe JNDI ne sert qu'à obtenir une référence sur un objet, et n'implémente pas lui-même, Corba ou un service de partage d'EJB.

    Accéder aux EJB depuis le même conteneur c'est facile, on utilise le protocole du conteneur et cela est transparent.
    C'est certainement ce que vous cherchez à faire.

    Si c'est le cas, cherchez dans la doc de Glassfish, vous allez trouver.

    Le code que vous nous montrez-là est du "vieux" code exemple utilisant Corba et le partage de code entre JVMs.

    Ce qu'il vous faut, ce sont les bonnes propriétés pour l'objet Context, et en particulier le nom du package (regardez dans les sources de Glassfish) qui s'occuppe du nommage.
    par exemple, avec JBoss, nous avons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
    ...
    Ensuite il vous faudra la bonne requête de lookup JNDI.

    Pour cela, cherchez à éditer le registre JNDI dans l'interface de gestion web de Glassfish, une fois que vous avez déployé l'application.
    Là, vous trouverez tous les espaces de nommage (avec JNDI on dit "contextes") et les objets qui y sont enregistrés.


  3. #3
    Membre du Club
    Homme Profil pro
    Oracle Java EE 6 Architect
    Inscrit en
    Mai 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Oracle Java EE 6 Architect

    Informations forums :
    Inscription : Mai 2015
    Messages : 7
    Points : 67
    Points
    67
    Par défaut
    Salut
    si ton Glassfish est Java EE 6 compliant, alors voici ce qu'il te faut faire:
    - Tu dois creer un business interface pour ton remote EJB, puis le decorer avec l'annotation @Remote
    - Pour acceder a ton bean, il y a 2 modes possibles: Dependency Injection (annotation @EJB) ou bien par le JNDI lookup (MonEjbRemote example = (MonEjbRemote)InitialContext.lookup("java:global/monApp/MonEjbRemote ")

    Avec Java EE 5, pas de dependency injection, la seule option est le JNDI lookup (pas global)
    Avec Java EE6 , DI + Global JNDI lookup (portable en principe car global)

    Pas besoin de configurer, c'est transparent pour toi, c'est le container java EE qui le fait et le rend disponible.

    Je te conseille de regarder le module: BeanLocator
    et patterns Java EE : Context Holder et Resource Binder (permet de mettre des references dans le JNDI par le code)

Discussions similaires

  1. Pas d'ejb Remote sur Glassfish/debian
    Par jsansnom dans le forum Glassfish et Payara
    Réponses: 2
    Dernier message: 17/08/2010, 10h25
  2. Le package javax.ejb, Remote et Stateless
    Par amira88 dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 20/11/2009, 11h09
  3. [JNDI] Acces EJB remote, parametres non réactualisés
    Par HerQuLe dans le forum Java EE
    Réponses: 3
    Dernier message: 15/06/2009, 15h27
  4. JNDI - EJB - Config ?
    Par Jonathan13 dans le forum Weblogic
    Réponses: 0
    Dernier message: 06/09/2008, 14h04
  5. [EJB] Remote call impossible avec WEBSPHERE
    Par nighma dans le forum Websphere
    Réponses: 1
    Dernier message: 19/06/2006, 16h18

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