2011-04-14 17 views

Respuesta

24

Esencialmente, el registro RMI es un lugar para que el servidor registre los servicios que ofrece y un lugar para que los clientes consulten esos servicios. Ver Introduction to Java RMI. Extracto:

La figura 1 muestra las conexiones realizadas por el cliente al usar RMI. En primer lugar, el cliente debe ponerse en contacto con un registro de RMI y solicitar el nombre del servicio. El desarrollador B no sabrá la ubicación exacta del servicio RMI, pero sabe lo suficiente como para ponerse en contacto con el registro del Desarrollador A. Esto lo señalará en la dirección del servicio al que desea llamar.

+1

aquí también es un lugar interesante para aprender más sobre Java RMI: http://docs.oracle.com/javase/tutorial/rmi/index.html – LuckyLuc

+0

@LuckyLuc De acuerdo. No solo es un lugar interesante sino un lugar mucho mejor. La basura arbitraria de Internet no debe citarse aquí antes que las referencias oficiales y ciertamente no está por delante de las referencias normativas, como la Especificación RMI. – EJP

+0

Entonces, solo hay un registro de RMI por programa, pero puede haber muchos servidores. ¿Es eso correcto? – CodyBugstein

8

El registro RMI actúa como intermediario entre los servidores RMI y los clientes. El servidor "registra" sus servicios en el registro, por lo tanto, un registro RMI puede actuar como un "directorio" para muchos servidores/servicios. El cliente no necesita saber la ubicación de los servidores individuales y realiza una búsqueda en el Registro de RMI para obtener el servicio que necesita. El registro, al ser un directorio de nombres, devuelve el identificador apropiado al cliente para invocar los métodos.

Google around, hay mucha información disponible sobre RMI.

2

de Java Remote Method Invocation (RMI) del registro es esencialmente un servicio de directorio.

Un registro de objetos remotos es un servicio de nombres bootstrap que utilizan los servidores RMI en el mismo host para enlazar objetos remotos a los nombres. Los clientes en hosts locales y remotos pueden buscar objetos remotos y realizar invocaciones de métodos remotos. (Documentation)

Puede usar RMI o JNDI para vincular y buscar su objeto de forma remota con el registro de rmi.

Es un caso de uso conocido del patrón de diseño proxy. Los servidores RMI registran objetos (esencialmente stubs) en el registro RMI. Los clientes remotos buscan estos stubs e invocan métodos en él. Detrás de la escena, el método que se va a invocar, sus argumentos se serializan y se envían al servidor RMI real que tiene la implementación. El servidor RMI (código de esqueleto) deserializa la solicitud invoca el método real, recopila los resultados, lo deserializa y lo envía de vuelta al cliente (stub). Stub deserializa los resultados y los devuelve al código que invocó este método.