1 / 12

Práctica II: Java RMI

Práctica II: Java RMI. Práctica II: Java RMI (I): introducción. Localización de objetos remotos. Comunicación con objetos remotos. Carga de código móvil. Práctica II: Java RMI (II): introducción. Normalmente los sistemas RPC se declaran mediante IDL.

jason
Download Presentation

Práctica II: Java RMI

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Práctica II: Java RMI

  2. Práctica II: Java RMI (I): introducción • Localización de objetos remotos. • Comunicación con objetos remotos. • Carga de código móvil. Sistemas Distribuidos - Nebrija - Justo Hidalgo

  3. Práctica II: Java RMI (II): introducción • Normalmente los sistemas RPC se declaran mediante IDL. • JavaRMI utiliza una interfaz Java => sólo utilizable entre aplicaciones Java. • Necesidades de las aplicaciones distribuidas: • Localización de objetos remotos: • Rmiregistry ó • Paso de objetos como referencias remotas, ó • Servicio de nombrado CORBA, en RMI/IIOP. • Comunicación con objetos remotos. • JavaRMI se ocupa de que la interacción entre objetos sea como invocaciones locales. • Carga de los bytecodes de los objetos que se pasan como parámetros o valores de retorno. Sistemas Distribuidos - Nebrija - Justo Hidalgo

  4. Práctica II: Java RMI (III): diferencias • Diferencias con el modelo de objetos local Java: • Los clientes de los objetos remotos tratan sólo con interfaces remotas, no con la implementación. • Los argumentos “no remotos” se pasan siempre por copia, no por referencia. • Los objetos remotos se pasan por referencia. • Los clientes han de tratar más excepciones que antes. Sistemas Distribuidos - Nebrija - Justo Hidalgo

  5. Práctica II: Java RMI (IV): interfaz java.rmi.Remote • Interfaz que declara un conjunto de métodos que pueden invocarse desde una JVM remota. • Una interfaz remota debe extender la interfaz java.rmi.Remote. • Un método remoto: • Debe incluir la excepción java.rmi.RemoteException (o superclases). • Ejemplo: • public interface BankAccount extends java.rmi.Remote { • public void deposit(float amount) throws java.rmi.RemoteException; • public void withdraw(float amount) throws OverdrawnException, java.rmi.RemoteException; • public float getBalance() throws java.rmi.RemoteException; } Sistemas Distribuidos - Nebrija - Justo Hidalgo

  6. Práctica II: Java RMI (V):clase RemoteObject • Parte servidora; tres subclases: • Java.rmi.Server.RemoteObject: implementaciones para los métodos de Object: hashCode, equals, toString. • Java.rmi.server.UnicastRemoteObject: define un objeto remoto Singleton cuyas referencias son sólo válidas mientras el proceso esté vivo. • Java.rmi.server.Activatable: abstracta que define un objeto remoto activable “on request”. Sistemas Distribuidos - Nebrija - Justo Hidalgo

  7. Práctica II: Java RMI (VI):localización • Un cliente necesita referencia al objeto remoto que quiere invocar. • La referencia se almacena en un servicio de registro (rmiregistry) mediante la convención de java.rmi.Naming: • Look up. • Bind. • Rebind. • Unbind. Sistemas Distribuidos - Nebrija - Justo Hidalgo

  8. Práctica II: Java RMI (VII):stubs & skeletons • Stub: proxy en la parte cliente para el objeto remoto. • El cliente invoca el stub, que es quien se conecta con la parte servidora: • Conexión con JVM remota. • Marshalling. • Espera de resultados. • Unmarshalling de valores de retorno o excepciones. • Devolución de resultado a la aplicación cliente. • Skeleton: no necesario en Java2 Platform.Ejerce de dispatcher. Sistemas Distribuidos - Nebrija - Justo Hidalgo

  9. Práctica II: Java RMI (VIII):garbage collection • Borrado automático de objetos remotos cuando no son referenciados por ningún cliente. • RMI se basa en Network Object de Modula-3. • Cuando hay una nueva referencia: count++ • Especialización de Leasing. Sistemas Distribuidos - Nebrija - Justo Hidalgo

  10. Práctica II: Java RMI (IX):ejemplo • Creación de la interfaz remota Java • Implementación de la interfaz remota. • Main: • Gestor de seguridad. • Creación de instancia del objeto remoto. • Registro del objeto. • Implementación de la aplicación cliente. Sistemas Distribuidos - Nebrija - Justo Hidalgo

  11. Práctica II: Java RMI (X):compilación • Entorno: • set CLASSPATH=%CLASSPATH%;<practicas>\examples\hello;. • Compilación de las fuentes. • javac Hello.java  HelloImpl.java  HelloClient.java • Generación de stubs/skeletons. • rmic examples.hello.HelloImpl • Genera: • HelloImpl_Stub.class • HelloImpl_Skel.class //opcional. Sistemas Distribuidos - Nebrija - Justo Hidalgo

  12. Práctica II: Java RMI (XI):ejecución • Arranque del rmiregistry: • start • set CLASSPATH= • rmiregistry <puerto> • Arranque del servidor: • java -Djava.rmi.server.codebase=file:///<path>/ -Djava.security.policy=<path>\policy examples.hello.HelloImpl • Arranque del cliente: • java -Djava.rmi.server.codebase=file:///<path>/ -Djava.security.policy=<path>\policy examples.hello.HelloClient <host> Sistemas Distribuidos - Nebrija - Justo Hidalgo

More Related