Invocación de método remoto
Remote Method Invocation ( RMI , alemán sobre "Llamada de método remoto"), a veces referido como la invocación de método remoto llamada, se llama a un método de un control remoto de Java - objeto e implementa el propio camino de Java llamada a procedimiento remoto . "Remoto" significa que el objeto se puede ubicar en otra máquina virtual Java , que a su vez puede ejecutarse en una computadora remota o en la computadora local. Aquí, la llamada al objeto que llama (o al programador) tiene el mismo aspecto que una llamada local, pero se interceptan excepciones especiales ( excepciones ) que pueden, por ejemplo, indicar una desconexión.
En el lado del cliente , el llamado stub se encarga del transporte de la red. El stub debe estar disponible para el cliente localmente o en la red. Antes del lanzamiento de Java 2 Standard Edition (J2SE) en la versión 1.5.0, el stub era una clase creada con el compilador RMI rmic . A partir de la versión 1.5 ya no es necesario llamar al compilador RMI rmic . La máquina virtual Java se encarga de la creación del stub .
Aunque los objetos remotos también pueden ser proporcionados por un objeto remoto que ya es conocido en el programa, la dirección del servidor y un identificador (una URL RMI) son necesarios para la primera conexión. Un servicio de nombres en el servidor devuelve una referencia al objeto remoto para el identificador. Para que esto funcione, el objeto remoto debe haberse registrado previamente con el servicio de nombres en el servidor con este nombre. El servicio de nombres RMI se java.rmi.Namingaborda mediante métodos estáticos de la clase . El servicio de nombres se implementa como un programa independiente y se denomina Registro RMI .
Protocolo de comunicación
RMI también denota un protocolo de comunicación basado en TCP / IP y JRMP , que se utiliza para llamadas remotas entre objetos Java, y una biblioteca de clases estándar de Java con la que se pueden implementar estas llamadas. Esta biblioteca de clases es parte de J2SE . Alternativamente, IIOP también se puede utilizar como protocolo de comunicación. Se reservan dos puertos para RMI . El puerto 1099 está reservado para el registro RMI, es decir, el servicio de nombres. El puerto 1098 está reservado para el activador .
Componentes
- Interfaz remota
- describe las funciones que están disponibles en el servidor y así define el comportamiento del objeto remoto (sin implementarlo).
- Objeto remoto
- representa el objeto remoto y está en el servidor. Implementa la interfaz remota y el comportamiento de los métodos remotos disponibles para los clientes. El servidor puede crear una o más instancias del objeto remoto. Un objeto remoto debe derivarse de UnicastRemoteObject y debe tener un constructor sin parámetros, porque esto solo llama al constructor de UnicastRemoteObject y, de lo contrario, podría generar una RemoteException. Cada método debe declarar una RemoteException, incluido el constructor sin parámetros.
- Referencia remota
- es una referencia a objetos remotos. Los clientes obtienen la referencia remota del registro RMI.
procedimiento
- El servidor registra un objeto remoto con el registro RMI con un nombre único.
- El cliente busca este nombre en el registro RMI y recibe una referencia de objeto que debe corresponder a su interfaz remota .
- El cliente llama a un método desde la referencia del objeto (la interfaz remota garantiza que este método existe ). Se puede pasar un objeto de una clase X que aún no se conoce a la JVM del servidor (esto es posible si X implementa una interfaz conocida por el servidor). En este caso, el servidor JVM carga la clase X dinámicamente, por ejemplo, desde el servidor web del cliente.
- El servidor JVM ejecuta el método en el objeto remoto , utilizando cualquier código externo cargado dinámicamente (por ejemplo, métodos de X), que generalmente está sujeto a restricciones de seguridad. Los valores de retorno de esta llamada se envían al cliente o el cliente recibe un mensaje de error (por ejemplo, si se cancela la conexión).
Activación
La activación está disponible como complemento de RMI . Al igual que el registro de RMI, también es un punto de contacto central para los clientes de RMI. Sin embargo, el activador también puede crear objetos de servidor RMI e iniciar nuevas máquinas virtuales .
Ver también
- Jini
- Interfaz de directorio y nombres de Java (JNDI)
- Cajo (simplificando el uso de RMI)
- SIMON (alternativa a RMI)
- Arquitectura de agente de solicitud de objeto común (CORBA)