Beruflich Dokumente
Kultur Dokumente
CARACTERÍSTICAS:
• Facilidad de uso en la programación por estar específicamente diseñado para
JAVA
• Proporciona paso de objeto por referencia
• Recolección de basura distribuida
• Paso de tipos arbitrarios
INVOCACIÓN
1) Encapsulado de los parámetros
2) invocación del método (del cliente con el servidor). El invocador se queda
esperando una respuesta.
3) Al terminar la ejecución, el servidor realiza el valor de retorno y lo envía al cliente
4) El código cliente recibe la respuesta y continúa como si la invocación hubiera sido
local.
El método bind() asocia un nombre a un objeto remoto mediante una URL, es decir,
lo registra. En consecuencia, ese nombre se utiliza para localizar el objeto.
JAVA.RMI.REGISTRY Este paquete proporciona las interfaces Registry y
RegistryHandler, así como la clase LocateRegistry. La interfaz Registry define los
métodos bind(), rebind(), y lookup() (así como otros que no hemos comentado como
son unbind() y list()) de la clase Naming. Por último, la clase LocateRegistry permite
recuperar y, por tanto, manejar objetos Registry, que representan a los procesos
que ejecutan el servicio de registro RMI, a partir de un par host-puerto. También
permite crear estos objetos a partir de un puerto o puertos y, si se desea, factorías
de sockets RMI. Las factorías de sockets permiten establecer características
comunes a los sockets que se quieren crear en una aplicación determinada.
Java.rmi.server Este paquete proporciona una serie de clases, interfaces y
excepciones para el lado servidor de las aplicaciones RMI. Algunas de sus clases
principales son:
-Clase ObjID: Genera identificadores de objetos que los hosts declaran como
remotos, proporcionando métodos para la creación de los mismos.
-Clase RemoteObject: Implementa la clase java.lang.Object para objetos remotos y
la interfaz java.rmi.Remote.
-Clase RemoteServer: Hereda de RemoteObject. Es la clase raíz de la que heredan
todas las implementaciones de objetos cuyos métodos son accesibles
remotamente.
JAVA.RMI.ACTIVATION Permite activar remotamente objetos, desactivarlos
cuando ya no se trabaje con ellos y reactivarlos cuando sea necesario. Entre
activación y desactivación, conservan su estado.
Java.rmi.dgc Este paquete contiene clases, interfaces y excepciones para la
recoleccion de basura
3.3 JERARQUIA DE OBJETOS RMI
3.7 CALLBACKS
Como la palabra en inglés lo indica un callback es una “llamada de vuelta” y este es
un concepto importante al momento de escribir código. Es simple: llamo a una
funcion y le envío por parámetro otra función (un callback) esperando que la función
que llamé se encargue de ejecutar esa función callback. Pero callback no significa
que se va a llamar cuando algo termine, simplemente se puede tener distintos
callbacks que se van llamando en determinados casos. Callback de Cliente En RMI,
el callback de cliente es una característica que permite a un objeto cliente registrarse
a sí mismo con un objeto servidor remoto para callbacks, de forma que el servidor
pueda llevar a cabo un invocación al método del cliente cuando el evento ocurra.
Hay que observar que con los callbacks de clientes, las invocaciones de los métodos
remotos se convierten en bidireccionales, o dúplex, desde el cliente al servidor y
viceversa. Debido a que el API de RMI básica, sólo permite invocación de métodos
remotos de clientes en objetos servidores, se necesita claramente sintaxis adicional
para dar soporte a esta nueva característica. Cuando un objeto servidor realiza un
callback, los papeles de los dos procesos se invierten: el objeto servidor se convierte
en cliente del objeto cliente, debido a que el primero inicia una invocación de método
remoto en el segundo.
INTERFAZ DEL CALLBACK -El servidor ofrece un método remoto para que el
cliente registre sus callbacks. -Hay que diseñar una interfaz remota para el callback.
-La interfaz debe incluir un método que será invocado en el callback desde el
servidor. El cliente deberá de ser una Subclase de RemoteObject e implementaría
la interfaz de callback.
-El cliente se registrara frente a la clase remota para así ser rellamado.
-El servidor invoca el método remoto del cliente en caso de aparecer al evento
indicado.