jueves, 14 de mayo de 2009

Ejemplo Sencillo Java RMI

----------------------------------
Servidor
------------------------------------

import interfaz.interfazRemota;
import java.io.BufferedReader;
import java.io.FileReader;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.StringTokenizer;


public class servidor extends UnicastRemoteObject implements interfazRemota
{
public servidor() throws RemoteException
{

}

public String consultar(String codigo,String ipCliente) throws RemoteException
{
String datos="No encontrado";

try
{ //Direccion de un txt con datos en filas en el siguiente formato:
//12#carlos
FileReader fr = new FileReader("C:/prueba.txt");
BufferedReader entrada = new BufferedReader(fr);
String aux;
boolean band=true;

while((aux=entrada.readLine() ) != null && band)
{
StringTokenizer st = new StringTokenizer(aux,"#");
String var=st.nextToken();
if (var.equals(codigo))
{
band=false;
datos=aux;
System.out.println("datos: "+aux);
}
}

} catch(Exception ex) { System.out.println("error servidor: "+ ex.toString()); }
return datos;
}
}

-------------------------------------------------------------------

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface interfazRemota extends Remote
{ public String consultar(String codigo,String ipCliente) throws RemoteException ;
}

-------------------------------------------------------------------

import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class ServidorSinInterfaz {
public static void main( String[] arg ) throws RemoteException
{

int puerto=3232;
Registry registro=null;

try {
registro = LocateRegistry.createRegistry(puerto);
registro.rebind("Servidor",new servidor());
} catch (RemoteException e){System.out.println(e);}

System.out.println("Servidor RMI Iniciado...");

}

}

------------------------------------------------------------------------
------------------------------------------------------------------------
Cliente
------------------------------------------------------------------------

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface interfazRemota extends Remote
{
public String consultar(String codigo,String ipCliente) throws RemoteException ;
}
------------------------------------------------------------------------

import interfaz.interfazRemota;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.rmi.AccessException;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.util.Scanner;
import java.util.StringTokenizer;

public class ClienteSinInterfaz {

public static void main(String args[]) throws UnknownHostException, RemoteException, AccessException, NotBoundException, IOException {

String DatosdelServidor;
Registry registro;
int puertoServidor;
interfazRemota rmiServidor;
String ipServidor = null;
String ipCliente = null;

puertoServidor=3232;

try {
ipServidor = "192.168.1.35";
ipCliente = InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException ex)
{ ex.printStackTrace(); }

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String cod = in.readLine();

try
{
registro=LocateRegistry.getRegistry(ipServidor,puertoServidor);
rmiServidor = (interfazRemota)(registro.lookup("Servidor"));
java.security.AllPermission a =new java.security.AllPermission();
System.setProperty("java.security.policy","rmi.policy");

DatosdelServidor = rmiServidor.consultar(cod,ipCliente);

if(DatosdelServidor.equals("No encontrado"))
{
System.out.println("No encontrado");
System.out.println("Alumno no registrado en el archivo de texto Resultado consulta");
} else {
StringTokenizer st = new StringTokenizer(DatosdelServidor,"#");
System.out.println("codigo: "+st.nextToken());
System.out.println("nombre: "+st.nextToken());

System.out.println("Respuesta del Servidor: " + DatosdelServidor);

}

} catch(RemoteException e) { }
catch(NotBoundException e) { e.printStackTrace(); }

}

}

No hay comentarios: