---------------------------------------------------------------------------------- IDL ---------------------------------------------------------------------------------- module CalcApp { interface Calc { float add(in float value1,in float value2); float sub(in float value1,in float value2); float multi(in float value1,in float value2); float div(in float value1,in float value2); oneway void shutdown(); }; }; ---------------------------------------------------------------------------------- Server ---------------------------------------------------------------------------------- import CalcApp.*; import org.omg.CosNaming.*; import org.omg.CosNaming.NamingContextPackage.*; import org.omg.CORBA.*; import org.omg.PortableServer.*; import org.omg.PortableServer.POA; import java.util.Properties; class CalcImpl extends CalcPOA { private ORB orb; public void setORB(ORB orb_val) { orb = orb_val; } public float add(float val1, float val2) { float res = val1 + val2; return res; } public float sub(float val1, float val2) { float res = val1 - val2; return res; } public float multi(float val1, float val2) { float res = val1 * val2; return res; } public float div(float val1, float val2) { float res = val1 / val2; return res; } public void shutdown() { orb.shutdown(false); } } public class CalcServer { public static void main(String args[]) { try { ORB orb = ORB.init(args, null); POA rootpoa = POAHelper.narrow(orb.resolve_initial_references(\"RootPOA\")); rootpoa.the_POAManager().activate(); CalcImpl calcImpl = new CalcImpl(); calcImpl.setORB(orb); org.omg.CORBA.Object ref = rootpoa.servant_to_reference(calcImpl); Calc href = CalcHelper.narrow(ref); org.omg.CORBA.Object objRef = orb.resolve_initial_references(\"NameService\"); NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef); String name = \"Calc\"; NameComponent path[] = ncRef.to_name( name ); ncRef.rebind(path, href); System.out.println(\"CalculatorServer ready and waiting ...\"); orb.run(); } catch (Exception e) { System.err.println(\"ERROR: \" + e); e.printStackTrace(System.out); } System.out.println(\"CalculatorServer Exiting ...\"); } } ------------------------------------------------------------------------------------------------- Client ------------------------------------------------------------------------------------------------- import CalcApp.*; import org.omg.CosNaming.*; import org.omg.CosNaming.NamingContextPackage.*; import org.omg.CORBA.*; import java.io.*; public class CalcClient { public void showMenu() { System.out.println(\"----------------------------------\"); System.out.println(\"0.Exit\"); System.out.println(\"1.Addition\"); System.out.println(\"2.Subtraction\"); System.out.println(\"3.Multiplicatin\"); System.out.println(\"4.Division\"); System.out.println(\"----------------------------------\"); System.out.print(\"Enter your choice : \"); } public float getValue() throws IOException { float val=0; try { System.out.print(\"Enter the value : \"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s = br.readLine(); val = Float.parseFloat(s); } catch (IOException e) { System.out.println(e); } return val; } public int getChoice() throws IOException { int val=0; try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); val = Integer.parseInt(br.readLine()); System.out.println(\"----------------------------------\"); } catch (IOException e) { System.out.println(e); } return val; } public static void main(String args[]) { Calc calcImpl = null; CalcClient cc = new CalcClient(); try { ORB orb = ORB.init(args, null); org.omg.CORBA.Object objRef = orb.resolve_initial_references(\"NameService\"); NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef); String name = \"Calc\"; calcImpl = CalcHelper.narrow(ncRef.resolve_str(name)); float val1 = 0; float val2 = 0; float res = 0; int ch = 1; while (ch != 0 ) { cc.showMenu(); ch = cc.getChoice(); val1 = cc.getValue(); val2 = cc.getValue(); switch (ch) { case 1: res = calcImpl.add(val1, val2); break; case 2: res = calcImpl.sub(val1, val2); break; case 3: res = calcImpl.multi(val1, val2); break; case 4: res = calcImpl.div(val1, val2); break; case 0: exit(0); } System.out.println(\"----------------------------------\"); System.out.println(\"Result : \"+res); System.out.println(\"----------------------------------\"); } calcImpl.shutdown(); } catch (Exception e) { System.out.println(\"ERROR : \" + e) ; e.printStackTrace(System.out); } } } ------------------------------------------------------------------------------------------------- Output ------------------------------------------------------------------------------------------------- ---------------------------------- 0.Exit 1.Addition 2.Subtraction 3.Multiplicatin 4.Division ---------------------------------- Enter your choice : 2 ---------------------------------- Enter the value : 20.5 Enter the value : 10.2 ---------------------------------- Result : 10.3 ---------------------------------- ---------------------------------- 0.Exit 1.Addition 2.Subtraction 3.Multiplicatin 4.Division ---------------------------------- Enter your choice : 0