90 likes | 267 Views
Ejemplo CORBA: Java IDL. Java IDL (I): introducción. Añade capacidades de CORBA a la plataforma Java. Se utiliza IDL (Interface Definition Language) para la definición las interfaces a los objetos CORBA. Características de los objetos CORBA: Pueden estar en cualquier sitio de la red.
E N D
Java IDL (I): introducción • Añade capacidades de CORBA a la plataforma Java. • Se utiliza IDL (Interface Definition Language) para la definición las interfaces a los objetos CORBA. • Características de los objetos CORBA: • Pueden estar en cualquier sitio de la red. • Pueden interoperar con objetos en otras plataformas. • Pueden escribirse en cualquier lenguaje de programación que tenga un mapeo de OMG IDL (Java, C++, C, Smalltalk, COBOL, Ada). Sistemas Distribuidos - Nebrija - Justo Hidalgo
Java IDL (II): qué es JavaIDL • Es un Object Request Broker • CORBA/IIOP 2.0 Specification. • IDL-to-Java Language Mapping. • CORBAServices: Common Object Services Specification (naming service). • No interface repository. Sistemas Distribuidos - Nebrija - Justo Hidalgo
Java IDL (III): más introducción • El cliente no conoce: • La localización del objeto. • Detalles de la implementación del objeto. • Qué ORB se utiliza para localizar el objeto. • IDL compiler: • Transforma el IDL en un lenguaje de programación concreto (Java en este caso). • Genera client stubs y server skeletons. Sistemas Distribuidos - Nebrija - Justo Hidalgo
Java IDL (IV): IDL • Declara un conjunto de métodos públicos (operaciones), atributos y excepciones. Cada operación se identifica mediante una firma que contiene el nombre, parámetros, valor de retorno y excepciones que “levanta” (raises). • module HelloApp { • interface Hello { • string sayHello(); • }; • }; Sistemas Distribuidos - Nebrija - Justo Hidalgo
Java IDL (V): ejemplo (i) • Definición de la interfaz (visto antes). • Compilación: • idlj -fall<fichero.idl> • Resultado: • Fich.java: versión Java del IDL. • FichImplBase.java: skeleton. • FichStub.java: stub. • FichHelper: funcionalidad auxiliar: p.e. narrow() • FichHolder: operaciones CORBA que no mapean bien a la semántica Java. Sistemas Distribuidos - Nebrija - Justo Hidalgo
Java IDL (VI): ejemplo (ii) • Implementación del servidor • Servant: implementación de la interfaz IDL. Subclase de FichImplBase • Server: método main: • Crea la instancia ORB. • Crea un sirviente, y se lo dice al ORB. • Obtiene una CORBA Object Reference de un contexto de nombrado. • Registra el objeto CORBA en el s. De nombrado. • Espera invocaciones. Sistemas Distribuidos - Nebrija - Justo Hidalgo
Java IDL (VII): ejemplo (iii) • Implementación del cliente • Crear un ORB. • Obtener una referencia al contexto de nombrado. • Buscar el objeto CORBA deseado en el contexto, recibiendo una referencia. • Invocar el objeto. Sistemas Distribuidos - Nebrija - Justo Hidalgo
Java IDL (VIII): compilación y ejecución • Interfaz: idlj –fall Hello.idl • Compilar los ficheros Java: • javac *.java HelloApp\*.java • Arrancar el servidor de nombrado: • tnameserv –ORBInitialPort <port> • Arrancar el servidor: • java HelloServer –ORBInitialPort <port> • Arrancar el cliente: • Java HelloClient –ORBInitialPort <port> Sistemas Distribuidos - Nebrija - Justo Hidalgo