La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Middleware Java 2 Enterprise Edition

Presentaciones similares


Presentación del tema: "Middleware Java 2 Enterprise Edition"— Transcripción de la presentación:

1 Middleware Java 2 Enterprise Edition
REMOTE METHOD INVOCATION (RMI)

2 Remote Method Invocation
Objetivo Desarrollar Aplicaciones Java Distribuidas usando la misma sintaxis y semantica usada en aplicaciones no distribuidas Introducido en JDK 1.1

3 RMI – Local vs Remote Objeto Local Objeto Remoto Definicion
Definido por una clase Java Definido por una interface que debe extender la interface Remote Implementacion Implementado por la clase Java Comportamiento es provisto por una clase Java que implementa Remote Creacion Operador new Creado en el Server via new El cliente no puedo hacer new Acceso Via object reference Via object reference que apunta a la implementacion del proxy stub Referencias Apuntan a un area de memoria en la maquina local Una referencia remota es un puntero a stub proxy

4 RMI – Local vs Remote Objeto Local Objeto Remoto Referencias Activas
Un objeto con una referencia se considera “alive” Referencias remotas son sensibles a caidas en la red Finalizacion Objeto implementa metodo finalize() Implementa Unreferenced() Garbage Collection Cuando no quedan referencias al objeto, es candidato para el GC El GC Distribuido trabaja en conjunto con el GC Local, se analizan referencias locales y remotas Excepciones Runtime y Exceptions Compilador obliga a manejar las Excepciones RMI fuerza al programador para que resuelva cualquier posible RemoteException

5 Arquitectura RMI Crear un modelo de objetos distribuidos que se integre naturalmente con el lenguaje Java y con el modelo de objetos locales Concepto de Interfaces Definicion del Comportamiento interface Implementacion del Comportamiento class

6 Arquitectura RMI RMI soporta dos clases que implementan la misma interfaz Service Proxy Client Service Implementacion Server

7 Arquitectura RMI Layers Stubs & Skeletons Remote Reference Layer
Intercepta invocaciones que el cliente realiza sobre la variable de referencia a la interface y redirecciona la llamada al Servicio Remoto RMI Remote Reference Layer Se encarga de establecer la conexion entre cliente y server Remote Object Activation (Java 2) Transport Layer Conexiones TCP - Seguridad

8 Arquitectura RMI stub skeleton Stubs & Skeletons - Proxy Pattern
Un objeto en un contexto es representado por otro (el proxy) en un contexto separado. El proxy sabe como forwardear los llamados a metodos. stub skeleton

9 Arquitectura RMI Remote Reference Layer Transport Layer
Provee un objeto RemoteRef que representa el link al objeto que implementa el servicio remoto Los stubs usan el metodo invoke() sobre RemoteRef para forwardear la llamada a un metodo. Objeto RemoteRef conoce la semantica de invocacion de servicios remotos. Transport Layer Establece conexion TCP/IP entre cliente y server Java Remote Method Protocol (JRMP)

10 RMI – Naming Servicios de Directorio RMI Registry
Java Naming and Directory Interface (JNDI) RMI provee un servicio muy simple llamado rmiregistry Corre en cada maquina que hostea objetos servidores Port 1099

11 RMI – Naming Host Cliente
Programa crea un servicio remoto creando primero el objeto local que implementa el servicio Exporta el objeto a RMI RMI crea un servicio que espera conexiones Registra el objeto en rmiregistry bajo un nombre Cliente Accede al RMI Registry a traves de una clase estatica Naming Naming provee un metodo lookup() que se utiliza para hacer queries al registry. Se pasa la URL del servicio usando la forma: rmi://<hostname>:<service_port>/<service_name>

12 RMI – Implementacion Escribir y compilar el codigo Java para las interfaces Escribir y compilar el codigo para las clases de implementacion Generar Archivos Stub y Skeleton para las clases de implementacion Escribir codigo Java para el programa que implemente el servicio remoto Desarrollar aplicacion cliente RMI Instalar y ejecutar el Sistema RMI

13 RMI – Implementacion Interface
public interface Calculator extends java.rmi.Remote { public long add(long a, long b) throws java.rmi.RemoteException; public long sub(long a, long b) throws java.rmi.RemoteException; public long mul(long a, long b) throws java.rmi.RemoteException; public long div(long a, long b) throws java.rmi.RemoteException; }

14 RMI – Implementacion Implementacion
public class CalculatorImpl extends java.rmi.server.UnicastRemoteObject implements Calculator { // Implementaciones deben tener un constructor explicito para poder declarar la excepcion RemoteException public CalculatorImpl() throws java.rmi.RemoteException { super(); } public long add(long a, long b) throws java.rmi.RemoteException { return a + b; } public long sub(long a, long b) throws java.rmi.RemoteException { return a - b; } public long mul(long a, long b) throws java.rmi.RemoteException { return a * b; } public long div(long a, long b) throws java.rmi.RemoteException { return a / b; } }

15 RMI – Implementacion Stubs & Skeletons Calculator_Stub.class
# rmic CalculatorImpl Calculator_Skel.class

16 RMI – Implementacion Host Server import java.rmi.Naming;
public class CalculatorServer { public CalculatorServer() { try { Calculator c = new CalculatorImpl(); Naming.rebind("rmi://localhost:1099/CalculatorService", c); } catch (Exception e) { System.out.println("Trouble: " + e);} } public static void main(String args[]) { new CalculatorServer();

17 RMI – Implementacion Cliente Ejecutar el Sistema
Implementar clase CalculatorClient Calculator c = (Calculator) Naming.lookup( "rmi://remotehost/CalculatorService"); Ejecutar el Sistema rmiregistry java CalculatorServer java CalculatorClient


Descargar ppt "Middleware Java 2 Enterprise Edition"

Presentaciones similares


Anuncios Google