CORBA Cvien 10 vod n Filozofie CORBA n
CORBA Cvičení č. 10
Úvod n Filozofie CORBA n Nezávislý implementační jazyk n Nezávislý komunikační protokol n Nezávislý operační systém
Datové typy n boolean n enum n char n struct n octet n union n short n any n long n in n float n out n double n inout n string
Příklad - IDL module Remote Time { interface My Remote Time { string get Time (); }; }; Pro klientskou aplikaci jsou vytvořeny tyto třídy: n My Remote. Time. java obsahuje rozhraní definované v IDL. n My. Remote. Time. Stub. java n My. Remote. Time. java je třída poskytující metody: extract(), insert() sloužící k zapouzdření objektu do datového typu any. n narrow() jenž slouží k přetypování na stejný typ jako je daná třída n bind() n My. Remote. Time. Holder. java obsahuje třídy umožňující předat objekt referencí n
Příklad - čas Pro stranu serveru jsou pak vygenerována třída: n _My. Remote. Time. Impl. Base. java což je abstraktní třída pro vzdálený objekt, z které se musí zdědit nová třída a implementovat její abstraktní metody. Implementace metod vzdálených objektů. Vytvoříme novou třídu My. Remote. Time. Impl zděděním z abstraktní třídy _My. Remote. Time. Impl. n V metodě main pak provedeme: n vytvoření instance ORBu n vytvoření instance vydáleného objektu n získání reference na jmenný kontext, ve kterém objekt zaregistrujeme n registraci objektu My. Remote. Time
Příklad - server import Remote. Time. *; import org. omg. Cos. Naming. Context. Package. *; import org. omg. CORBA. *; import java. util. *; import java. text. *; class My. Remote. Time. Impl extends _My. Remote. Time. Impl. Base { public String get. Time(){ return new Date(). to. String(); } }
Příklad - server public class Remote. Time. Server{ public sratic void main (String args[]){ try{ ORB orb = Orb. init(args, null); My. Remote. Time. Impl server = new My. Remote. Time. Impl(); orb. connect(server); org. omg. CORBA. Object obj. Ref = orb. resolve_initial_reference("Name Service"); Naming. Context nc. Ref = Naming. Context. Helper. narrow(obj. Ref); Name. Component nc = new Name. Component ("My. Remote. Time", ""); Name. Component path [] = {nc}; nc. Ref. rebind (path, server); java. lang. Object sync = new java. lang. Object(); synchronized (sync) { sync. wait(); } }catch (Expection e ) {//. . . } } }
Příklad - klient public class Remote. Time. Client { public static void main (string args[]) { try { Orb orb = ORB. init (args, null); org. omg. CORBA. Object obj. Ref = orb. resolve_initial_reference("Naming Service "); Naming. Context nc. Ref = Naming. Context. Helper. narrow(obj. Ref); Name. Component nc = new Name. Component("My. Remote. Time", ""); Name. Component path[] = {nc}; My. Remote. Time time = My. Remote. Time. Helper. narrow (nc. Ref. resolve(path)); String n. Time = time. get. Time(); System. out. printl(n. Time); } catch (Expection e) {//} } }
- Slides: 8