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 :

Comment faire référence à un ejb dans un client distant ?


Sujet :

Java EE

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 44
    Points
    44
    Par défaut Comment faire référence à un ejb dans un client distant ?
    Bonjour à tous,

    Je suis totalement perdu et désemparé face aux ejb...
    J'explique mon problème:

    J'ai créé un bean session stateful qui contient la méthode hello world.

    Jusque là tout va bien... excepté que je ne sais pas comment faire pour ajouter la référence de cet ejb dans mon client

    J'ai un peu regardé pour des exemples et voilà ce que j'ai trouvé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Context ctx = new InitialContext();
    RemoteStorage storageService = (RemoteStorage) ctx
    .lookup(RemoteStorage.class.getName());
    Bon très bien... mais lorsque j'inscris le nom de mon bean dans le client, celui-ci me dit qu'il ne trouve pas la classe !

    Donc j'ai un pc A sur lequel est installé netbeans 6 + glassfish v2 et sur lequel tourne mon bean

    Et sur le pc B j'essaie d'accéder à mon bean A

    Vraiment compliqué les ejb, je ne comprends vraiment rien à leurs références, si qqun pouvait m'éclairer sur le sujet ce serait génial.

    En particulier, je me demande comment mon client peut retrouver mon serveur glassfish ?? il faut quand même bien spécifier une ip ou un nom de machine non ?

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 44
    Points
    44
    Par défaut
    Petite précision,

    J'ai regardé ce qu'était JNDI et bon si j'ai bien tout compris c'est un service de nommage qui permet d'accéder aux ressources du serveur d'application.



    Voici la fenetre du nommage JNDI de mon serveur glassfish.

    J'ai créé un bean dont l'interface est NewSessionRemote.

    J'aimerais que mon application client ( J'ai créé une nouvelle application client entreprise ) puisse accéder à la référence de cet ejb.

    Dans mon client, j'ai une classe main qui doit accéder au bean ( pour tester la référence ).
    Le problème, c'est que je mon projet client de test ne connait pas la classe NewSessionBean



    Dois-je inclure quelque chose d'autre dans mon projet client ?

    Est-ce que j'appelle bien le jndi du serveur ?

    Question subsidiaire... ^^ lorsque je me déplace vers une autre machine, le nom JNDI est toujours suffisant ? il ne faut pas spécifier une ip ou un nom de machine ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 44
    Points
    44
    Par défaut
    Bon j'ai un peu avancé mais je suis toujours bloqué.

    Voilà mes avancées :

    J'essaie d'atteindre mon orb de la manière 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
        Hashtable env = new Hashtable(); 
     
        // deploiement dans J2EE
        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.cosnaming.CNCtxFactory");
        env.put(Context.PROVIDER_URL, "iiop://localhost:3700");        
     
        try
        {
            System.out.println("essai de connexion");
          Context ctx = new InitialContext( env );
          System.out.println("connecté !");
     
          Object objref = ctx.lookup("newpackage.NewSessionRemote");
          System.out.println("obj ok");
     
        }
        catch( Exception exc){System.out.println("Erreur: "+exc.getMessage());}
    J'arrive bien à me connecter sur le port 3700 de l'orb... mais je n'arrive pas à récupérer mon NewSessionRemote qui me renvoit null :-/

    Je me pose toujours la même question, comment je fait pour manipuler les noms des classes dans mon client ?
    J'ai importé le jar des sources de l'ejb dans le client et il l'a trouvé, mais est-ce la bonne façon de faire ?

    Merci à tous de pouvoir m'éclairer sur le sujet

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 44
    Points
    44
    Par défaut
    J'ai encore un peu progressé.

    J'arrive maintenant à obtenir mon objet, j'ai modifié pour celà

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");
    Mais je n'arrive pas à le caster en mon bean :-s

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 79
    Points : 44
    Points
    44
    Par défaut
    Et bien voilà un topic monologue... lol

    Je viens de réussir à récupérer ma référence... ce n'était pas le bean qu'il fallait récupérer mais l'interface remote. J'ai réussi enfin à invoquer ma méthode sayHelloWolrd()

    Suis trop content lol

    Par contre je me demande toujours si c'est normal d'importer le jar avec l'interface dans mon applic client ?

    C'est pas très distribué ça...

  6. #6
    Membre confirmé Avatar de heid
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Mai 2002
    Messages : 388
    Points : 597
    Points
    597
    Par défaut
    Fait un webservice. (désolé je brise le monologue).

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/04/2010, 11h13
  2. Réponses: 5
    Dernier message: 03/08/2006, 16h56
  3. Réponses: 5
    Dernier message: 10/07/2006, 10h33
  4. Comment faire référence à un champ d'un etat dans une requete?
    Par polianita dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 19/06/2006, 15h26
  5. Comment faire référence à un champ d'un etat dans une requete?
    Par polianita dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 16/06/2006, 17h46

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