java rmi
3. Código Fuente Creamos en C: una carpeta para ubicar el código fuente del servidor. En mi caso, he creado una carpeta denominada rmi4 Para no mezclarel código del cliente, dentro de rmi4, creo una carpeta a la que llamo cliente. Utilizaremos dos ventanas de línea de comandos: una para las acciones sobre el código de servidor y otra para las operaciones del cliente.
4. Clases del servidor Las ubicamos en la carpeta c:rmi4 Son: EcoRMI.java (interfaz remota), EcoRMISirviente.java (implementación de la interfaz remota) y EcoRMIServidor.java (laaplicación remota)
5. EcoRMI.java public interface EcoRMI extends java.rmi.Remote { public String eco(String mensaje) throws java.rmi.RemoteException; }
6. EcoRMISirviente.java (1/2) import java.rmi.*; import java.rmi.server.UnicastRemoteObject; public class EcoRMISirviente extends UnicastRemoteObject implements EcoRMI { public EcoRMISirviente(String nombre) throws RemoteException { super(); try {Naming.rebind(nombre, this); } catch (Exception e) { System.out.println(quot;Excepcion: quot; + e.getMessage()); e.printStackTrace(); } }
7. EcoRMISirviente.java (2/2) // Implementación del método remoto public String eco(String mensaje) throws RemoteException { System.out.println(quot;Recibido: quot; + mensaje); return mensaje; } }
8. import java.rmi.*; EcoRMIServidor.java importjava.rmi.server.*; public class EcoRMIServidor { public static void main(String args[]) { // Crea e instala el gestor de seguridad System.setSecurityManager(new RMISecurityManager()); try { EcoRMISirviente miEco = new EcoRMISirviente(quot;//:4000/mi-EcoRMIquot;); System.out.println(quot;Servidor de EcoRMI listo.quot;); } catch (Exception e) { System.out.println(quot;Excepcion: quot; + e.getMessage());e.printStackTrace(); } } }
9. java.policy En c:rmi4 (servidor) necesitamos un archivo de política de seguridad java.policy. Lo más simple es habilitar todos los permisos. También lo necesita el cliente; no obstante, basta con darle la ruta en el momento de ejecutarlo posteriormente. grant { permission java.security.AllPermission; };
10. Compilar en el servidor Desde la línea de comandos, compilamostodas las clases en c:rmi4 (servidor): >cd c:rmi4 c:rmi4>javac *.java
11. Generar stub En la misma línea de comandos, generamos el archivo de stub: c:rmi4>rmic EcoRMISirviente Se genera un archivo llamado EcoRMISirviente_stub.class. Es importante, acordarse de copiarlo en la carpeta cliente. También debemos copiar en la carpeta cliente los archivos EcoRMI.java y EcoRMI.class
12. Clases en el clienteAdemás de los archivos EcoRMISirviente.class, EcoRMI.java y EcoRMI.class que hemos copiado en pasos previos, debemos guardar en c:rmi4cliente el código fuente del cliente al que denominaremos EcoRMICliente.java
13. EcoRMICliente.java (1/2) import java.io.*; import java.rmi.*; import java.rmi.registry.*; import java.rmi.server.*; public class EcoRMICliente { public static void main(String args[]){ String mensajeEnviado; String mensajeRecibido; DataInputStream dataIn = new DataInputStream(System.in); BufferedReader in = new BufferedReader(new InputStreamReader(dataIn)); // Crea e instala el gestor de seguridad System.setSecurityManager(new RMISecurityManager()); try {
14. EcoRMICliente.java (2/2) EcoRMI miEco = (EcoRMI)Naming.lookup(quot;rmi://quot; + args[0] + quot;:4000/quot; +quot;mi-EcoRMIquot;); // hace un bucle hasta el fin de la entrada System.out.print(quot;Eco> quot;); while ((mensajeEnviado = in.readLine()) != null) { mensajeRecibido = miEco.eco(mensajeEnviado); System.out.println(mensajeRecibido); System.out.print(quot;Eco> quot;); } } catch(Exception e) { System.err.println(quot;Excepcion de Sistema: quot; + e); } System.exit(0); } }
15. Compilar el cliente Desde...
Regístrate para leer el documento completo.