Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

OOT Seminar H-97 CORBA Praktisk del. Valg av ORB implementasjon n Har valgt å bruke Visigenic sin ORB implementsjon n ORB’en er 100% Java kodet n Bygger.

Liknende presentasjoner


Presentasjon om: "OOT Seminar H-97 CORBA Praktisk del. Valg av ORB implementasjon n Har valgt å bruke Visigenic sin ORB implementsjon n ORB’en er 100% Java kodet n Bygger."— Utskrift av presentasjonen:

1 OOT Seminar H-97 CORBA Praktisk del

2 Valg av ORB implementasjon n Har valgt å bruke Visigenic sin ORB implementsjon n ORB’en er 100% Java kodet n Bygger på OMG sin ”IDL to Java language mapping” fra Jun 97 n Gratis prøveversjon i 1 mnd.

3 ”Counter” eksempel n Formål Beregne gjennomsnittstiden det tar for en klient å utføre en metode på et serverobjekt. Eksempel hentet fra Client/Server Programming with Java and CORBA Robert Orfali, Dan Harkey

4 Ide / Tidlig klassediagram CountServer CountClient Count > // Increment 1000 times for (int i = 0 ; i < 1000 ; i++ ) { counter.increment(); } public int increment() { sum++; return sum; }

5 Interface Defenition Language n Count Interfacet nedfelt i IDL module Counter { interface Count { attribute long sum; long increment(); }; }; Count > sum : long increment( ) : long

6 IDL til Java n Prekompilering idl2java count.idl n Produktet blir en ”Java Package” med navn Counter (navnet på modulen)

7 Hva generer idl2java kompilatoren n Count.java n _sk_Count.java CountImplBase.java n CountHelper.java n CountHolder.java (leverer container obj) n _st_Count.java n _tie_Count.java n CountOperations.java

8 Count.java package Counter; public interface Count extends org.omg.CORBA.Object { public void sum(int sum); public int sum(); public int increment(); } module Counter { interface Count { attribute long sum; long increment(); }; }; n Interface til Count objekt Count.idl Count.java

9 _st_Count.java n Java klasse for ”stub” kode n implementerer interface Count på klient siden n blir også kalt ”clientproxy” n denne klassen blir ikke direkte brukt av programmerere

10 Klassediagram Count > _sk_Count CountServer main( ) CountClient main( ) CountImpl 1 1..* 1 Server Client

11 Implementasjon CountImpl class CountImpl extends Counter._sk_Count implements Counter.Count { private int sum; // Constructor CountImpl(String name) { super(name); System.out.println("Count Object Created"); sum = 0; } // get sum public int sum() throws org.omg.CORBA.SystemException { return sum; } // set sum public void sum(int val) throws org.omg.CORBA.SystemException { sum = val; } // increment method public int increment() throws org.omg.CORBA.SystemException { sum++; return sum; }

12 Imlementasjon CountServer // CountServer.java: The Count Server main program class CountServer { static public void main(String[] args) { try { // Initialize the ORB. org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(); // Initialize the BOA. org.omg.CORBA.BOA boa = orb.BOA_init(); // Create the Count object. CountImpl count = new CountImpl("My Count"); // Export to the ORB newly created object. boa.obj_is_ready(count); // Ready to service requests. boa.impl_is_ready(); } catch(org.omg.CORBA.SystemException e) { System.err.println(e); }

13 Implementajson av CountClient // CountClient.java Static Client, VisiBroker for Java class CountClient { public static void main(String args[]) { try { // Initialize the ORB System.out.println("Initializing the ORB"); org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(); // Bind to the Count Object System.out.println("Binding to Count Object"); Counter.Count counter = Counter.CountHelper.bind(orb,"My Count");

14 // Set sum to initial value of 0 System.out.println("Setting sum to 0"); counter.sum((int)0); // Calculate Start time long startTime = System.currentTimeMillis(); // Increment 1000 times System.out.println("Incrementing"); for (int i = 0 ; i < 1000 ; i++ ) { counter.increment(); } // Calculate stop time; print out statistics long stopTime = System.currentTimeMillis(); System.out.println("Avg Ping = " + ((stopTime - startTime)/1000f) + " msecs"); System.out.println("Sum = " + counter.sum()); } catch(org.omg.CORBA.SystemException e) { System.err.println("System Exception"); System.err.println(e); }

15 Kjøring av eksempelet n Set CLASSPATH n Kompiler alle Java-klassene n Start: osagent (er en name service) n Start: java CountServer n Start: java CountClient

16 Resultat av kjøringen > java CountServer Count Object Created > java CountClient Initializing the ORB Binding to Count Object Setting sum to 0 Incrementing Avg Ping = 5.28 msecs Sum = 1000


Laste ned ppt "OOT Seminar H-97 CORBA Praktisk del. Valg av ORB implementasjon n Har valgt å bruke Visigenic sin ORB implementsjon n ORB’en er 100% Java kodet n Bygger."

Liknende presentasjoner


Annonser fra Google