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 :

[Debutant] Appel d'EJB distants + divers [EJB]


Sujet :

Java EE

  1. #1
    Candidat au Club
    Inscrit en
    Février 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 11
    Points : 4
    Points
    4
    Par défaut [Debutant] Appel d'EJB distants + divers
    Salut TLM !

    Je m'apprete à commencer en J2EE à la demande de mon entreprise, et je suis en train d'essayer de faire le tour de ses possibilités. Le but est d'avoir une architecture 3 tiers pour le web avec (je ne vais rien vous apprendre) un serveur BD, un serveur métier (à priori c'est lui qui va contenir les EJB), et un serveur d'affichage (serveur Web, avec probablement des JSP). 8)
    Le but est également que le serveur métier puisse être accessible par une application de type "windows" (codée en Uniface). Je pensais donc utiliser les EJB pour être appelés par le server web (directement par le JSP, je pense qu'en terme de performances ce sera meilleur), mais que ces EJB puissent être aussi appelés en tant que service web (de ce coté la, les performances vont sûrement en prendre un coup, mais j'y gagne en "portabilité" coté client). :o

    J'ai lu l'excellent et trés abordable tutoriel de Ashita-studio.com ( http://www.ashita-studio.com/tutoriaux/ejb/ ), afin de me familiariser avec la technologie des EJB. Je n'ai jamais codé en Java (ou si peu ... ), mais je connais la technologie Objet (notemment grace au C++).

    Maintenant que le décor est planté (ouf ! ), voila mes questions

    1. Un serveur JSP distant du serveur qui contient les EJB peut il appeler ces EJB (je pense que oui, mais je n'ai pas trouvé d'explications la dessus). Comment se fait cet appel : est-ce une configuration du serveur metier en plus ?? Une config du serveur web ?? Ou est-ce transparent une fois qu'on a instancié la classe Home ???

    2. Les WebServices sont-ils faciles à mettre en place avec un serveur J2EE et des EJB ?

    3. Le but est également de réduire les coûts de licence, et on me demande donc d'utiliser des technologies de type OpenSource qui vont tourner en production sur une base énorme (1000 tables, plusieurs million d'enregistrements) avec pas trop de requetes simultanées (une trentaine peut-être). Auriez-vous un exmple de config pour ca ? Devrais-je utiliser JBoss ou JonAS ?? Ou est-ce complétement inconcevable, et je dois absolument utiliser un serveur commercial ?

    Je vous remercie d'avance d'avoir pris le temps de me lire, et (éventuellement) de me répondre ...

    A+

  2. #2
    Candidat au Club
    Inscrit en
    Février 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Euh, j'ai encore une petite question ...
    Sur le serveur metier (EJB), quels seraient les softs à installer ? Tomcat est-il indispensable pour la diffusion des services Web par exemple ? :o

    Sur le serveur web, une config Apache/Tomcat me suffira-t-elle a appeler les EJB, ou aurais-je besoin d'installer aussi JonAs/JBoss dessus ? :o

    Merci d'avance !

    A+

  3. #3
    Membre confirmé

    Inscrit en
    Juillet 2002
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 116
    Points : 514
    Points
    514
    Par défaut
    Donc je vais essayer de répondre à certaines de tes questions :

    Tout d'abord, oui des pages jsp peuvent appeler des EJB situé sur un autre serveur pour cela, on utilise des protocoles réseaux telle que RMI ou IIOP, afin de communiquer avec ces EJB. De la même facon qu'un client graphique écrit dans n'import language, peut communiquer avec.
    Pour un application java comme les jsp, on préférera RMI ou ces dérivés telle que Jeremie. Pour une application d'un autre language, on fera du IIOP grâce à CORBA.

    Sinon pour la deuxiéme question, qu'entends tu par webservices car ce mot est plutôt vague ...

    Jonas et Jboss sont de bonne alternative face aux serveur d'application payant. Pour ma part, j'utilise Jonas dans mon entreprise et je ne m'en plaint pas, maintenant il faut voir avec tes besoins ...

    Pour faire des JSP et des EJB, il faut au moins tomcat et Jonas/Jboss.
    Car Tomcat pour les JSP et Jonas/Jboss pour les EJB.
    Sans oublier les bases de données nécessaires, mais j'imagine que tu y as déjà penser.

  4. #4
    Candidat au Club
    Inscrit en
    Février 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Merci Debernad !!!

    Ce que j'appelle webservices, c'est l'appel distant de methodes en XML-RPC via SOAP ... Ils sont decris dans des répertoires UDDI au format WSDL. Ils sont trés à la mode en ce moment, et paraissent une bonne solution pour un appel de méthode à distance. En fait j'ai découvert ca en installant Visual Studio .NET, car MS communique beaucoup dessus. Le problème (je pense :o) étant que ces échanges se font en HTTP, ce qui est plus difficile à sécuriser : me trompe-je (je n'y connait pas grand chose en sécurité) ???

    Mais c'est vrai que je n'avais absolument pas pensé à CORBA !!! Ca me parait une trés bonne idée !!!

    Par rapport aux tutoriaux dont j'ai donné l'URL ( http://www.ashita-studio.com/tutoriaux/ejb/ ), y a-t-il des modifications à faire dans le code d'un client si l'EJB n'est pas sur la même machine que le JSP (ou la classe java) qui l'appelle ??? :o Si qqun avait même deux trois lignes de code exemple à me montrer, ce serait super cool (j'en demande pas trop la ?!? ) ...

    Pour ce qui est de la config, je n'ai donc pas obligatoirement besoin de Tomcat sur le serveur qui hébergera les EJB, c'est ca ??? :o

    Merci encore a l'âme charitable qui voudra bien m'éclairer ...

    A+

  5. #5
    Candidat au Club
    Inscrit en
    Février 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Plus d'infos sur les services web : http://www.microsoft.com/france/msdn/technologies/technos/webservices/default.asp

    Sun a même développé le Java Web Services Developer Pack : http://java.sun.com/webservices/webservicespack.html

    A votre avis, est-ce une technologie à utiliser, à conseiller, ou à ignorer ?!? Repond-elle a des exigences de sécurité suffisantes ??? :o

    Merci, a+

  6. #6
    Membre actif Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Points : 253
    Points
    253
    Par défaut
    Citation Envoyé par LAlex
    Par rapport aux tutoriaux dont j'ai donné l'URL ( http://www.ashita-studio.com/tutoriaux/ejb/ ), y a-t-il des modifications à faire dans le code d'un client si l'EJB n'est pas sur la même machine que le JSP (ou la classe java) qui l'appelle ??? :o Si qqun avait même deux trois lignes de code exemple à me montrer, ce serait super cool (j'en demande pas trop la ?!? ) ...

    Pour ce qui est de la config, je n'ai donc pas obligatoirement besoin de Tomcat sur le serveur qui hébergera les EJB, c'est ca ??? :o

    Merci encore a l'âme charitable qui voudra bien m'éclairer ...

    A+
    Quant tu crées un EJB, tu crées en fait un Bean avec plusieurs interfaces.
    Le Bean contient toute la partie métier (ou persistance si tu utilises des Entity beans). Ses interfaces sont:
    Local: présente les services métiers fournis par le bean
    LocalHome: présente la gestion du composant
    Remote: idem Local
    RemoteHome: idem LocalHome

    Maintenant, la différence entre Local et Remote est que la 1ère interface est destinée aux clients situés dans la même JVM, tandis que la 2nde pour des clients situés dans une JVM différente (typiquement sur une autre machine)

    Donc comme tu peux le constater, tu n'as pas à créer différents Beans mais juste à fournir les différentes interfaces.
    C'est le but même des EJBs

    Bon courage

  7. #7
    Membre confirmé

    Inscrit en
    Juillet 2002
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 116
    Points : 514
    Points
    514
    Par défaut
    Donc oui pour les serveur d'ejb, si tu n'as pas de jsp, Tomcat ne sert rien et uniquement Jonas/Jboss te seront utile sur cette machine.

    Sinon j'ai peur qu'il soit plus difficile à mettre en oeuvre une sécurité type SSL ou autre, pour les échanges. Tout est faisable mais à quel prix ? Il faudrait étudier le cout de développement.

    Il suffit juste de faire des ejb en Remote et non en Local ainsi il sont accessible à distance. Alors que les ejb locals ne sont accessible que par les ejb entre eux car faisant parti de la meme jvm.

    Enfin il faut voir les JSP comme des clients. Ainsi un client graphique ou un client web demande de la meme maniére un service de type EJB.
    En réalité, les remote ejb s'incrive à un annuaire service ou de ressource telle que JNDI. Ainsi, les clients demande a cet annuaire, le service voulu et sont redirigé vers le serveur et le port fournissant ce service.

    J'espére avoir été clair ...

  8. #8
    Candidat au Club
    Inscrit en
    Février 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    T'as été super clair, merci !!!

    Encore 2 ch'tites questions a ce propos :
    Comment on fait les EJB en Remote ou en Local ??? Je n'ai pas vu a quel endroit on peut déclarer ca (ma seule ressource concrète est le code du tuts, encore une fois) ... Est-ce dans les .java, dans le descripteur de déploiement standard, dans le descripteur de déploiement JonAs, ou sur le client ??? :o

    La déclaration JNDI se fait-elle automatiquement lors du déploiement, ou faut-il rajouter quelque chose sur la machine cliente (j'avais bien compris que JSP était un client comme un autre ... ) ??? Faut-il appeler ce JNDI explicitement ou l'appel se fait de manière transparente ??? :o

    Merci encore de ta sollicitude ...

    A+

  9. #9
    Membre actif Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Points : 253
    Points
    253
    Par défaut
    Pour faire un EJB avec toutes ses interfaces il te faut 5 fichiers:
    exemple avec un ejb Voiture. Il te faut les fichiers:
    VoitureBean, VoitureLocal, VoitureLocalHome, VoitureRemote et VoitureRemoteHome...
    Une fois compilé, le tout est mis dans fichier .JAR voire .EAR si tu fournis avec les JSP ou Servlets contenues quant à eux dans un .WAR

    Pour ce qui est du JNDI, c'est au déploiement que le nom de ton EJB sera inséré dedans.
    En fait avec ton EJB tu fournis un fichier que l'on nomme "descripteur de déploiement". Il décrit tout ton EJB et notament fournit le nom de ce dernier et qui sera mis dans ton annuaire JNDI.

    Je te conseille fortement de trouver plus de docs et de tutoriaux sue les EJBs car tout ça c'est un peu les bases de cette techno et le plus drôle reste à venir...

  10. #10
    Candidat au Club
    Inscrit en
    Février 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par xxaragornxx
    Pour ce qui est du JNDI, c'est au déploiement que le nom de ton EJB sera inséré dedans.
    En fait avec ton EJB tu fournis un fichier que l'on nomme "descripteur de déploiement". Il décrit tout ton EJB et notament fournit le nom de ce dernier et qui sera mis dans ton annuaire JNDI.
    Comment mon client accede-t-il à l'annuaire ? En fait, comment lui dire d'y accéder, et lui dire ou il se trouve ??? :o

    Citation Envoyé par xxaragornxx
    Je te conseille fortement de trouver plus de docs et de tutoriaux sue les EJBs car tout ça c'est un peu les bases de cette techno
    Aurais-tu par hasard des URLs de docs et tutoriaux ACCESSIBLES ?!? Parce que j'ai l'impression que beaucoup de tutoriaux sont fait pour les codeurs Javas (alors qu'un tutoriel, c'est justement fait - normalement - pour ceux qui ne connaissent pas grand chose au thème abordé), et que ces mêmes tutoriaux abordent des notions qui ne sont pas toujours évidentes pour un programmeur comme moi, qui a peu pratiqué l'objet (il y a longtemps en C++, et peu en Java), bien que j'ai toutes les connaissances théoriques sur l'algorythmique Objet ...

    Donc, si tu avais 2-3 liens, ce serait le bonheur !!!

    Citation Envoyé par xxaragornxx
    et le plus drôle reste à venir...
    J'espère bien !!! La technoologie J2EE me paraît absolument passionnante !!!

    Merci, a+

  11. #11
    Membre confirmé

    Inscrit en
    Juillet 2002
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 116
    Points : 514
    Points
    514
    Par défaut
    Tu as soif de connaissance alors voici une bonne doc en francais sur les ejb :

    http://www-adele.imag.fr/~donsez/cours/ejb.pdf

    sinon un client utilisera un fichier telle que "jndi.properties" pour communiquer avec les ejb.

    Voici a quoi ca ressemble :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #  JNDI configuration for RMI or DAVID
    java.naming.factory.initial	com.sun.jndi.rmi.registry.RegistryContextFactory
    java.naming.provider.url	rmi://200.99.1.2:1099
    java.naming.factory.url.pkgs	org.objectweb.jonas.naming

  12. #12
    Candidat au Club
    Inscrit en
    Février 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Merci pour la doc !!!
    Donc, si j'ai bien compris, le client va chercher l'EJB dans ce fichier jndi.properties de manière implicite ?!? :o Donc pas besoin d'avoir un code spécifique ?

    Et une dernière (je vais vous laisser tranquille aprés quand même ), pour appeler un EJB en CORBA, y a-t-il une modification a faire coté Serveur EJB (source de l'EJB ou descripteur de déploiement) ??? :o

    Merci, a+

  13. #13
    Membre actif Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Points : 253
    Points
    253
    Par défaut
    Je n'ai pas grand chose sous la main, mais je te conseillerai le logiciel JBuilder 8.0
    Il est payant, mais tu peux profiter de la licence d'évaluation.
    Il te crée des EJB (Session, Entity,...) en un tour de main. Après c'est intéressant de regarder tout le code qu'il génère.
    De plus Borland (qui fait JBuilder) a fait un document "Jbuilder6-enterprisejb.pdf" que tu trouveras facilement avec Google qui explique de manière simple (et en français ) le fonctionnement des EJBs ainsi que comment les mettre en oeuvre avec JBuilder (ça n'a pour ainsi dire pas changer entre la version 6.0 et 8.0)

    Bon courage

  14. #14
    Membre actif Avatar de xxaragornxx
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Points : 253
    Points
    253
    Par défaut
    Citation Envoyé par LAlex
    Merci pour la doc !!!
    Donc, si j'ai bien compris, le client va chercher l'EJB dans ce fichier jndi.properties de manière implicite ?!? :o Donc pas besoin d'avoir un code spécifique ?
    C'est pas si implicite que ça.
    Le JNDI est celui fournit par ton serveur d'applications.
    La recherche du nom se fait de la manière suivante (par exemple dans une servlet):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      VoitureLocalHome homevoit;
      VoitureLocal voit;
     
       InitialContext ctx = new InitialContext();
       Object objref = ctx.lookup("VoitureLocal");
       homecvoit = (CmtSessionLocalHome) PortableRemoteObject.narrow(objref, VoitureLocalHome.class);
       voit = homevoit.create();
    c'est le lookup qui va rechercher le nom VoitureLocal dans le JNDI.
    En fait tu récupères la référence, la ligne suivante te fais récupérer (RMI) ton objet VoitureLocalHome qui te permet alors de creer ta voiture proprement dite.

    Amuse toi bien

  15. #15
    Candidat au Club
    Inscrit en
    Février 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Génial, je vais me lancer de ce pas dans toute cette doc (vais avoir de la lecture moi ... j'vais faire mal aux yeux ! ) !!!

    Merci aussi de votre patience face a mes questions à répétition !

    A+

  16. #16
    Membre confirmé

    Inscrit en
    Juillet 2002
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 116
    Points : 514
    Points
    514
    Par défaut
    Je ne m'inquiéte pas sur le fait que tu reviendra nous passer un petit coucou

    Car connaitre bien cette technologie prends du temps ...

    Sinon une derniére chose, il n'y a pas grand chose à changer pour CORBA excepté le protocole d'échange au niveau du client et à la création du package (.jar) de déploiement en indiquant d'utiliser telle ou telle protocole.

    Enfin comme la dit xxaragornxx, il te faut des informations comme le nom du service que tu cherche et qui représente l'ejb voulu.

    Bonne lecture.

  17. #17
    Candidat au Club
    Inscrit en
    Février 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Pour info, j'ai trouvé la version de la doc EJB pour JB9 en francais : http://info.borland.com/techpubs/jbuilder/jbuilder9/french/viewordownloadpdf.html (d'ailleurs, il y a toutes les docs de JBuilder 9 Fr) ...

    A+

  18. #18
    Candidat au Club
    Inscrit en
    Février 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Euh ..... scizez moi, mais j'ai (encore) une ch'tite question relative au CORBA justement :
    un EJB que j'aurais déployé en CORBA ET en RMI pour pouvoir y accéder depuis un serveur JSP (client de mon conteneur EJB) ET d'un client Windows sera t-il le même ? En gros, l'appel RMI et l'appel CORBA appelleront le même EJB, ou ce sera mon EJB dupliqué pour chaque protocole d'appel ?

    Merci encore

    A+

  19. #19
    Membre confirmé

    Inscrit en
    Juillet 2002
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 116
    Points : 514
    Points
    514
    Par défaut
    Normalement le meme ejb car il y a une couche de translation IIOP<--->RMI entre le Cosnaming et le Jndi.

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

Discussions similaires

  1. [EJB3] JSF/Managed Bean {@EJB} appel local ou distant
    Par fellyis dans le forum Java EE
    Réponses: 5
    Dernier message: 23/02/2010, 15h14
  2. [debutant]appeller une fonction d'une classe fille et mere ?
    Par Battosaiii dans le forum Débuter
    Réponses: 1
    Dernier message: 12/11/2005, 12h56
  3. [EJB] [JNDI] Application cliente invoquant des EJB distants
    Par nana1 dans le forum Java EE
    Réponses: 18
    Dernier message: 25/10/2005, 10h08
  4. [debutant]appeler une methode d'un autre document
    Par la7su dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/10/2005, 10h22

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