import Counter.*; import org.omg.CosNaming.*; import org.omg.CosNaming.NamingContextPackage.*; import org.omg.CORBA.*; class CountClient { static Count countImpl; publicstaticvoid main(String args[]) { try { // Initialize the ORB System.out.println("Initializing the ORB"); org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, null); // get the root naming context org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); // Use NamingContextExt instead of NamingContext. This is // part of the Interoperable naming Service. NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef); // resolve the Object Reference in Naming String name = "Count"; countImpl = CountHelper.narrow(ncRef.resolve_str(name)); System.out.println("Obtained a handle on server object: " + countImpl); // Set sum to initial value of 0 System.out.println("Setting sum to 0"); countImpl.sum((int)0); // Calculate Start timelong startTime = System.currentTimeMillis(); // Increment 1000 times System.out.println("Incrementing"); for (int i = 0 ; i < 1000 ; i++ ) { countImpl.increment(); } // Calculate stop time; print out statisticslong stopTime = System.currentTimeMillis(); System.out.println("Avg Ping = " + ((stopTime - startTime)/1000f) + " msecs"); System.out.println("Sum = " + countImpl.sum()); } catch(Exception e) { System.err.println("System Exception"); System.err.println(e); } } } // CountServer.java: The Count Server main program import Counter.*; import org.omg.CosNaming.*; import org.omg.CosNaming.NamingContextPackage.*; import org.omg.CORBA.*; import org.omg.PortableServer.*; class CountServer { staticpublicvoid main(String[] args) { try { // Initialize the ORB org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, null); // Initialize the BOA POA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA")); rootpoa.the_POAManager().activate(); // Create the Count object CountImpl count = new CountImpl("My Count"); // get object reference from the servant org.omg.CORBA.Object ref = rootpoa.servant_to_reference(count); Count href = Counter.CountHelper.narrow(ref); // get the root naming context// NameService invokes the name service org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); // Use NamingContextExt which is part of the Interoperable// Naming Service (INS) specification. NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef); // bind the Object Reference in Naming String name = "Count"; NameComponent path[] = ncRef.to_name( name ); ncRef.rebind(path, href); System.out.println("HelloServer ready and waiting ..."); // wait for invocations from clients orb.run(); } catch(Exception e) { System.err.println(e); } } } // CountClientApplet.java Applet Client, VisiBroker for Java import Counter.*; import org.omg.CosNaming.*; import org.omg.CosNaming.NamingContextPackage.*; import org.omg.CORBA.*; import java.awt.*; publicclass CountClientApplet extends java.applet.Applet { private TextField countField, pingTimeField; private Button runCount; private Counter.Count counter; publicvoid init() { // Create a 2 by 2 grid of widgets. setLayout(new GridLayout(2, 2, 10, 10)); // Add the four widgets, initialize where necessary add(new Label("Count")); add(countField = new TextField()); countField.setText("1000"); add(runCount = new Button("Run")); add(pingTimeField = new TextField()); pingTimeField.setEditable(false); try { // Initialize the ORB. showStatus("Initializing the ORB"); org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(this, null); // Bind to the Count Object// get the root naming context org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); // Use NamingContextExt instead of NamingContext. This is // part of the Interoperable naming Service. NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef); // resolve the Object Reference in Naming String name = "Count"; counter = CountHelper.narrow(ncRef.resolve_str(name)); showStatus("Binding to Count Object"); } catch(Exception e) { showStatus("Applet Exception" + e); e.printStackTrace(System.out); } } public boolean action(Event ev, java.lang.Object arg) { if(ev.target == runCount) { try { // Set Sum to initial value of 0 showStatus("Setting Sum to 0"); counter.sum((int)0); // get data from and set value of applet fields showStatus("Incrementing"); int stopCount = Integer.parseInt(countField.getText()); pingTimeField.setText(" "); // Calculate Start timelong startTime = System.currentTimeMillis(); // Increment stopCount timesfor (int i = 0 ; i < stopCount ; i++ ) { counter.increment(); } // Calculate stop time; show statisticslong stopTime = System.currentTimeMillis(); pingTimeField.setText("Avg Ping = " + Float.toString((float)(stopTime- startTime)/stopCount) + " msecs"); showStatus("Sum = " + counter.sum()); } catch(Exception e) { showStatus("System Exception" + e); e.printStackTrace(); } returntrue; } returnfalse; } } // CountImpl.java: The Count Implementationclass CountImpl extends Counter.CountPOA { privateint sum; // Constructors CountImpl(String name) { super(); System.out.println("Count Object Created"); sum = 0; } // get sumpublicint sum() { return sum; } // set sumpublicvoid sum(int val) { sum = val; } // increment methodpublicint increment() { sum++; return sum; } } // Count Client Applet <h1>Count Client Applet</h1> <hr> <center> <APPLET CODE=CountClientApplet.class WIDTH=300 HEIGHT=60 CODEBASE=.> <PARAM name="org.omg.CORBA.ORBInitialHost"value=MCA329> <PARAM name="org.omg.CORBA.ORBInitialPort"value=1050> </APPLET> </center> <hr>
No comments:
Post a Comment