1 1 corba avec java et c++ 2004 jean-marc vanel transiciel - sogeti
TRANSCRIPT
![Page 1: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/1.jpg)
11
Corba avec Java et C++
2004Jean-Marc Vanel
Transiciel - Sogeti
![Page 2: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/2.jpg)
22
Contenu et déroulement
PlanPartie 1: survol
vision Corbamise en oeuvre de Corbaliaison et transport dans Corbaservices «communs»Annexe - exemple : HelloWorld
Partie 2Service de nommage (désignation)Premier programme CORBA en C++Etude du type « Any »Les mécanismes dynamiques de C.O.R.B.A.Synthèse sur C.O.R.B.A.
![Page 3: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/3.jpg)
33
Vision de Corba
![Page 4: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/4.jpg)
44
OMG : concepts-clés
Permettre l’interopérabilité des composants / applications par l’intermédiaire d’un mode de coopération unifié : l’appel d’objets distants
Gérer l’hétérogénéité des réseaux, machines, systèmes et langages
Vision utilisateur = langage pivot commun : OMG-IDL
Offrir une architecture globale
![Page 5: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/5.jpg)
55
OMG : les objectifs techniques
Liaison avec tous les langages
Transparence des invocations
Invocation statique et dynamique
Système auto-descriptif
Activation automatique
Interopérabilité entre bus
![Page 6: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/6.jpg)
66
OMG : vision globale
Common Object Request Broker Architecture CORBA
appel de méthode réparti transparent passages de paramètres : in, out, in/out types de paramètres : types de base (entiers, string, etc), références d’objets, objets par valeur
un bus à objets répartis (ORB)transport des requêtes, activation des objets
des services de base (CORBAservices)
des utilitaires communs (CORBAfacilities)
des interfaces de domaines = objets métiers« interopérabilité sémantique »
![Page 7: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/7.jpg)
77
OMA : l’architecture globale
Licences
Transactions
Persistanc
e
Propriétés
Changements
Events
Nommage Vendeur Sécurité Relations Collections Temps Externalisation
InterrogationsCyclede vie Concurrence
Services objet communs
Workflow
DataWare
IHM
Administration
Utilitaires communs
Financ
e
Télécoms
Santé
Interfacesde domaineObjetsapplicatifs
Spécifiques
Bus d’objets répartis
![Page 8: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/8.jpg)
88
ORB
OMG :le modèle client/serveur objet
ObjetCORBA
Etat
Coded’implantation
Référenced’objet
Interfaced’objet
Requête Activation
![Page 9: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/9.jpg)
99
Mise en oeuvre de Corba
![Page 10: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/10.jpg)
1010
OMG-IDL : le langage d’interfaces
Rôle du langage
décrire les interfaces des objets
langage pivot entre applications
générer des squelettes de programme dans les langages de programmation des applications
![Page 11: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/11.jpg)
1111
OMG-IDL : mise en oeuvre des interfaces
Projection des descriptions OMG-IDL vers les langages d’implantation des clients et des serveurs (e.g., C, C++, Java, etc).
mode « statique »
Instanciation sous forme d’objets CORBA des descriptions OMG-IDL depuis un référentiel d’interfaces.
mode « dynamique »
![Page 12: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/12.jpg)
1212
CORBA : les composantes du bus
Bus de communication
Interface du bus
Interface d’invocation statique
Interface d’invocation dynamique
SII DII ORB
SSI DSI
OA
Adaptateur d’objetInterface de squelettes statiquesInterface de squelettes dynamiques
IR Référentieldes interfaces ImplR Référentiel
des implantations
![Page 13: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/13.jpg)
1313
Liaison et transport dans Corba
![Page 14: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/14.jpg)
1414
Les couches de transport de CORBA
GIOP : protocole d’interopérabilité entre bus de la norme CORBA 2
support à l’appel de méthode (enveloppe = REQUEST, REPLY, etc)
encodage des données : CDRGIOP sur Internet = Internet Inter ORB Protocol (IIOP)champs « service context » (ex: standardisation ctxt
transactions, sécurité)
![Page 15: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/15.jpg)
1515
Nommage dans Corba
Noms du domaine CorbaInteroperable Object Reference : IORidentification protocoleinterface OMG-IDL
Sous-domaine Corba/Internetadresse IP + port
![Page 16: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/16.jpg)
1616
Emballeur GIOP
Talon client(IOR)
Interface applicative (issue de l’interface IDL)
IOR servant
Adaptateurd’objet
Mise en place d’une liaison
Emballeur GIOP
Squelette serveur
Servant applicatifInvocation
Liaison IIOP
![Page 17: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/17.jpg)
1717
Services «communs»
![Page 18: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/18.jpg)
1818
Les services communs (1)
Services de localisation d’objets
service de nommage (Naming)pour retrouver un objet par un nomservice de type « pages blanches »
service de courtage (Trader)pour retrouver un objet par des propriétésservice de type « pages jaunes »
![Page 19: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/19.jpg)
1919
Les services communs (2)
Services de communications asynchrones
Events, Notification, Messaging
Services de sûreté de fonctionnement
Security, Transactions, Concurrence
Services concernant la vie des objets
Life Cycle, Property, Relationship, Externalization, Persistent Object, Query, Collection, Versionning, Time, Licencing
![Page 20: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/20.jpg)
2020
Exemple : « Hello World » en Java
![Page 21: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/21.jpg)
2121
Chaine de production de programme
Hello.idl
HelloOperations.javaHello.javaHelloHelper.javaHelloHolder.java
_HelloStub.java
CompilateurOMG-IDL / Java
HelloClient.java
HelloPOA.javaHelloPOATie.java
ClientServeur
HelloServeur.java
HelloImpl.java
![Page 22: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/22.jpg)
2222
De l’IDL à Java
Interface OMG-IDL Hello
Interfaces Java HelloOperations, Hello
Classes Java HelloHelper, HelloHolder
<Hello.idl>interface Hello {void doHello();
};
<Hello.java>public interface HelloOperations {public void doHello();
}public interface Hello extends HelloOperations, org.omg.CORBA.Object, org.omg.CORBA.portable.IDLEntity {}
![Page 23: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/23.jpg)
2323
Implantation du serveur Corba
<HelloServeur.java>public class HelloServeur {public static void main(String args[]) {
// Initialisation du Bus Corba et d’un POAorg.omg.CORBA.ORB orb = ORB.init(args, null);org.omg.PortableServer.POA poa= POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
poa.the_POAManager().activate();// récupération du serveur de nomorg.omg.CosNaming.NamingContext ns
= NamingContextHelper.narrow( orb.resolve_initial_references("NameService"));
// Creation du servant et enregistrement au serveur de nomsHelloImpl hello = new HelloImpl();ns.rebind(
new NameComponent[] { new NameComponent("HelloObj","")},hello );
// Mise en attente du serveurorb.run();
}
![Page 24: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/24.jpg)
2424
Implantation du client Corba
<HelloClient.java>public class HelloClient {public static void main(String args[]) {
// Initialisation du Bus Corbaorg.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, null);// récupération du serveur de nomorg.omg.CosNaming.NamingContext ns
= org.omg.CosNaming. NamingContextHelper.narrow( orb.resolve_initial_references("NameService"));
// Récupération de la souche depuis le serveur de nomorg.omg.CORBA.Object obj_ref
= ns.resolve(new org.omg.CosNaming.NameComponent[]{new NameComponent("HelloObj","")});
Hello hello = HelloHelper.narrow(obj_ref);// Invocation de l'objet distanthello.doHello();
}}
![Page 25: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/25.jpg)
2525
Les classes générées (client et serveur)
Classe _HelloStub : implantation du talonsert à envoyer les requêtesutilisé en lieu et place de l'objet Hello dans le client
Classe HelloPOA Classe HelloPOATiereçoit et décode les requêtes reçoit et décode les requêtesimplantation par héritage implantation par délégation
<HelloImpl.java>public class HelloImpl extends HelloPOA {public HelloImpl() {}public void doHello() {System.out.println("Hello world!");
}}
![Page 26: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/26.jpg)
2626
Corba dynamique
![Page 27: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/27.jpg)
2727
L’invocation dynamique
Référentiel d’interfaces (IR)accessible comme objet Corbagestion de méta-objets Corba (ModuleDef, InterfaceDef,
OperationDef, AttributeDef, TypedefDef, …)
API (DII) de construction de requêtes
Un objet Request = un nom d’opération, une liste de couples type-valeur (au sens de l’IR), une structure pour le résultat, des méthodes:
invokesend_deferred, get_response, poll_responsesend_oneway
![Page 28: 1 1 Corba avec Java et C++ 2004 Jean-Marc Vanel Transiciel - Sogeti](https://reader036.vdocuments.pub/reader036/viewer/2022062312/551d9db7497959293b8db638/html5/thumbnails/28.jpg)
2828
Le squelette dynamique
API (DSI) de décodage de requêtes
Pas d’utilisation de squelettes pré-générés
Utilisée pour implanter dynamiquement des objets
Cas d’utilisation : création de passerelles