SlideShare una empresa de Scribd logo
MEMORIA:

UN EJEMPLO SENCILLO
   DE JAVA RMI EN
      WINDOWS
      TECNO ACADEMY
  tecnoacademy.blogspot.com
 Salvador Fernández Fernández
EL EJEMPLO
El proceso servidor provoca un eco
de la entrada de teclado enviada
por el proceso cliente.
Por sencillez, ejecutaremos tanto el
servidor como el cliente en la
máquina local.
El sistema operativo es Windows
El jdk utilizado es 1.5.0
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 mezclar el 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.
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
(la aplicación remota)
EcoRMI.java

public interface EcoRMI extends
   java.rmi.Remote
{
  public String eco(String mensaje)
       throws java.rmi.RemoteException;
}
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();
    }
  }
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;
  }
}
import java.rmi.*;

                                             EcoRMIServidor.java
import java.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();
        }
    }
}
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;
};
Compilar en el servidor

Desde la línea de comandos,
compilamos todas las clases en
c:rmi4 (servidor):

  >cd c:rmi4
  c:rmi4>javac *.java
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
Clases en el cliente

Ademá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
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 {
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);
    }
}
Compilar el cliente

Desde una nueva línea de comandos,
compilamos la clase cliente en
c:rmi4cliente:
 >cd c:rmi4cliente
 c:rmi4cliente>javac EcoRMICliente.java
Lanzar el rmiregistry
Aprovechamos la línea de comandos en la que
compilamos las clases del servidor para lanzar
el registro de RMI en el puerto 4000 (en mi
caso, el puerto por defecto 1099 estaba
ocupado y no lo podía usar). Es importante
advertir que ese es el puerto que he utilizado en
el código de Servidor y del Cliente; si usaseis
otro deberíais cambiar también el código:

   c:rmi4>start rmiregistry 4000

(Debe abrirse una ventana de línea de
comandos vacía y permanecer abierta. Si se
cierra es que algo va mal)
Lanzar el servidor


Desde la misma línea de comandos en la
que estoy ejecuto el servidor:

  c:rmi4>java –Djava.security.policy=file:///c:/rmi4/java.policy EcoRMIServidor
Lanzar el cliente


Desde la misma línea de comandos en la
que compilé la clase del cliente, ejecuto el
proceso cliente:

  c:rmi4cliente>java –Djava.security.policy=file:///c:/rmi4/java.policy
  EcoRMICliente localhost
La ejecución
Una vez lanzados todos los procesos sólo hay
que escribir algo en el prompt de la ventana de
comandos del cliente y observar cómo
efectivamente se produce el eco de lo escrito
en las dos ventanas

                             Cliente
  Servidor

Más contenido relacionado

La actualidad más candente

Enrutamiento IPv6 OSPFv3
Enrutamiento IPv6 OSPFv3Enrutamiento IPv6 OSPFv3
Enrutamiento IPv6 OSPFv3
Jhoni Guerrero
 
Estructura del sistema operativo linux
Estructura del sistema operativo linuxEstructura del sistema operativo linux
Estructura del sistema operativo linux
MatildeMontoyaLafragua
 
Dhcp
DhcpDhcp
Tipos de gramatica y arboles de derivacion
Tipos de gramatica y arboles de derivacionTipos de gramatica y arboles de derivacion
Tipos de gramatica y arboles de derivacion
jorge severino
 
MANUAL DE PRACTICAS DE LINUX (Alberto Hdz)
MANUAL DE PRACTICAS DE LINUX (Alberto Hdz) MANUAL DE PRACTICAS DE LINUX (Alberto Hdz)
MANUAL DE PRACTICAS DE LINUX (Alberto Hdz)
Alberto Hdz
 
Establece servicios-de-seguridad-creando-estrategias
Establece servicios-de-seguridad-creando-estrategiasEstablece servicios-de-seguridad-creando-estrategias
Establece servicios-de-seguridad-creando-estrategias
oscar Rojas Nuñez
 
Tabla comparativa servidores web
Tabla comparativa servidores webTabla comparativa servidores web
Tabla comparativa servidores web
juancma77
 
Actividad No. 1.8: Análisis del protocolo MySQL
Actividad No. 1.8: Análisis del protocolo MySQLActividad No. 1.8: Análisis del protocolo MySQL
Actividad No. 1.8: Análisis del protocolo MySQL
Francisco Medina
 
Algoritmos de enrutamiento
Algoritmos de enrutamientoAlgoritmos de enrutamiento
Algoritmos de enrutamientoyeiko11
 
Comandos de configuracion de dispositivos cisco
Comandos de configuracion de dispositivos ciscoComandos de configuracion de dispositivos cisco
Comandos de configuracion de dispositivos cisco
CISCO NETWORKING
 
Sistemas Distribuidos basados en la Web
Sistemas Distribuidos basados en la WebSistemas Distribuidos basados en la Web
Sistemas Distribuidos basados en la Web
Tensor
 
Generación código intermedio 2
Generación código intermedio 2Generación código intermedio 2
Generación código intermedio 2
Humano Terricola
 
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPCEjemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
Ivan Luis Jimenez
 
Estructura de un sistema operativo
Estructura de un sistema operativoEstructura de un sistema operativo
Estructura de un sistema operativo
Ian Berzeker Tovar
 
Configuración de servicios DNS DHCP WEBSERVER Y EMAIL en packet tracer.
Configuración de servicios DNS DHCP WEBSERVER Y EMAIL en packet tracer.Configuración de servicios DNS DHCP WEBSERVER Y EMAIL en packet tracer.
Configuración de servicios DNS DHCP WEBSERVER Y EMAIL en packet tracer.
Anthony Torres Bastidas
 
Investigacion unidad 3
Investigacion unidad 3Investigacion unidad 3
Investigacion unidad 3
Daniel M. Garcia
 

La actualidad más candente (20)

Enrutamiento IPv6 OSPFv3
Enrutamiento IPv6 OSPFv3Enrutamiento IPv6 OSPFv3
Enrutamiento IPv6 OSPFv3
 
Estructura del sistema operativo linux
Estructura del sistema operativo linuxEstructura del sistema operativo linux
Estructura del sistema operativo linux
 
Dhcp
DhcpDhcp
Dhcp
 
Tipos de gramatica y arboles de derivacion
Tipos de gramatica y arboles de derivacionTipos de gramatica y arboles de derivacion
Tipos de gramatica y arboles de derivacion
 
MANUAL DE PRACTICAS DE LINUX (Alberto Hdz)
MANUAL DE PRACTICAS DE LINUX (Alberto Hdz) MANUAL DE PRACTICAS DE LINUX (Alberto Hdz)
MANUAL DE PRACTICAS DE LINUX (Alberto Hdz)
 
Establece servicios-de-seguridad-creando-estrategias
Establece servicios-de-seguridad-creando-estrategiasEstablece servicios-de-seguridad-creando-estrategias
Establece servicios-de-seguridad-creando-estrategias
 
Tabla comparativa servidores web
Tabla comparativa servidores webTabla comparativa servidores web
Tabla comparativa servidores web
 
Actividad No. 1.8: Análisis del protocolo MySQL
Actividad No. 1.8: Análisis del protocolo MySQLActividad No. 1.8: Análisis del protocolo MySQL
Actividad No. 1.8: Análisis del protocolo MySQL
 
Algoritmos de enrutamiento
Algoritmos de enrutamientoAlgoritmos de enrutamiento
Algoritmos de enrutamiento
 
Comandos de configuracion de dispositivos cisco
Comandos de configuracion de dispositivos ciscoComandos de configuracion de dispositivos cisco
Comandos de configuracion de dispositivos cisco
 
Ud2 hoja1 correccion
Ud2 hoja1 correccionUd2 hoja1 correccion
Ud2 hoja1 correccion
 
Sistemas Distribuidos basados en la Web
Sistemas Distribuidos basados en la WebSistemas Distribuidos basados en la Web
Sistemas Distribuidos basados en la Web
 
Arp,rarp
Arp,rarpArp,rarp
Arp,rarp
 
Cherokee
CherokeeCherokee
Cherokee
 
Generación código intermedio 2
Generación código intermedio 2Generación código intermedio 2
Generación código intermedio 2
 
Administracion de entrada y salida
Administracion de entrada y salidaAdministracion de entrada y salida
Administracion de entrada y salida
 
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPCEjemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
Ejemplo de RPC (Servidor de Archivos) enviar archivo en Java utilizando RPC
 
Estructura de un sistema operativo
Estructura de un sistema operativoEstructura de un sistema operativo
Estructura de un sistema operativo
 
Configuración de servicios DNS DHCP WEBSERVER Y EMAIL en packet tracer.
Configuración de servicios DNS DHCP WEBSERVER Y EMAIL en packet tracer.Configuración de servicios DNS DHCP WEBSERVER Y EMAIL en packet tracer.
Configuración de servicios DNS DHCP WEBSERVER Y EMAIL en packet tracer.
 
Investigacion unidad 3
Investigacion unidad 3Investigacion unidad 3
Investigacion unidad 3
 

Similar a Ejemplo Java Rmi

Java Rmi
Java RmiJava Rmi
Java Rmi
guest46f7c6
 
P R A C T I C A2
P R A C T I C A2P R A C T I C A2
P R A C T I C A2climancc
 
PowerShell para administradores
PowerShell para administradoresPowerShell para administradores
PowerShell para administradoresPablo Campos
 
CRUD básico con Symfony
CRUD básico con SymfonyCRUD básico con Symfony
CRUD básico con Symfony
Symfony Zaragoza
 
Clase 5 controller
Clase 5 controllerClase 5 controller
Clase 5 controller
hydras_cs
 
INSTALACION DE CENTOS Y OPENSSL
INSTALACION DE CENTOS Y OPENSSLINSTALACION DE CENTOS Y OPENSSL
INSTALACION DE CENTOS Y OPENSSL
Edson Ortega
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasos
Soni BM
 
Maitaining access
Maitaining accessMaitaining access
Maitaining access
Tensor
 
APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
MarlonAlbertoGalvis
 
Semana 13 ejemplo del uso del rmi
Semana 13   ejemplo del uso del rmiSemana 13   ejemplo del uso del rmi
Semana 13 ejemplo del uso del rmiTerryJoss
 
Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!
Ricard Luquero
 
MAITAINING ACCESS
MAITAINING ACCESSMAITAINING ACCESS
MAITAINING ACCESS
Tensor
 
Por qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápidoPor qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápido
Carlos Granados
 
Cómo explotar EternalBlue en Windows Server 2012 R2
Cómo explotar EternalBlue en Windows Server 2012 R2Cómo explotar EternalBlue en Windows Server 2012 R2
Cómo explotar EternalBlue en Windows Server 2012 R2
Telefónica
 

Similar a Ejemplo Java Rmi (20)

Java Rmi
Java RmiJava Rmi
Java Rmi
 
Aplicación RMI
Aplicación RMIAplicación RMI
Aplicación RMI
 
Ejemplosencillocon rmi
Ejemplosencillocon rmiEjemplosencillocon rmi
Ejemplosencillocon rmi
 
P R A C T I C A2
P R A C T I C A2P R A C T I C A2
P R A C T I C A2
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
PowerShell para administradores
PowerShell para administradoresPowerShell para administradores
PowerShell para administradores
 
CRUD básico con Symfony
CRUD básico con SymfonyCRUD básico con Symfony
CRUD básico con Symfony
 
Clase 5 controller
Clase 5 controllerClase 5 controller
Clase 5 controller
 
INSTALACION DE CENTOS Y OPENSSL
INSTALACION DE CENTOS Y OPENSSLINSTALACION DE CENTOS Y OPENSSL
INSTALACION DE CENTOS Y OPENSSL
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasos
 
Maitaining access
Maitaining accessMaitaining access
Maitaining access
 
APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
 
Semana 13 ejemplo del uso del rmi
Semana 13   ejemplo del uso del rmiSemana 13   ejemplo del uso del rmi
Semana 13 ejemplo del uso del rmi
 
Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!
 
MAITAINING ACCESS
MAITAINING ACCESSMAITAINING ACCESS
MAITAINING ACCESS
 
Por qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápidoPor qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápido
 
Cómo explotar EternalBlue en Windows Server 2012 R2
Cómo explotar EternalBlue en Windows Server 2012 R2Cómo explotar EternalBlue en Windows Server 2012 R2
Cómo explotar EternalBlue en Windows Server 2012 R2
 

Más de Salvador Fernández Fernández

Ejemplo Base de Datos SQLite (Android)
Ejemplo Base de Datos SQLite (Android)Ejemplo Base de Datos SQLite (Android)
Ejemplo Base de Datos SQLite (Android)
Salvador Fernández Fernández
 
Ejemplo de paso de funciones como parámetros a otra función
Ejemplo de paso de funciones como parámetros a otra funciónEjemplo de paso de funciones como parámetros a otra función
Ejemplo de paso de funciones como parámetros a otra función
Salvador Fernández Fernández
 
Ejercicios punteros cadenas-vectores
Ejercicios punteros cadenas-vectoresEjercicios punteros cadenas-vectores
Ejercicios punteros cadenas-vectores
Salvador Fernández Fernández
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujo
Salvador Fernández Fernández
 
Colorear fotografias en blanco y negro
Colorear fotografias en blanco y negroColorear fotografias en blanco y negro
Colorear fotografias en blanco y negro
Salvador Fernández Fernández
 
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John DaniSalvador Fernández Fernández
 
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John DaniSalvador Fernández Fernández
 
SQL
SQLSQL
Cableado Estructurado de Red
Cableado Estructurado de RedCableado Estructurado de Red
Cableado Estructurado de Red
Salvador Fernández Fernández
 
Redes De Computadores UOC
Redes De Computadores UOCRedes De Computadores UOC
Redes De Computadores UOC
Salvador Fernández Fernández
 
Fundamentos Divide Y Venceras
Fundamentos Divide Y VencerasFundamentos Divide Y Venceras
Fundamentos Divide Y Venceras
Salvador Fernández Fernández
 
Divide y Vencerás
Divide y VencerásDivide y Vencerás
Divide y Vencerás
Salvador Fernández Fernández
 
Java orientado a objetos
Java orientado a objetosJava orientado a objetos
Java orientado a objetos
Salvador Fernández Fernández
 

Más de Salvador Fernández Fernández (20)

Servicio web soap en java con net beans
Servicio web soap en java con net beansServicio web soap en java con net beans
Servicio web soap en java con net beans
 
Web services
Web servicesWeb services
Web services
 
Ejemplo Base de Datos SQLite (Android)
Ejemplo Base de Datos SQLite (Android)Ejemplo Base de Datos SQLite (Android)
Ejemplo Base de Datos SQLite (Android)
 
Práctica nominas
Práctica nominasPráctica nominas
Práctica nominas
 
Ejemplo de paso de funciones como parámetros a otra función
Ejemplo de paso de funciones como parámetros a otra funciónEjemplo de paso de funciones como parámetros a otra función
Ejemplo de paso de funciones como parámetros a otra función
 
Ejemplo usopunteros
Ejemplo usopunterosEjemplo usopunteros
Ejemplo usopunteros
 
Solucion ejercicios punteros cadenas-vectores
Solucion ejercicios punteros cadenas-vectoresSolucion ejercicios punteros cadenas-vectores
Solucion ejercicios punteros cadenas-vectores
 
Ejercicios punteros cadenas-vectores
Ejercicios punteros cadenas-vectoresEjercicios punteros cadenas-vectores
Ejercicios punteros cadenas-vectores
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujo
 
Introducción a Enterprise Java Beans
Introducción a Enterprise Java BeansIntroducción a Enterprise Java Beans
Introducción a Enterprise Java Beans
 
Colorear fotografias en blanco y negro
Colorear fotografias en blanco y negroColorear fotografias en blanco y negro
Colorear fotografias en blanco y negro
 
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
 
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
 
Wallpaper natural
Wallpaper naturalWallpaper natural
Wallpaper natural
 
SQL
SQLSQL
SQL
 
Cableado Estructurado de Red
Cableado Estructurado de RedCableado Estructurado de Red
Cableado Estructurado de Red
 
Redes De Computadores UOC
Redes De Computadores UOCRedes De Computadores UOC
Redes De Computadores UOC
 
Fundamentos Divide Y Venceras
Fundamentos Divide Y VencerasFundamentos Divide Y Venceras
Fundamentos Divide Y Venceras
 
Divide y Vencerás
Divide y VencerásDivide y Vencerás
Divide y Vencerás
 
Java orientado a objetos
Java orientado a objetosJava orientado a objetos
Java orientado a objetos
 

Último

HERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptxHERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptx
maralache30
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
cofferub
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
espinozaernesto427
 
Trabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De ProgramaciónTrabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De Programación
SofiaCollazos
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
zoecaicedosalazar
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
PABLOCESARGARZONBENI
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
AlejandraCasallas7
 
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
IsabelQuintero36
 
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
sarasofiamontezuma
 
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaCatalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
AMADO SALVADOR
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
cdraco
 
absorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratoriosabsorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratorios
JuanAlvarez413513
 
Actividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdfActividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdf
NajwaNimri1
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 
Computacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajasComputacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajas
sofiahuarancabellido
 
Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
ValeriaAyala48
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
COMPARATIVO DE SUBESTACIONES AIS VS GIS.
COMPARATIVO DE SUBESTACIONES AIS VS GIS.COMPARATIVO DE SUBESTACIONES AIS VS GIS.
COMPARATIVO DE SUBESTACIONES AIS VS GIS.
SERVANDOBADILLOPOLEN
 
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial ValenciaCatalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
AMADO SALVADOR
 

Último (20)

HERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptxHERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptx
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
 
Trabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De ProgramaciónTrabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De Programación
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..ACTIVIDAD 2P de Tecnología, 10-7, 2024..
ACTIVIDAD 2P de Tecnología, 10-7, 2024..
 
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial ValenciaCatalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
Catalogo Buzones BTV Amado Salvador Distribuidor Oficial Valencia
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
absorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratoriosabsorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratorios
 
Actividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdfActividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdf
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 
Computacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajasComputacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajas
 
Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
COMPARATIVO DE SUBESTACIONES AIS VS GIS.
COMPARATIVO DE SUBESTACIONES AIS VS GIS.COMPARATIVO DE SUBESTACIONES AIS VS GIS.
COMPARATIVO DE SUBESTACIONES AIS VS GIS.
 
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial ValenciaCatalogo general Ariston Amado Salvador distribuidor oficial Valencia
Catalogo general Ariston Amado Salvador distribuidor oficial Valencia
 

Ejemplo Java Rmi

  • 1. MEMORIA: UN EJEMPLO SENCILLO DE JAVA RMI EN WINDOWS TECNO ACADEMY tecnoacademy.blogspot.com Salvador Fernández Fernández
  • 2. EL EJEMPLO El proceso servidor provoca un eco de la entrada de teclado enviada por el proceso cliente. Por sencillez, ejecutaremos tanto el servidor como el cliente en la máquina local. El sistema operativo es Windows El jdk utilizado es 1.5.0
  • 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 mezclar el 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 (la aplicació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 import java.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, compilamos todas 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 cliente Ademá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 una nueva línea de comandos, compilamos la clase cliente en c:rmi4cliente: >cd c:rmi4cliente c:rmi4cliente>javac EcoRMICliente.java
  • 16. Lanzar el rmiregistry Aprovechamos la línea de comandos en la que compilamos las clases del servidor para lanzar el registro de RMI en el puerto 4000 (en mi caso, el puerto por defecto 1099 estaba ocupado y no lo podía usar). Es importante advertir que ese es el puerto que he utilizado en el código de Servidor y del Cliente; si usaseis otro deberíais cambiar también el código: c:rmi4>start rmiregistry 4000 (Debe abrirse una ventana de línea de comandos vacía y permanecer abierta. Si se cierra es que algo va mal)
  • 17. Lanzar el servidor Desde la misma línea de comandos en la que estoy ejecuto el servidor: c:rmi4>java –Djava.security.policy=file:///c:/rmi4/java.policy EcoRMIServidor
  • 18. Lanzar el cliente Desde la misma línea de comandos en la que compilé la clase del cliente, ejecuto el proceso cliente: c:rmi4cliente>java –Djava.security.policy=file:///c:/rmi4/java.policy EcoRMICliente localhost
  • 19. La ejecución Una vez lanzados todos los procesos sólo hay que escribir algo en el prompt de la ventana de comandos del cliente y observar cómo efectivamente se produce el eco de lo escrito en las dos ventanas Cliente Servidor