Write a CORBA program for displaying following things on the client machine. a. the date and time of the server machine b. the date and time of the client machine c. the difference between these two date and time.
// GetDateModule.idl module GetDateModule { interface GetDate { string get_date(); longlong get_time(); }; }; // GetDateImpl// Contains the implementation of the methods defined in the IDL file. import GetDateModule.GetDatePOA; import java.lang.String; import java.util.Date; class GetDateImpl extends GetDatePOA { Date dt=new Date(); GetDateImpl() { super(); System.out.println("Encriptor Object Created"); } public String get_date() { String time=dt.toString(); return (time); } publiclong get_time() { return(dt.getTime()); } } // GetDateServer.java import GetDateModule.GetDate; import org.omg.CosNaming.*; import org.omg.CosNaming.NamingContextPackage.*; import org.omg.CORBA.*; import org.omg.PortableServer.*; class GetDateServer { publicstaticvoid main(String[] args) { try { // initialize the ORB org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args,null); // initialize the BOA/POA POA rootPOA = POAHelper.narrow(orb.resolve_initial_references("RootPOA")); rootPOA.the_POAManager().activate(); // creating the GetDate object GetDateImpl GetDate = new GetDateImpl(); // get the object reference from the servant class org.omg.CORBA.Object ref = rootPOA.servant_to_reference(GetDate); System.out.println("Step1"); GetDate h_ref = GetDateModule.GetDateHelper.narrow(ref); System.out.println("Step2"); org.omg.CORBA.Object objRef =orb.resolve_initial_references("NameService"); System.out.println("Step3"); NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef); System.out.println("Step4"); String name = "GetDate"; NameComponent path[] = ncRef.to_name(name); ncRef.rebind(path,h_ref); System.out.println("GetDate Server reading and waiting...."); orb.run(); } catch(Exception e) { e.printStackTrace(); } } } // GetDateClient.java import GetDateModule.*; import org.omg.CosNaming.*; import org.omg.CosNaming.NamingContextPackage.*; import org.omg.CORBA.*; import java.io.*; import java.lang.String; import java.util.Date; class GetDateClient { publicstaticvoid main(String args[]) { GetDate GetDateImpl=null; int i; try { // initialize the ORB org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args,null); org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef); String name = "GetDate"; GetDateImpl = GetDateHelper.narrow(ncRef.resolve_str(name)); Date dt=new Date(); long clientTime=dt.getTime(); System.out.println("Client Date and Time="+dt); String serverDate=(String) GetDateImpl.get_date(); long serverTime=(long) GetDateImpl.get_time(); System.out.println("Server Date and Time="+serverDate); System.out.println("Time Difference in Server and Client(in millisecond)="+(clientTime-serverTime)); } catch(Exception e) { e.printStackTrace(); } } } // OUTPUT Client Date and Time=Thu Dec 04 16:20:22 IST 2005 Server Date and Time=Thu Dec 04 16:20:16 IST 2005 Time Difference in Server and Client(in millisecond)=5248