Corba: Invocación Estática
Información
Tecnologías de objetos distribuidos:
CORBA: Invocación estática
Agradecimientos: Jesus Villamor Lugo, Simon Pickin de IT/UCIIIM, Juan Pavón UCM
1
Ejemplo CORBA
Servidor Corba que actua como una calculadora
Los clientes se conectan al servidor y le piden
que ejecute una operación
Suma
División
En la petición van incluidos los parámetros
necesarios pararealizar la operación
El servidor una vez realizada la operación
devuelve el resultado
2
Construcción de una aplicación
CORBA
Especificación
Calculator.idl
IDL
Compilación
IDL
CalculatorOperations.java
Calculator.java
CalculatorHelper.java
CalculatorHolder.java
Implementación
del Cliente
Client.java
CalculatorStub.java
CalculatorPOA.java
Implementación
de lainterfaz
CalculatorPOAImpl.java
Implementación
del Servidor
ServerPOA.java
3
CORBA Ejemplo 1
Declarando Interfaz en IDL
// Descripcion de una excepcion
exception DivisionPorCero{
float op1;
float op2;
};
interface Calculator{
// operacion de Suma
float add ( in float nb1, in float nb2 );
// operacion de Division
float div ( in float nb1, in float nb2 ) raises (DivisionPorCero );
};
(*) Ejemplo tomado de http://www.programacion.com/tutorial/acscorba
4
Compilación de la interfaz
Calculator.idl
> idl2java Calculator.idl
Compilador
IDL a Java
Servidor
Cliente
Calculator_Stub
Calculator_Stub
CalculatorHolder
CalculatorHolder
CalculatorHelper
CalculatorHelper
Client.java
Calculator
Calculator
CalculatorPOA
CalculatorPOACalculatorOperations
CalculatorOperations
ServerPOA.java
CalculatorPOAImpl.java
Ficheros generados por el compilador idl
Ficheros generados por el programador
5
Compilando la interfaz
Calculator y CalculatorOperations
CalculatorOperations Interfaz Java que define todos los
métodos correspondientes a la interfaz idl. Es la que implementa el
servant
Cada operación de lainterfaz corresponde a un método java
Cada atributo del interfaz corresponde a dos métodos java (leer, escribir)
public interface CCalculatorOperations {{
public interface alculatorOperations
//...
//...
float add(float nnb1, float nb2);
float add(float b1, float nb2);
float div(float nnb1, float nb2);
float div(float b1, float nb2);
}}
Calculator Interfaz java que extiende a laanterior. Es la que
implementa el stub
public interface CCalculator extends CCalculatorOperations,
public interface alculator extends alculatorOperations,
org.omg.CORBA.Object,
org.omg.CORBA.Object,
org.omg.CORBA.portable.IDLEntity {...}
org.omg.CORBA.portable.IDLEntity {...}
6
Compilando la interfaz
Calculator_Stub.java
Clase java que implementa el stub de la interfaz
Calculator en ellado del cliente
Hace marshalling (serialización) para los parámetros de cada
método de la interfaz antes de pasárselos al ORB. (También
unmarshalling en la recepción)
Define también su propio constructor y otros métodos de apoyo
(Comprobar en prácticas editando el fichero)
public class Calculator_Stub
public class Calculator_Stub
extends org.omg.CORBA.portable.ObjectImpl
extendsorg.omg.CORBA.portable.ObjectImpl
implements Calculator{
implements Calculator{
// ...
// ...
}
}
7
Compilando la interfaz
CalculatorHelper
Clase Java que proporciona métodos estáticos útiles
para los usuarios de objetos Calculator (cliente y
servidor).
Por ejemplo método narrows para convertir de objetos
Corba genéricos a objetos Calculator
final public class CalculatorHelper {final public class CalculatorHelper {
public static void insert(org.omg.CORBA.Any any, Calculator val)
public static void insert(org.omg.CORBA.Any any, Calculator val)
{...}
{...}
public static Contador extract(org.omg.CORBA.Any any) {...}
public static Contador extract(org.omg.CORBA.Any any) {...}
public static Contador narrow (org.omg.CORBA.Object val) {...}
public static Contador narrow...
Regístrate para leer el documento completo.