Anda di halaman 1dari 4

Ejemplo Sencillo en Corba

Este es un ejemplo sencillo en CORBA, el cual almacena 10 valores en un vector y realiza la suma de los valores impares y la suma de los valores pares. Primeramente tenemos que crear un IDL, en un blog de notas colocamos el siguiente cdigo y lo guardamos como MiProg.idl. module MiProg { typedef sequence num; interface Tarea5 { longsumapar (in num nums); long sumaimp (in num nums); }; }; Lo compilamos de la siguiente manera en simbolo del sistema, nos vamos a la ruta donde guardamos el archivo y colocamos: idlj -fall MiProg.idl Generar una carpeta con el nombre MiProg y tendra varios archivos. El siguiente paso es crear el Cliente, colocamos el siguiente cdigo y lo guardamos de la siguiente manera: import MiProg.*; import org.omg.CosNaming.*; import org.omg.CORBA.*; import java.io.*; public class Cliente { public static void main(String args[]) throws IOException { try { ORB orb = ORB.init(args, null);

org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); NamingContext ncRef = NamingContextHelper.narrow(objRef); NameComponent nc = new NameComponent("Servidor", " "); NameComponent path[] = {nc}; Tarea5 sRef = Tarea5Helper.narrow(ncRef.resolve(path)); int num[] = new int[10]; BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in)); for (int i = 0; i<10; i++) { System.out.println("Teclea un numero"); num[i]= Integer.parseInt(entrada.readLine()); } System.out.println("La suma de los numeros pares: " + sRef.sumapar(num)); System.out.println("La suma de los numeros pares: " + sRef.sumaimp(num)); } catch(Exception e) { System.out.println("Error: " + e); e.printStackTrace(System.out); } } } Para compilarlo solo ponemos el siguiente cdigo: javac Cliente.java Ahora crearemos el servidor: y lo guardarremos como Servidor.java import MiProg.*; 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; public class Servidor { public static void main(String args[]) { try { ORB orb = ORB.init(args, null); POA rootpoa = (POA)orb.resolve_initial_references("RootPOA");

rootpoa.the_POAManager().activate(); Siervo svRef = new Siervo(); svRef.setORB(orb); org.omg.CORBA.Object ref = rootpoa.servant_to_reference(svRef); Tarea5 sRef = Tarea5Helper.narrow(ref); org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); NamingContext ncRef = NamingContextHelper.narrow(objRef); NameComponent nc = new NameComponent("Servidor", " "); NameComponent path[]={nc}; ncRef.rebind(path, sRef); System.out.println("Servidor preparado y esperando peticiones..."); orb.run(); } catch(Exception e) { System.err.println("Error: " + e); e.printStackTrace(System.out); } } } class Siervo extends Tarea5POA { private ORB orb; public void setORB(ORB orb_val) { orb = orb_val; } public int sumapar(int [] nums) { int sum = 0; for(int i = 0; i<10; i++) { if (nums[i]%2==0) sum = sum + nums[i]; } return sum; }

public int sumaimp(int [] nums) { int sum = 0; for(int i = 0; i<10; i++) { if (nums[i]%2!=0) sum = sum + nums[i]; } return sum; } } Lo compilamos como Servidor.java de la siguiente manera: javac Servidor.java Ahora para correrlo seguimos los siguientes codigos en simbolo del sistema: orbd -ORBInitialPort 1050 -ORBInitialHost localhosts En otra ventana: java Servidor -ORBInitialPort 1050 -ORBInitialHost localhosts En otra ventana: java Cliente -ORBInitialPort 1050 -ORBInitialHost localhosts

Anda mungkin juga menyukai