Semana 13 ejemplo del uso del rmi

1,778 views

Published on

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,778
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
38
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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 />

×