Ejemplo del uso del RMI<br />Se hará una impresión de "Mi Biblioteca" en versión cliente/servidor<br />Los archivos necesa...
Semana 13   ejemplo del uso del rmi
Semana 13   ejemplo del uso del rmi
Próxima SlideShare
Cargando en…5
×

Semana 13 ejemplo del uso del rmi

1.717 visualizaciones

Publicado el

0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
1.717
En SlideShare
0
De insertados
0
Número de insertados
9
Acciones
Compartido
0
Descargas
38
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Semana 13 ejemplo del uso del rmi

  1. 1. Ejemplo del uso del RMI<br />Se hará una impresión de "Mi Biblioteca" en versión cliente/servidor<br />Los archivos necesarios serán:<br />Biblio.java (Una interface con lo básico)<br />BiblioImpl.java (El objeto servidor en sí mismo, con método main para poder ejecutarse)<br />BiblioClient.java (El cliente java)<br />Estos 3 archivos componen la parte servidora (objetos en el lado del servidor)<br />Biblio.java<br />import java.rmi.Remote;import java.rmi.RemoteException;     public interface Biblio extends Remote {        String mensaje() throws RemoteException;    }<br />  <br />BiblioImpl.java<br />        import java.rmi.Naming;        import java.rmi.RemoteException;        import java.rmi.RMISecurityManager;        import java.rmi.server.UnicastRemoteObject;        public class BiblioImpl extends UnicastRemoteObject implements Biblio {            public BiblioImpl() throws RemoteException {                super();            }            public String mensaje() {                return "Esta es Mi Biblioteca.";            }            public static void main(String args[]) {                // Create and install a security manager                if (System.getSecurityManager() == null) {                    System.setSecurityManager(new RMISecurityManager());                }                try {                    BiblioImpl obj = new BiblioImpl();                    // Bind this object instance to the name "BiblioServer"                    Naming.rebind("//192.168.0.18/BiblioServer", obj);                    System.out.println("BiblioServer bound in registry");                } catch (Exception e) {                    System.out.println("BiblioImpl err: " + e.getMessage());                    e.printStackTrace();                }            }        }<br />policy<br />grant {        // Allow everything for now        permission java.security.AllPermission;};<br />Este es para la parte clienteBiblioClient.java<br />import java.rmi.Naming;import java.rmi.RemoteException;public class BiblioClient {        static String message = "blank";        static Biblio obj = null;        public static void main(String args[]) {        try {            obj = (Biblio)Naming.lookup("//192.168.0.18" + "/BiblioServer");            message = obj.mensaje();        } catch (Exception e) {            System.out.println("BiblioApplet exception: " + e.getMessage());            e.printStackTrace();        }        System.out.println("MENSAJE: " + message);        }}<br />Compilamos y generamos los proxys para que el cliente remoto pueda acceder al objeto servidor (que simplemente devuelve un mensaje).<br />javac Biblio.java BiblioImpl.java<br />rmic BiblioImpl<br />Lo cual nos genera los .class de Biblio.java y BiblioImpl.java. Además de esto, el comando rmic, genera unos proxys para copiar en el lado cliente son: BiblioImpl_Stub.class y BiblioImpl_Skel.class<br />El archivo policy lo necesitamos en el lado del servidor para dar seguridad al acceso a nuestro objeto. Ejecutamos el rmiregistry que levanta un servidor  escuchando en el puerto 1099, Este programa se encarga de recibir peticiones de Clientes que intentan localizar objetos servidores y les indica donde se encuentran físicamente.<br />Una vez que tenemos levantado el rmiregisty , Levantamos nuestro objeto de lado del servidor:<br />java -Djava.security.policy=$HOME/Programacion/java/rmi/policy BiblioImpl<br />haciendo referencia al archivo policy antes creado.<br />En el lado cliente compilamos BiblioClient.java y copiamos el Stub y el Skel generados en el servidor, de modo que tengamos:<br />BiblioClient.classBiblioImpl_Skel.classBiblioImpl_Stub.classy ejecutamos : java BiblioClient , que como resultado debería dar:<br />hp@hp:rmi$ java BiblioClient<br />MENSAJE: Esta es Mi Biblioteca.<br />

×