CSA, week 31 CSA week 3
CSA, week 32 Terugblik opdracht (client) Stub creëren uitgaande van IOR ( string_to_object ) of stub creëren uitgaande van objectnaam ( bind ) Dit geeft referentie naar CORBA object (van klasse org.omg.CORBA.Object) Met narrow dit object omzetten naar object van klasse van CORBA object dit is de stub
CSA, week 33 Terugblik opdracht (client) In opdracht 2 CORBA Object CORBA_ballMover Stub kan gebruikt worden alsof het het CORBA object zelf is cball = bm_stub.roll(cball)
CSA, week 34 Terugblik opdracht (server) CORBA object van klasse: CORBA_ballMoverServant Deze bevat implementatie van methode roll uit interface CORBA_ballMover In de implementatie van deze roll wordt, net zoals in de client, gebruik gemaakt van een object van klasse ballMover en bijbehorende roll- methode (zie opdracht 1)
CSA, week 35 Terugblik opdracht (server) Server maakt het CORBA-object aan cbms=new CORBA_ballMoverServant(..) Deze wordt aan de ORB aangeboden orb.connect(cbms) en verkrijgt daarmee het unieke IOR Object kan ook met naam worden gecreëerd cbms=new CORBA_ballMoverServant(..,”naam”) zmaakt gebruik van Smart Agent (1 niveau)
CSA, week 36 CORBA model stub ORB CORBAobjectskeleton methodes, gegenereerd vanuit IDL- script CORBA-methodes, gedefinieerd door de programmeur REQUEST met methodenaam, in-parameters REPLY met functiewaarde, out-parameters methode-aanroep met parameters functie-waarde en result parameters ClientServer new connect init String_to_object/bind + narrow
CSA, week 37 CORBA OBJECT SERVICES NAMING SECURITY LIFECYCLEEVENT OBJECT REQUEST BROKER TRANSACTIONS COLLECTIONSCONCURRENCY TRADER QUERY
CSA, week 38 Naming Service zMeerdere niveaus van naamgeving Geïmplementeerd door middel van gewone CORBA objecten van klasse: NamingContext Naming Server is een afzonderlijk (server) proces met objecten van de klasse NamingContext Gewone servers en clients moeten stubs maken voor NamingContext objecten.
CSA, week 39 NamingContext zIs tabel van namen en IOR’s zTe vergelijken met directory in filesysteem In een NamingContext kunnen weer andere NamingContext ’s staan zGeeft een boomstructuur met één root
CSA, week 310 Initialisatie Bij initialisatie orb properties instellen: props.put("SVCnameroot","CSA"); CSA is naam van root- NamingContext; zelf instelbaar! zSmart Agent wordt gebruikt om een bepaalde Naming Server te vinden
CSA, week 311 Stub voor NamingContext Stub voor root is altijd te verkrijgen d.m.v. resolve_initial_references Dit levert een org.omg.CORBA.Object op dat ge- narrow -ed moet worden, m.b.v. methode uit klasse NamingContextHelper zorg.omg.CORBA.Object ref_rootnc = orb.resolve_initial_references("NameService"); NamingContext stub_rootnc = NamingContextHelper.narrow(ref_rootnc);
CSA, week 312 Naming Service Uitgaande van de root NamingContext kun je de hele boom doorlopen NamingContext ‘s kunnen allemaal in dezelfde server zitten, maar kunnen ook gedistribueerd zijn over een netwerk.
CSA, week 313 Methodes van klasse NamingContext bind / rebind (server): zelfgekozen naam koppelen aan object; bind geeft foutmelding bij bestaande naam, rebind niet unbind (server): om naam/object koppeling te verwijderen uit NamingContext destroy (server): om NamingContext te verwijderen
CSA, week 314 Methodes van klasse NamingContext bind_new_context (server): om een nieuwe NamingContext te creëren en in de huidige NamingContext op te nemen met een bepaalde naam; je krijgt een verwijzing naar de nieuwe context terug resolve (client): om referentie naar object te vinden uitgaande van naam
CSA, week 315 NameComponent Namen zijn arrays van NameComponent ’s Elke NamingContext in eigen NameComponent Laatste NameComponent verwijst naar CORBA object NameComponent heeft 2 velden: naam en type. Type kan gebruikt worden door applicaties, meestal lege string
CSA, week 316 Voorbeeld Aan server-kant: NameComponent[] paulName = {new NameComponent("red",""), new NameComponent("paul","")}; stub_rootnc.rebind(paulName,cbms) Aan client-kant NameComponent[] paulName = {new NameComponent("red",""), new NameComponent("paul","")}; org.omg.CORBA.Object ref = stub_rootnc.resolve(paulName); CORBA_ballMover cbms = CORBA_ballMoverHelper.narrow(ref);