Professional Documents
Culture Documents
Cada
mtodo
del
interfaz
debe
soportar
la
excepcin
Import java.rmi.*;
Public interface InterfaceRemote extends Remote {
Public int suma(int a,int b) throws RemoteException;
}
Paso 2
Desarrollar el objeto remoto mediante la implementacin de la interfaz remota.
Es importante hacer notar que:
El
servidor
remoto
se
define
partir
de
la
clase
java.rmi.server.
UnicastRemoteObject
El servidor remoto debe implementar la interfaz remota definida en el paso 1.
El servidor utilice un gestor de seguridad RMI propio para garantizar sus recursos
durante el transcurso de la comunicacin del cliente.
Public
class
ObjetoRemoto
extends
unicastRemoteObject.
InterfaceRemota {
Public ObjectRemoto () throws RemoteException
{
Super():
}
@Override
Public synchronized int suma(int a, int b) throws RemoteException {
System.out.println (Operacin: + a+ ++b+);
Return a*b;
}
}
Implements.
LAS
FUNCIONES
ESENCIALES
QUE
DEBEN
DESARROLLAR
LAS
Localizar objetos remotos. Las aplicaciones cliente tienen dos alternativas para
obtener referencias de objetos remotos. Una aplicacin puede registrar sus
objetos remotos ante un servidor de nombres llamado rmiregistry, o la aplicacin
puede pasar referencias a objetos remotos como parmetro de una invocacin o
como valor de retorno.
Comunicarse con los objetos remotos. Los detalles de la comunicacin entre los
objetos remotos, son manejados por el sistema RMI. Para el programador, la
comunicacin entre objetos se asemeja a la utilizada normalmente en programas
Java.
RMI Permite pasar objetos Java puros, como parmetros en la invocacin de
mtodos de objetos remotos, proporciona los mecanismos necesarios para, por
medio de un servidor HTTP o FTP, cargar el cdigo y los datos de dichos
objetos.(figura 1.)
ESCENARIOS DE UTILIZACIN DE
LAS APLICACIONES DISTRIBUIDAS
EJEMPLOS DE APLICACIONES
DISTRIBUIDAS
Clase Annotation
Para que la clase sea realmente Serializable, necesita adems, que todos sus
atributos sean tambin Serializable. Esto quiere decir que sus atributos pueden ser
tipos primitivos (int, char, float, etc), clases de java normalitas (consultar en la API
de Java si implementan la interface, por ejemplo Integer, String) o bien clases
nuestras que tambin la implementen.
Cuando se pasa un objeto Serializable como parmetro de un mtodo remoto,
java se encarga de convertir ese objeto a bytes (serializar el objeto), enviarlo por
red y hacerlo llegar al otro lado (el servidor). All, java se encarga de convertir
nuevamente esos bytes a un objeto (deserializar el objeto). Si no usamos carga
dinmica de clases, tanto el cliente como el servidor deben tener esa clase en su
CLASSPATH para poder usarla.
En este momento, existen dos instancias distintas de la clase, una copia de la otra.
Si el cliente o el servidor tocan su copia, la otra no se ve afectada. Pasar un objeto
Serializable equivale al paso por valor.
En el ejemplo simple de rmi, vamos a modificar el InterfaceRemoto para que en
vez de dos parmetros int admita un objeto Serializable que los contenga en su
interior. Por aquello de la "elegancia" en el cdigo, haremos que el parmetro
recibido sea una interface, la InterfaceSumandos.
int getSumando2()
return b;
}
}Se compila normalmente y necesitamos copiar los class tanto en el servidor
como en el cliente.
PARMETROS REMOTE
Un objeto Remote es el que implementa la interface Remote. Aunque
aparentemente con esta inteface no tenemos que hacer nada (igual que con la
interface Serializable), en realidad si debemos hacer nuestra clase de una cierta
forma. Para evitarnos hacer este cdigo especial, lo mejor es hacer heredar
tomaContador
(InterfaceContador
contador)
throws
}
/* Y aqu la nueva interface que har de parmetro del nuevo mtodo */
public interface InterfaceContador extends Remote
{
public void incrementa() throws RemoteException;
}
Y la implementacin de esto puede ser
/* Una implementacin para este nuevo parmetro */
public
class
Contador
InterfaceContador
extends
UnicastRemoteObject
implements
{
private int contador;
public Contador () throws RemoteException
contador=0;
}
public void incrementa() throws RemoteException
Bibliografa
file:///C:/Users/v%C2%A1%C2%A1lma/Downloads/55931825-Desarrollo-deAplicaciones-Distribuidas.pdf
http://www.iuma.ulpgc.es/users/lhdez/inves/pfcs/memoriadomingo/node6.html#SECTION03330000000000000000
http://prezi.com/l7mlseryvl5z/copy-of-rmi-en-java/#share_embed
http://www.lcc.uma.es/~pinilla/JavaRMI.pdf
http://www.chuidiang.com/java/rmi/rmi_parametros.php