Middleware Java 2 Enterprise Edition - PowerPoint PPT Presentation

1 / 17
About This Presentation
Title:

Middleware Java 2 Enterprise Edition

Description:

Middleware Java 2 Enterprise Edition REMOTE METHOD INVOCATION (RMI) – PowerPoint PPT presentation

Number of Views:68
Avg rating:3.0/5.0
Slides: 18
Provided by: Daniel1315
Category:

less

Transcript and Presenter's Notes

Title: Middleware Java 2 Enterprise Edition


1
MiddlewareJava 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
  • 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
  • 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
  • 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 Registry
  • RMI provee un servicio muy simple llamado
    rmiregistry
  • Corre en cada maquina que hostea objetos
    servidores
  • Port 1099

11
RMI Naming
  • Host
  • 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 NamingNaming provee un metodo lookup()
    que se utiliza para hacer queries al registry.
    Se pasa la URL del servicio usando la forma
  • rmi//lthostnamegtltservice_portgt/ltservice_namegt

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//localhost1099/Calcu
    latorService",

  • c)
  • catch (Exception e)
    System.out.println("Trouble " e)
  • public static void main(String args)
  • new CalculatorServer()

17
RMI Implementacion
  • Cliente
  • Implementar clase CalculatorClient
  • Calculator c (Calculator) Naming.lookup(
    "rmi//remotehost/CalculatorService")
  • Ejecutar el Sistema
  • rmiregistry
  • java CalculatorServer
  • java CalculatorClient
Write a Comment
User Comments (0)
About PowerShow.com