// CountClient.java import Counter.*; import org.omg.CosNaming.*; import org.omg.CosNaming.NamingContextPackage.*; import org.omg.CORBA.*; class CountClient { static Count countImpl; 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(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 time long startTime = System.currentTimeMillis(); // Increment 1000 times System.out.println(\"Incrementing\"); for (int i = 0 ; i < 1000 ; i++ ) { countImpl.increment(); } // Calculate stop time; print out statistics long 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 { static public void 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.*; public class CountClientApplet extends java.applet.Applet { private TextField countField, pingTimeField; private Button runCount; private Counter.Count counter; public void 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 time long startTime = System.currentTimeMillis(); // Increment stopCount times for (int i = 0 ; i < stopCount ; i++ ) { counter.increment(); } // Calculate stop time; show statistics long 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(); } return true; } return false; } } // CountImpl.java: The Count Implementation class CountImpl extends Counter.CountPOA { private int sum; // Constructors CountImpl(String name) { super(); System.out.println(\"Count Object Created\"); sum = 0; } // get sum public int sum() { return sum; } // set sum public void sum(int val) { sum = val; } // increment method public int 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>