Hola Cachoro, que pena el retraso en darte la respuesta... pues mira, tengo un ejemplo, tratare de ser lo mas consiso posible...
para manejar RMI es como manejar sockets, solo que es de mas alto nivel y no tienes q preocuparte por sincronizar informacion ni nada, el jvm se encarga de todo...... entonces de la parte servidor :
debes crear una interface y su implementacion, como por ejemplo esta :
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.io.*;
//aqui definimos los metodos que seran usados compartidos entre cliente y servidor.
public interface Banco_Interface
extends Remote {
}
esta clase herada de la clase Remote de RMI, que segun entiendo cuando se compila con RMI hace la comunicacion y el stub que es como el esqueleto de la comunicacion RMI... eso si tendrias que documentarte un poco mas......
debes crear la implementacion de cada metodo... de la clase anterior, ya que son las operaciones que va a consumir el RMI, esta interfaces es el medio que usuara para comunicarse cliente y servidor en el RMI
para lanzar el servidor que quede en espera debes usar el siguiente codigo :
try {
Banco_Impl c = new Banco_Impl("C:\");
Naming.rebind("rmi://"+Ip+"/ServerBanco", c);
System.
out.
println("Problema: " + e
); }
donde, Banco_Impl es mi clase implementada de la interface del punto anterior. toda la url que queda en Naming.rebind, es como el nombre de tu RMI que publicaste. asi es como se encontrara al ser consumido tu RMI.... donde la Ip puede se la ip del servidor o el hostname, como en sockets, y el ServerBanco es el nombre q tu le das al RMI... entonces!!!... ahora te voy a mostrar como se generaria el codigo de cliente...
yo siempre suelo crear un metodo llamado conexion, dentro de todaaaa la logica que haga del lado cliente, con esto me refiero a que puedes hacer toda tu GUI para el cliente y ponerle al evento de un boton "conectar" la logica para que se conecte al servicio RMI...
Banco_Interface c;
public void Conexion()
{
try{
c = (Banco_Interface)
Naming.
lookup("rmi://"+Ip
+"/ServerBanco"); }
}
como puede ver, el cliente utiliza la interface generada en el servidor, es importante tenerla en cliente y servidor compilada con RMI, entonces que hacemos aca. pues la interfaz c, le asignamos el resultado del Naming.lookup con el nombre del servicio RMI el mismo que se definio en el servidor.... y simplemente para poder hacer uso de las operaciones que creamos en el servidor. usamos el objeto c... con su correspondiente try catch en caso de que halla algun fallo de conexion poderlo controlar.....
con esto ya se tiene la codificacion del cliente y del servidor... pero entonces como compilamos y ejecutamos... es simple el cliente se compila como un proyecto java normal, teniendo presente de tener una copia de la interfaz RMI que creamos en el inicio.... la compilacion del servidor si tiene unos pasos adicionales
Archivo Policy
grant {
// Allow everything for now
permission java.security.AllPermission;
};
es necesario Generar el archivo policy que es donde se especifica las politicas de seguridad
Compilacion Servidor
Primero : Compilamos todos los fuentes, como normalmente los hagas... javac o netbeans solito o como sea....
Segundo : es necesario compilar la implementacion de la interfaz rmi, para ello usamos el comando
rmi fuente_implementacion
Tercero : Inicializamos en rmiRegytry que es algo asi como el encargado de las politicas de seguridad de RMI o algo asi....
start rmiregistry 1099
Cuarto, ahora ejecutamos el servidor...
java -Djava.security.policy=policy Servidor
en policy=policy es donde se especifica que archivo policy debe tomar al ejecutar el servidor RMI.
el 1029 que se especifica en el rmiregistry, es el puerto, segun entiendo este 1099 es el puerto por defecto del RMI.
espero haber sido lo suficientemente claro... el manejo de RMI es realmente algo muy sencillo... una vez se logra generar el primero... y comprenderlo todo sale por adicion, y espero te des cuenta por q no se puede o bueno no di con el chiste de hacer esto en netbeans....
bye.....
pdt (si necesitas el codigo completo de un ejemplo lo publicare esa semana en mi nuevo blog
)