Construction d applications r[Please insert PrerenderUnicode{é} into preamble]parties - Cours 3
22 pages

Construction d'applications r[Please insert PrerenderUnicode{é} into preamble]parties - Cours 3

Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
22 pages
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

Constructiond’applicationsr´epartiesGilles RousselConstruction d’applications r´epartiesLa d´el´egationCours 3L’ORBIORLe service denommage Gilles RousselGilles.Roussel@univ-mlv.frURLhttp://igm.univ-mlv.fr/~roussel/CORBA/IR317 octobre 2006Gilles Roussel Construction d’applications r´epartiesL’approche par d´el´egationConstructiond’applicationsr´epartiesGilles RousselPermet `a un servant d’h´eriter d’autre chose que du POALa d´el´egation En particulier, utile en cas d’h´eritage d’interface en IDLL’ORBN´ecessit´e de g´en´erer une classe tieIOROption -fallTIE pour la commande idljLe service denommage Classe tie h´erite de la classe POALes op´erations de l’interface sont d´el´egu´ees `a une instanceURLd’une autre classe pass´ee en argument lors de laconstructionUne instance de la classe tie est activ´ee au sein du POA `ala place de la classe d’implantationGilles Roussel Construction d’applications r´epartiesLa classe d’implantationConstructiond’applicationsr´epartiesGilles RousselLa d´el´egationpackage fr.umlv.ir3.corba.cours2;L’ORBIORpublic class HelloServant implements HelloOperations {Le service depublic String hello(String localisation) {nommagereturn "Hello " + localisation;URL}}Gilles Roussel Construction d’applications r´epartiesLa classe serveurConstructiond’applicationsr´epartiespackage fr.umlv.ir3.corba.cours2;Gilles Roussel import org.omg.CORBA.ORB;import org.omg.PortableServer.POA;import org.omg ...

Informations

Publié par
Nombre de lectures 35

Extrait

Constructiondappilacitnorse´apiertilsGsRlessouaLlele´dage´noitBIORLORrvicLesemoamdeneLegRUessuoRselliGandioctrustonlCeitr
IR3
17 octobre 2006
s
Constructiondapplicationsre´parties Cours 3
Gilles Roussel Gilles.Roussel@univ-mlv.fr http://igm.univ-mlv.fr/~roussel/CORBA/
lippticasronpa´e
Cnotsurtctrape´rselliGseippandioonticalinoLagitROeLROIBsselsRouel´eLad´LURmoneegamvresdecileoCuosscuitsnrtlesRGilpe´ritra
Lapprochepard´ele´gation
se
Permet`aun servant dhe´riterdautrechosequeduPOA Enparticulier,utileencasdh´eritagedinterfaceenIDL N´ecessit´edege´ne´reruneclasse tie Option -fallTIE pour la commande idlj Classe tie he´ritedelaclassePOA Lesope´rationsdelinterfacesontd´el´egu´ees`auneinstance duneautreclassepasse´eenargumentlorsdela construction Une instance de la classe tie estactiv´eeauseinduPOA`a la place de la classe d’implantation
donplapaticnsio
geURLitnortculpcidpansr´atiotiesepar
package fr.umlv.ir3.corba.cours2;
public class HelloServant implements HelloOperations { public String hello(String localisation) { return "Hello " + localisation; } }
La classe d’implantation
GleilousRelssnsCocatipplindactiotsurCnoedenommaLeservicLROIBROe´agitnoLaeleld´sRlessoueitrliGsrsnoape´
eis
public class HelloServer { public static void main(String[] args) throws Exception { ORB orb = ORB.init(args, null); org.omg.CORBA.Object o = orb.resolve initial references("RootPOA") POA rootPOA = POAHelper.narrow(o); HelloServant servant = new HelloServant(); HelloPOATie helloTie = new HelloPOATie( servant ) ; byte[] id = rootPOA.activate object( helloTie ); o = rootPOA.id to reference(id); String reference = orb.object to string(o); System.out.println(reference); rootPOA.the POAManager().activate(); System.out.println("Server running !"); orb.run(); } }
La classe serveur
package fr.umlv.ir3.corba.cours2; import org.omg.CORBA.ORB; import org.omg.PortableServer.POA; import org.omg.PortableServer.POAHelper;
licationsr´epartegammonedecivresLeORBIORLontigaURLacilnoitdnoippastonctruCaL´dlee´RsuossleiesGillesr´epartonstructiondappiGllseoRsuesCl
onsr´epapplicatitcoidnaCnotsurga´eontiLaeleld´RselssuoeitrliGsLgeURommaedenvrcieLesIBROLROnsCouctrousRelssGelliapdontiioaticplrape´rsn
ORB.init(String[] args, Properties props); permetdecr´eerunobjetORBpouruneapplicationla m´ethodeaappelerpourinitialiserlORB ` « D´emarre » le serveur args et props permettentdeparam´etrerlORB Parmilespropri´ete´spossibles: org.omg.CORBA.ORBClass et org.omg.CORBA.ORBSingletonClass : classes d’implantation de l’ORB (standard) org.omg.CORBA.ORBInitialHost et org.omg.CORBA.ORBInitialPort : machine et port du service de nommage (standard) com.sun.CORBA.ORBServerHost et com.sun.CORBA.ORBServerPort : machine et port dattentedelORB(spe´ciqueSun)
L’initialisation de l’ORB
seit
uoRslesssnoCcurtontiapdicplioatsn´rperaitse
Plusieursfa¸consdeparame´trerlORB: via lam´ethode init() Properties props = new Properties(); props.setProperty(" com.sun.CORBA.ORBServerPort ", "8080"); String[] argv = { " -ORBInitialPort ", "5656" } ; ORB orb = ORB.init( argv , props ); via lespropri´et´essyste`mes: java -Dorg.omg.CORBA.ORBInitialPort=8080 .... via le fichier orb.properties recherch´edaborddansle re´pertoireutilisateur,puisdans file:///$ { java.home } /lib
L’initialisation de l’ORB
lielGiGllitseperasn´r´el´lLadusseesRocurtsnoCioaticplapdontiUeLRBROLROItageLnoinodeagmmerescevi
LRgaUeedecmmonseLRivreOnLIORBegl´ioatesLldae´llseoRsuartiesGiionsr´eptacilppadnoitcutrnsCorsnoape´eitr
orb.init(...) demarre l’ORB ´ orb.run() bloqueleprocessusl´egercouranttantque lORBnestpasarreˆte´(plusieursappelsconcurrents possibles) orb.shutdown() permetdarrˆeterlORB.Largument bool´eenpre´cisesilappeldoitattendrelandelORB avant de retourner (attention au dead-lock )
Les ´etats de l’ORB
ssuesseoRtsurClnondactiocatipplillGi
iGllseoRs
Lese´tatsduPOA
LePOAracinere´cup´er´epar orb.resolve initial reference("RootPOA") est dans le´tat suspendu aussiatteintparappela` hold requests() desonmanagerre´cupe´re´parla me´thode the POAmanager() Passagedansle´tat actif via lam´ethode activate() de son manager L´etat rejet estatteintparlappel`a discard request() Le´tat inactif estatteintparlappel`a desactivate()
rtie´eparsnoitacilppadnioctrustonlCseusape´eitrliGsRselssouLaeleld´ga´eCnotsurtcoindapplicationsrLLROitnoeLesIBROedenrvicgeURomma
treis
IORcontienttouteslesinformationsne´cessaires(encod´ees en Common Data Representation ) pour retrouver un objet CORBA Pour l’implantation au dessus d’IP il contient : identificateur du type de l’objet nume´roIPduserveur port du serveur identificateur de l’objet Formatd´ecritenIDL IOR d’un objet obtenu par orb.object to string()
Interoperable Object Reference
norse´aplliGppilacittcoidnalConstruesRousseCnotsurtcoindapplicationsrape´eitrliGsRselssouLaeleld´ga´eLeseBIORLORtionegRUmoamdenevrciL
selliGseitrape´regl´´eadlLseusRocuitsnrtoCionsicatapplondRLationLORBIORLesreivecedonmmgaUelesRoussGilitcudnooClertsnnsioepr´plapatices
Le type des IOR Internet
arti
typedef unsigned long ProfileId; struct TaggedProfile { ProfileId tag; sequence <octet> profile data; }; struct IOR { string type id; sequence <TaggedProfile> profiles; }; struct Version { octet major; octet minor; }; typedef unsigned long ComponentId; struct TaggedComponent { ComponentId tag; sequence<octet> component_data; }; struct ProfileBody { Version iiop version; string host; unsigned short port; sequence <octet> object key; sequence<TaggedComponent> components; };
edecmmonselsivrepaheanssNe1rcma
ObjetsCORBAaccessibles`atraverslORB: orb.list initial services(); 1 Possibilite´dajouterdesre´f´erencesinitiales via laproprie´t´e standard : org.omg.CORBA.ORBInitRef Possibilite´dajouterunm´ecanismedere´solutiondes refe´rencesinitialesendonnantlURLduservicede ´ nommagea`lapropri´et´estandard: org.omg.CORBA.ORBDefaultInitRef
Lesr´efe´rencesinitiales
seitrpa´esronticalippdnatcoitsurClnousseesRoGillage!UegaLRedecmmonusRoesllGiestiarpe´rsnoitacilppaerviRLesRBIOnLOtaoi´lgedae´esLloCrtsnitcudno
  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents