Corba

Solo disponible en BuenasTareas
  • Páginas : 6 (1294 palabras )
  • Descarga(s) : 0
  • Publicado : 18 de abril de 2011
Leer documento completo
Vista previa del texto
CORBA desde Java
1. Introducci´on
Este documento explica los primeros pasos para usar CORBA desde Java. Primero se
describe un ejemplo sencillo y luego se ofrece un cliente Java para el servidor visto en
C++. Con cualquier JDK se pueden realizar los ejemplos propuestos.
2. Primeros pasos
Para comprender el funcionamiento de CORBA desde Java, introduciremos un ejemplo
sencillo de unaaplicaci´on que define un IDL, un cliente y un servidor.
2.1. Fichero IDL
El fichero IDL, Calculadora.idl es el siguiente:
1 module prueba
{
3 interface Calculadora
{
5 double add (in double x, in double y);
1
double substract (in double x, in double y);
7 double multiply (in double x, in double y);
double divide (in double x, in double y);
9 void storeMemory (in double x);
doublereadMemory ();
11 };
};
Las funciones son las normales de una calculadora, como se puede ver.
Para generar los stubs y skeletons, hay que ejecutar el compilador de IDL. Lo ejecutamos
con la opci´on ((-fall)), para que genere tanto los stubs como los skeletons:
$ idlj -fall Calculadora.idl
Esto genera los ficheros de stub y skeleton dentro del subdirectorio ((prueba)):
$ ls prueba -C1CalculadoraHelper.java
CalculadoraHolder.java
Calculadora.java
CalculadoraOperations.java
CalculadoraPOA.java
_CalculadoraStub.java
2.2. Cliente
A continuaci´on se muestra el cliente (Cliente.java): Es un programa que es capaz
de utilizar el objeto Calculadora:
package prueba ;
2
import prueba .*;
4 import org . omg . CORBA .*;
import java .io .*;
6
8 public class Cliente
{
10 public staticvoid main ( String args [])
{
12 try {
14 // Iniciar el ORB
org . omg . CORBA . ORB orb = org . omg . CORBA .ORB . init (args , null );
16
// Leer el IOR del fichero
18 File IORFile = new File (" IOR ");
FileReader reader = new FileReader ( IORFile );
20 BufferedReader buf = new BufferedReader ( reader );
String IOR = buf . readLine ();
22
2
// Convertir el IOR en un objeto
24 org .omg . CORBA . Object o = orb . string_to_object ( IOR );
Calculadora calc = CalculadoraHelper . narrow (o);
26
// Usar la calculadora
28 System .out . println ( calc .add (2.0 ,3.0) );
30 } catch ( Exception e) {
e. printStackTrace ();
32 }
}
34 }
El cliente realiza las siguientes labores:
L´ýnea 3: Incluye el paquete con el stub para el tipo de objeto Calculadora.
L´ýnea 15: Se iniciael ORB. Normalmente, el ORB se implementa como una funci´on
de librer´ýa. Esta llamada realiza todas las funciones de inicializaci´on para el ORB.
L´ýnea 24: Se utiliza la operaci´on del ORB string to object para convertir el
IOR dado en la l´ýnea de comando como primer par´ametro en una referencia a un
objeto CORBA. Todos los objetos CORBA heredan de la interfaz CORBA::Object(org.omg.CORBA.Object).
L´ýnea 25: El m´etodo narrow de la clase CalculadoraHelper (generado autom´aticamente)
se utiliza para especializar la referencia obtenida a un objeto del tipo
espec´ýfico. En este caso Calculadora. La funci´on devolver´a en calc la referencia
especializada a un objeto de tipo Calculadora, o ((null)) si la conversi´on no se
puede realizar
L´ýnea 28: Se realiza la llamada propiamentedicha. La abstracci´on proporcionada
por CORBA permite hacer una llamada al objeto remoto como si fuera un objeto
local. El resultado se imprime por la pantalla.
2.3. Implementaci´on del servant
Para implementar un objeto CORBA, esto es, para ofrecer sus servicios al mundo, se
tienen que implementar dos cosas:
El servant que contiene la implementaci´on de los m´etodos del interfaz que seofrece
al exterior,
y un servidor, que quedar´a esperando conexiones en un puerto IP.
El servant es simplemente un objeto del lenguaje de programaci´on (en este caso Java)
que implementa la funcionalidad de los m´etodos del objeto CORBA. Este servant es
llamado por el skeleton cuando un cliente llama a un m´etodo del objeto CORBA implementado
por ese servant. El c´odigo del servant es el que...
tracking img