Académique Documents
Professionnel Documents
Culture Documents
M.Youssfi
Applications distribues
Machine 1 Application1
TCP/IP ou UDP
Machine 2 Application2
Middlewares:
RMI CORBA EJB Web Services
Architectures Distribues
SGBD
Entreprise 1
Entreprise 2
SGBD
Serveur dapplication Couche DAO Couche mtier Couche web Couche Service MiddleWares:
- RMI - CORBA - EJB - Web Services HTTP
Couche web
TCP/IP UDP
Client HTTP
InterfaceObjetDistant
mthode1() mthode2()
InterfaceObjetDistant
mthode1() mthode2()
implements
od:ObjetDistant
RMI CORBA
STUB
RMI
CORBA
EJB
WS
Naming Service
Nom de lobjet distant Rcuprer Rf de lobjet Sachant le nom OD1 OD2 Rfrence de lobjet distant Rf1 Rf2 4
Cest un Middleware qui permet de crer des applications rparties multi langages et multiplteforme.
NT PC
Protocole IIOP
UNIX Sparc
6
Langage IDL
Le langage OMG-IDL (Interface Definition Language) permet dexprimer, sous la forme de contrats IDL [Geib 97], la coopration entre les fournisseurs et les utilisateurs de services, en sparant linterface de limplmentation des objets Un contrat IDL spcifie les types manipuls par un ensemble dapplications rparties, Le contrat IDL isole ainsi les clients et fournisseurs de linfrastructure logicielle et matrielle les mettant en relation travers le bus CORBA.
Client STUB A
POA Manager
Le bus C.O.R.B.A. ( O.R.B. )
8
L'adaptateur d'objets
BOA ou Basic Object Adapter : les structures daccueil sont matrialises par des processus systmes. POA ou Portable Object Adapter : limplantation des objets est ralise par des objets fournis par un langage de programmation. OODA ou Object-Oriented Database Adapter : la structure daccueil est une base de donnes oriente objet. LOA ou Library Object Adapter : le code dimplantation des objets est stock dans des bibliothques charges dans lespace des applications clientes. COA ou Card Object Adapter : limplantation des objets est stocke dans une carte microprocesseur. Cet adaptateur a t expriment conjointement par le LIFL et la socit Gemplus.
L'annuaire C.O.R.B.A.
Serveur
Servant
Skeleton ORB
Stub
Naming Service
Context Rf Servant Nom1 Nom2
10
Conception :
Gnration des STUBS et SKELETONS Gnration des interfaces des objets distants Gnration des classes du modle.
Implmentation de lobjet distant (Servant) Cration du serveur Cration du client Dploiement et lancement
12
C.O.R.B.A. offre plusieurs types de donnes : - les types de bases - les types complexes
Les types de bases de CORBA sont : boolean octet short ( ushort ) long ( ulong ) long long ( ulonglong ) float double long double char wchar string wstring
15
le nom de l'argument
L'exemple suivant dcrit un objet qui offre une interface appele Premier .
17
La description doit tre compile afin de gnrer les amorces ( souche et squelette ) requises pour l'tablissement de la communication inter-processus. Exemple de compilation IDL :
PremierOperations.java : il s'agit des oprations de l'interface Premier.java : il s'agit de l'interface PremierPOA.java : il s'agit du squelette, _PremierStub.java : il s'agit de la souche,
19
Concept de mapping
Une description IDL est traduite vers un langage de programmation. Les rgles de traduction sont appeles mapping et font partie de la spcification CORBA.
20
IDL Java
float float
double double
long double
char char
wchar char
IDL Java
string string
wstring string
21
org.omg.PortableServer.Servant
PremierPOA
PremierOperations
partir de l'IDL
Implantation de l'objet
22
Supposons que lon souhaite crer une application client serveur qui permet de grer des comptes bancaires, en utilisant le middleware CORBA. Dans cette partie, le serveur cre un objet distant qui reprsente un compte qui est dfini par son code et son solde et permet un client distant faire des versements, des retraits et des consultations de ce compte.
23
1 Conception :
Diagramme de classes
24
2- Fichier IDL
module corbaBank{ struct Compte{ long code; float solde; }; typedef Compte cpte; interface Banque{ void verser(in float mt); void retirer(in float mt); cpte getCompte(); }; };
25
2-Fichier IDL:
Un module nomm corbaBanque (reprsente un package dans java). Une structure Compte qui dclare les variables dun compte savoir le code de type long (quivalent de int en java) et le solde de type float. Linterface de lobjet distant nomm Banque qui dclare des mthodes abstraites : verser : qui possde un paramtre mt de type float en entre retirer : qui possde un paramtre mt de type float en entre getCompte() : qui retourne lobjet Compte.
26
3- Compilation IDL
Cette tape consiste utiliser un utilitaire fourni par LORB Cette opration consiste gnrer le code des STUBS (Souche) des SKELETONS (Squelette) Interface du servant Classes reprsentant chaque structure du modle Et dautres codes utilises par le serveur et le client Dans java, ces fichiers sont gnrs partir du fichier IDL en utilisant lutilitaire IDLJ fourni avec le kit de dveloppement java. Pour faire cette opration, il faut se placer dans le rpertoire de votre projet sur ligne de commandes et excuter la commande suivante. idlj fall v Banque.idl
27
3- Compilation IDL
BanqueOperations.java : Interface qui dclare les mthodes abstraites. Banque.java : Interface de lobjet distant (Hrite de BanqueOperations) BanquePOA : Squelette (Skeleton) _BanqueStub.java : Souche (STUB) BanqueHelper.java : Utilis par le client. BanqueHolder.java : Utilis par le serveur. Compte.java : Classe qui reprsente le compte ;
28
4 Implmentation du Servant
Limplmentation dun objet CORBA distant est une classe qui hrite du squelette et qui redfini toutes les mthodes abstraites de linterface. Dans notre cas, cette classe sera nomme ImplBanque. Elle hrite du squelette BanquePOA Cette classe dfini
une variable qui reprsente un objet de la classe Compte , un constructeur qui crer un compte les trois mthodes dclars dans linterface savoir : verser, retirer et getCompte.
29
4 Implmentation du Servant
package implOD; import corbaBank.BanquePOA; import corbaBank.Compte; public class BanqueImpl extends BanquePOA { private Compte compte; public BanqueImpl () { compte=new Compte(1,0); } public Compte getCompte() { return compte; } public void retirer(float mt) { compte.solde-=mt; } public void verser(float mt) { compte.solde+=mt; } }
30
33
34
6 Projet Du Client
Avant de crer la classe du client, il faut tout dabord copier dans le projet du client les fichiers ncessaires au fonctionnement dun client CORBA. Ces fichiers sont principalement
Tous ces fichiers se trouvent dans le dossier corbaBank gnr par lutilitaire IDLJ. Copier donc le dossier corbaBank du projet du Serveur dans le projet du Client.
35
6 Projet Du Client
import org.omg.CORBA.ORB; import org.omg.CORBA.Object; import org.omg.CosNaming.*; import corbaBank.*; public class ClientCorba { public static void main(String[] args) { try{ // Initialiser l'ORB ORB orb=ORB.init(args,null); // Crer le contexte de Naming Service NamingContext root=NamingContextHelper. narrow (orb.resolve_initial_references("NameService")); // Crer un tableau de noms NameComponent[] nsNom=new NameComponent[1]; // Initialiser le nom de l'objet Distant nsNom[0]=new NameComponent(" MaBanque",""); // Rcuprer la rfrence de l'objet distant partier du Naming Service Object remoteRef=root.resolve(nsNom); // Crer le reprsentant local de l'objet distant Banque b=BanqueHelper. narrow(remoteRef); // Invocation des mthodes distantes. b.verser(4000); b.retirer(2000); b.verser(1000);Compte cpte=b.getCompte(); System.out.println("Code="+cpte.code+"Solde="+cpte.solde); }catch (Exception e) { e.printStackTrace();}}} 36
7- Lancement
1- Lancer le NamingService :
1- Lancer le Serveur :
39
7- Lancement
3 - Lancer le Client :
40
Une socit de bourse dispose dune base de donnes MySQL Nomme DB_BOURSE. Cette base de donnes stocke les cotations boursires de quelques socits. Ces donnes son stockes dans une table nomme COTATIONS dans la structure est la suivante :
41
On souhaite crer une application distribue qui se compose de : Un Servant qui permet de fournir dautres clients les informations sur les cotations dune socit donnes. Ce servant lui -mme fait appel aux diffrentes classes de la couche mtier qui sont lies la base de donnes. Le servant Corba ainsi que la couche mtier sont dploys dans un serveur administr par la bourse des cotations. Ce serveur contient galement le naming service.
La classe Persistante Cotation.java La classe MetierBourse qui contient deux mthodes : Une mthode qui permet de retourner une liste dobjets cotation dune socit donne en faisant le mapping objet relationnel. Une application Test.java pour tester cette mthode. Donner les cotations dune socit donne Donner la cotation moyenne dune socit donne ;
Une application Graphique SWIG Java qui sera dploye chez des banques et qui permet de :
Saisir le code de la socit Afficher les cotations ou la cotation moyenne de la socit saisie.
42
Architecture 1
43
public class Cotation implements Serializable { private long numCotation; private String codeSociete; private Date dateCotation; private double valAction; public Cotation() { } public String toString(){ return("Num="+numCotation+" Date="+dateCotation+ " Socit= "+codeSociete +" Val Action=" +valAction); } // Getters // Setters }
44
:Cotation
numCot = 2 dateCot= valAction= codeSoc=SGMB
:Cotation
numCot = 3 dateCot= valAction= codeSoc=SGMB
45
Travail demand
Crer le ficher IDL Faire la compilation IDL Crer le servant Crer le serveur Corba Crer le client Dployer et Tester votre projet
46