Corba ejemplos
VIII Common Object Request Broker Architecture (CORBA)
Common Object Request Broker Architecture
Similar a RMI, estándar para objetos distribuidos Permite integrar programas en distintos lenguajes
Java, C++, C, Smalltalk, Ada, COBOL, etc.
Incluye servicios adicionales integrados
Nombres, persistencia, eventos, etc.
Creado por el consorcio OMG (ObjectManagement Group)
OMG = más de 800 empresas: Sun, IBM, Apple, Digital, Netscape, Oracle, Borland, NCR, Siemens, ILOG, Telefónica I+D... OMG fundada en 1988 CORBA 1.0: 1992, CORBA 2.0: 1997, CORBA 2.6: dic 2001
JDK 1.2 / 1.4 incorpora CORBA 2.0 / 2.3 con el nombre de Java IDL Otros estándares existentes: competencia CORBA / RMI / DCOM
2
Objetos distribuidos CORBA
La arquitectura CORBA
ORB:intermediario entre clientes y servidores
Transmite las peticiones cliente-servidor y las respuestas servidor-cliente Se necesita un ORB en cada máquina (en Java IDL, uno en cada proceso)
Cliente
Invocación de métodos
Servidor
Stub: intermediario entre clientes y ORB
Recoge del cliente llamadas a métodos y las transmite al ORB Una clase de stub por cada clase remota
ORB StubsORB Skeletons Servidores
3
Esqueleto: intermediario entre ORB y objetos del servidor
Recibe llamadas del ORB y ejecuta los métodos correspondientes en el servidor sobre el objeto que corresponda
4
Arquitectura
Definición de interfaces: el lenguaje OMG IDL
Interface Definition Language
Servidor Descripción de la interfaz de los objetos: operaciones y tipos de argumentos Equivalentea la definición de interfaces Remote en RMI Compatible con distintos lenguajes de programación Conceptos y sintaxis semejantes a C++ / Java
Cliente
llamada método request ORB Stub
IIOP
request ORB
Esq
llamada método uele to
Características:
IDL permite herencia entre interfaces IDL no admite sobreescritura de métodos o atributos heredados IDL no permite pasar objetos por valor(sólo structs)
6
Oculto al programador
IIOP: Internet Inter-ORB Protocol
5
Ejemplo I: hello world
Hello World: definición de interfaz
module HelloApp { interface Hello { string sayHello(); oneway void shutdown(); }; };
Atención: basado en JDK 1.4
7
Fichero Hello.idl
8
Hello World: definición de interfaz
module HelloApp { Declaración interface Hello { del stringsayHello(); Módulo oneway void shutdown(); }; }; Esto genera un espacio de
Fichero Hello.idl nombres (un directorio). Equivale a un package
9
Hello World: definición de interfaz
module HelloApp { interface Hello { Declaración string sayHello(); de la Interfaz oneway void shutdown(); }; }; Esto genera una declaración
de interfaz en el código Java Fichero Hello.idl
10
Hello World: definiciónde interfaz
module HelloApp { interface Hello { Declaración string sayHello(); de las Operaciones oneway void shutdown(); }; Cada operación en IDL genera }; su correspondiente método en
Java Fichero Hello.idl
11
Compilación del código IDL
Stub
cliente
IDL Traductor IDL Interfaz de los objetos
C C++ Java Smalltalk COBOL Ada
Esqueleto
servidor
Código (a completar) para laimplementación de los objetos
12
Traducción del código IDL
A partir de la versión 1.4 (JDK y J2SE) se utiliza el comando idlj
Conocido como idltojava. Por omisión, genera sólo los ficheros necesarios en el cliente. Para generar los stub para los clientes y los esqueletos para los servidores, opción –fall (o –fserver). De acuerdo a la especificación Portable Object Adapter (POA) de CORBA.13
Traducción del código IDL
Hello.java HelloOperations.java idlj –fall Hello.idl idlj –fall Hello.idl HelloPOA.java _HelloStub.java HelloHelper.java HelloHolder.java
14
Hello.java
package HelloApp; /** * HelloApp/Hello.java . * Generated by the IDL-to-Java compiler (portable), version "3.1" * from Hello.idl */ public interface Hello extends HelloOperations, org.omg.CORBA.Object,...
Regístrate para leer el documento completo.