La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Práctica II: Java RMI.

Presentaciones similares


Presentación del tema: "Práctica II: Java RMI."— Transcripción de la presentación:

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


Descargar ppt "Práctica II: Java RMI."

Presentaciones similares


Anuncios Google