1 Java et CORBA • Intégré dans le JDK1.2 … : Java IDL • … hormis idltojava à ch
1 Java et CORBA • Intégré dans le JDK1.2 … : Java IDL • … hormis idltojava à chercher au java developer connection (~300Ko) Solaris, Win32 • On utilise les paquetages org.omg.CORBA et org.omg.COSNaming du JDK1.2 2 Architecture CORBA • Travaux de l'OMG (Object Management Group). • CORBA (Common Object Request Broker Architecture) = une architecture, des interfaces, des protocoles, des services pour faire communiquer des objets répartis sur diverses machines. 3 Architecture CORBA (suite) • Caractéristiques importantes : les objets peuvent avoir été écrits dans des langages de programmation distincts (essentiellement C++, Ada95, Smalltalk, COBOL, C et évidemment Java). • CORBA = des spécifications, rien que des spécifications mais toutes les spécifications 4 ORB = Object Request Broker • ORB = ? • ORB = Bus logiciel = ? • ORB = pseudo-objet de bootstrap donnant accès à la mécanique (l’univers) CORBA (Orfali) • ORB = un protocole orienté objet • Parmi ces services : le Naming Service 5 naming Service = Service de nommage • Les objets sont décrits par des noms. • Noms rangés par arborescence 6 Initialisation : code Java • "ORB initialization is a bootstrap call into the CORBA world." import org.omg.CosNaming.*; import org.omg.CosNaming.NamingContextPackage.*; import org.omg.CORBA.*; class LeClientOuLeServeur { public static void main (String args[]){ Properties props = new Properties (); props.put("org.omg.CORBA.ORBInitialPort", "900"); props.put("org.omg.CORBA.ORBInitialHost", "localhost"); ORB orb = ORB.init( args, props); … } • Est équivalent à : ORB orb = ORB.init( args, null); 7 De l’ORB au Naming Service ORB orb = ORB.init(...); org.omg.CORBA.Object refNServ = orb.resolve_initial_references("NameService"); NamingContext nc = NamingContextHelper.narrow(refNServ); • Les méthodes ORB.init(…) du JDK lance un service de nommage NamingService (qui, par défaut écoute localement sur le port 900 cf.diapo précédente) • On récupère ce service de nommage par : 8 IDL = Interface Definition Language • méta langage • langage de spécification (de déclarations) CORBA • Syntaxe proche de C++ • Passage des paramètres en in, out, inout. • Module ~ paquetage Java ~ espace de nommage 9 IDL : un exemple • code Java // Count.idl module Counter { interface Count { attribute long sum; long increment(); }; }; 10 De l’idl vers Java • génération : – d’une interface Java – d’une classe Helper – d’une classe Holder • et très souvent (idltojava) – d’un stub – d’un skeleton 11 Fichiers générés • les interfaces Java = traduction en Java des interfaces idl = le contrat que doit implanter le serveur = ce que le client peut demander au serveur • classe Helper = {méthodes} pour : – convertir des objets CORBA en type Java (Cast) : narrow() – lire/écrire des objets CORBA : write(), read() 12 Fichiers générés (suite) • classe Holder : implémente les passages out et inout (inexistant en Java natif). 13 Stub avec idltojava • Stub de la forme _NomInterfaceStub – = le représentant coté client du serveur distant. – convertit les requêtes du client en appel au serveur distant – attend la réponse – la renvoie au client. 14 Skeleton avec idltojava • Skeleton de la forme _NomInterfaceImplBase – attend les requêtes – déploie les arguments (marshalling) – demande l’exécution au serveur – envoie les réponses. • sert de classe de base pour le serveur !! 15 Finalement, pour le(s) programmeur(s), il faut : • créer le fichier idl • lancer idltojava sur ce fichier • implanter le serveur (classe ...Impl) en le dérivant du squelette _...ImplBase. – Serveur (français) = servant (US) • écrire le lanceur du serveur – lanceur serveur (français) = server (US) • écrire le client 16 A l'exécution : • lancer le service de nommage par tnameserv & • exécuter le lanceur de serveur • exécuter le client 17 Démo : calculatrice CORBA : coté serveur • l’interface IDL : Calculette.idl • génération du code Java : idltojava Calculette.idl => génération de l’interface Java, du stub et du skeleton • implémentation de l’interface Java (i.e. le Serveur) : CalculetteImpl.java – dérive du Skeleton 18 Démo : calculatrice CORBA : coté serveur • implémentation du lanceur du serveur : LanceCalculette.java – initialisation de l ’ORB et recherche du NamingService – enregistrement (rebind()) du serveur auprès de ce NamingService – attente des clients 19 Démo : calculatrice CORBA : coté client • Appel dynamique par DII (Dynamic Invocation Interface) • client application indépendante : DIIClientCalculette.java 20 Démo : calculatrice CORBA : compilation • javac LanceCalculette.java • javac DIIClientCalculette.java 21 Démo : calculatrice CORBA : exécution • tnameserv & • java LanceCalculette • java DIIClientCalculette 22 Calculette : applet • Ecriture de l ’applet DIIAppletClientCalculette.jav a • lancement par appletviewer DIIAppletClientCalculette.htm l 23 Bibliographie • Un excellent tutorial d'introduction à Java IDL : http://java.sun.com/products/jdk/1 .3/docs/guide/idl/jidlExample.html • Technologie Java IDL à Javasoft : http://java.sun.com/products/ jdk/idl/index.html • Le site de l'OMG : http://www.omg.org 24 Bibliographie (suite) • Java Enterprise in a nutshell. David Flanagan, Jim Farley, William Crawford & Kris Magnusson; ed O'Reilly. ISBN 1- 56592-483-5. Chapitre Java IDL • Client/Server Programming with Java and CORBA second edition. Robert Orfali, Dan Harkey; ed Wiley. ISBN 0-471-24578-X 25 Bibliographie (suite) • Au coeur de CORBA avec Java. Jérôme Daniel, ed Vuibert. ISBN 2-7117-8659-5 • Java Programming with CORBA. Andreas Vogel, Keith Duddy, ed Wiley. ISBN 0- 471-24765-0 uploads/s1/ corba.pdf
Documents similaires










-
46
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Oct 15, 2021
- Catégorie Administration
- Langue French
- Taille du fichier 0.0254MB