2. ESTRUCTURA EN CAPAS
Capa de stubs/skeletons.- Dota a clientes y servidores de
una interfaz que les permite localizar objetos remotos para
invocar sus métodos como si fueran locales.
Capa de referencias remotas.- Esta capa se encarga de la
creación y gestión de las referencias a objetos
remotos, manteniendo para ello una tabla de objetos
distribuidos. Además, convierte las llamadas remotas en
peticiones hacia la capa de transporte.
Capa de transporte.- Capa de transporte del conjunto de
protocolos TCP/IP. RMI por defecto usa TCP, aunque
admite otros.
3. Capa de stubs/skeletons
Aparte de las interfaces remotas, el modelo utiliza
clases pertenecientes al fragmento stubs y al
esqueletons de forma muy parecida a como lo hace
CORBA. Las clases de fragmento Stubs actúan como
proxies remotos. Ambas clases implementan la
interfaz remota del objeto servidor. La interfaz cliente
invoca a los métodos del objeto fragmento stubs local.
El fragmento Stubs local comunica estas invocaciones
de métodos al esqueletons remoto, mientras que este
invoca a los métodos del objeto servidor. El objeto
servidor devuelve un valor al objeto stubs, y este
devuelve el valor al cliente.
4. Las clases de fragmento stubs y esqueletons las genera
automáticamente el compilador rmi a partir del objeto
servidor. Estas clases sonclases verdaderas de Java y no
dependen de un IDL externo. No se necesita un ORB,
ya que la RMI de Java es una solución de Java puro.
El objeto cliente y el fragmento stubs se comunican
por medio de las invocaciones normales de métodos de
Java, al igual que lo hacen el esqueletons y el objeto
servidor. El fragmento stubs y el esqueletons se
comunican a través de una capa de referencia remota.
5. Capa de referencias remotas
Esta capa de referencia remota admite la comunicación
entre el fragmento stubs y el esqueletons. Si el
fragmento stubs se comunica con más de una
instancia de esqueletns , el objeto fragmento stubs se
comunicará con esqueletons múltiples de un modo
multidifusión. La capa de referencia remota también
puede ser utilizada para activar los objetos servidor
cuando se invoquen remotamente.
6. Capa de transporte
La capa de referencia remota del host local se comunica
con la capa de referencia remota del host remoto a través de
la capa de transporte de la RMI. La capa de transporte
configura y administra las conexiones que se dan entre los
espacios destinados a direcciones de los host remoto y
local, controla los objetos a los que se puede acceder
remotamente y determina cuándo las conexiones están en
compás de espera y se vuelven inoperativas. La capa de
transporte utiliza por defecto sockets TCP para
comunicarse entre los hosts local y remoto. No obstante se
pueden usar también otros protocolos de capa de
transporte como SSL y UDP.
7.
8. SERIALIZACION DE LOS OBJETOS
Los requisitos mínimos para que se pueda acceder a los
objetos remotamente:
La clase del objeto debe implementar una interfaz que
amplíe la interfaz Remote. Esta interfaz debe definir
los métodos que el objeto va a permitir que se
invoquen remotamente. Estos métodos deben arrojar
la excepción RemoteExcepción.
La clase del objeto debe ampliar la clase RemoteServer.
Esto se hace normalmente ampliando la subclase
UnicastRemoteObject de RemoteServer.
9. Las clases de fragmento stubs y el esqueletons de la clase
objeto deben ser creados por medio del compilador rmi. El
fragmento stubs debe ser distribuido al host del cliente.
La clase, interfaz y clase del esqueletons objeto remoto
deben estar en la CLASSPATH del host remoto.
El demonio de activación remota y el registro remoto deben
estar activados.
La capa de transporte del lado del servidor utiliza el
registro remoto para acceder a esta información