RMI - Introducción

Boris R. Pérez G.
29 Sept 201617:21

Summary

TLDREl video ofrece una introducción a la invocación remota de métodos en Java, que permite a un objeto en una máquina virtual invocar métodos de otro objeto en una máquina virtual diferente, facilitando así la computación distribuida. Se explica que para implementar una solución de invocación remota se requieren un cliente y un servidor, donde el servidor hace accesible el objeto a través de la red y el cliente consume sus métodos. Seguidamente, se profundiza en la creación de una interfaz remota en Java que extienda de `java.rmi.Remote` y declare métodos que lancen `java.rmi.RemoteException`. A lo largo del video, se muestra cómo implementar tanto el servidor como el cliente utilizando Eclipse, destacando la importancia de la serialización, los puertos de red, y la comunicación entre ambos a través de la interfaz. Finalmente, se abordan consideraciones finales como la desactivación de firewalls, la importancia de estar en la misma subred y la versión de Java utilizada para la compatibilidad entre cliente y servidor.

Takeaways

  • 📚 La invocación remota de métodos permite que un objeto en una máquina virtual invoque métodos de un objeto en otra máquina virtual, lo que habilita la computación distribuida.
  • 🔌 Las aplicaciones de RM (Remote Method Invocation) requieren un cliente y un servidor; el servidor hace que un objeto sea accesible a través de la red, mientras que el cliente invoca los métodos de ese objeto remoto.
  • 💡 La implementación de RM es sencilla y no tiene nada que ver con conceptos complejos como la computación cuántica o la aeronáutica.
  • 📈 Se necesita un servidor de correo electrónico que publique la información de su instancia en el registro para que los clientes puedan acceder a ella.
  • 📝 El cliente localiza al servidor, solicita la instancia del objeto remoto y luego puede invocar sus métodos.
  • 📁 Se debe crear una interfaz en Java que declare los métodos que se ofrecerán al cliente; esta interfaz debe extender de la interfaz `Remote` y sus métodos deben lanzar una excepción `RemoteException`.
  • 📂 El servidor necesita utilizar una referencia de tipo `java.rmi.Remote`, que es una interfaz que permite la comunicación entre el cliente y el servidor.
  • 🖥️ El proyecto del servidor debe agregar la biblioteca (JAR) de la interfaz para que la clase del servidor pueda conocer y utilizar la interfaz.
  • 🔠 El servidor debe tener un constructor que lance una `RemoteException` y un método `main` para arrancar el servidor.
  • 🔑 El registro del servidor guarda la instancia del objeto con una llave específica para que el cliente pueda recuperarla.
  • ⚙️ El cliente obtiene el registro del servidor, invoca el método de la interfaz y utiliza los resultados como si el objeto estuviera en la misma máquina.
  • 🛡️ Se deben considerar aspectos como desactivar el firewall, asegurarse de que los equipos estén en la misma subred y utilizar una versión de Java compatible para todos los clientes.

Q & A

  • ¿Qué es la invocación remota de métodos en Java?

    -La invocación remota de métodos es una característica que permite que un objeto en una máquina virtual invoque métodos de un objeto que se encuentra en otra máquina virtual, lo que habilita la computación distribuida.

  • ¿Para qué sirve la invocación remota de métodos en aplicaciones?

    -Sirve para que un objeto Java pueda publicarse y ofrecer sus métodos en una máquina, permitiendo que usuarios en otras máquinas o instalaciones de Java invoquen esos métodos sin necesidad de tener el objeto en su máquina.

  • ¿Cuáles son los dos componentes necesarios para las aplicaciones de invocación remota de métodos?

    -Los dos componentes necesarios son un cliente y un servidor. El servidor hace que el objeto sea accesible a través de la red, mientras que el cliente accede al servidor a través de su dirección IP y utiliza los métodos del objeto remoto.

  • ¿Qué es una interfaz (interface) en Java y cómo se relaciona con la invocación remota de métodos?

    -Una interfaz en Java es una estructura que permite declarar métodos que serán ofrecidos al cliente. En el contexto de la invocación remota de métodos, el servidor implementa la interfaz, permitiendo que el cliente se comunique con el servidor a través de esa interfaz.

  • ¿Por qué es importante que la interfaz para la invocación remota de métodos extienda de 'java.rmi.Remote'?

    -Es importante porque esta extensión permite que tanto el cliente como el servidor se comuniquen a través de la interfaz, y el cliente pueda recibir una instancia de una clase que implementa la interfaz sin necesidad de conocer detalles específicos del servidor.

  • ¿Cómo se implementa la interfaz para la invocación remota de métodos en un proyecto de Java?

    -Se crea un archivo de interfaz que extiende 'java.rmi.Remote' y declara los métodos que el servidor ofrecerá al cliente. Luego, se implementa esta interfaz en la clase del servidor, donde se define el código para los métodos declarados.

  • ¿Qué es el propósito del atributo 'static final' en la clase del servidor de invocación remota de métodos?

    -El atributo 'static final' se utiliza para definir una variable que contiene el número del puerto a través del cual el cliente se conectará con el servidor. Este número es constante y no puede cambiar durante la ejecución del programa.

  • ¿Qué es la serialización en el contexto de Java y por qué es importante en la invocación remota de métodos?

    -La serialización es el proceso de convertir objetos en una secuencia de bytes que se pueden transmitir a través de una red. Es importante en la invocación remota de métodos porque permite que los objetos del servidor se viajen a través de la red hasta el cliente.

  • ¿Cómo se obtiene y utiliza la referencia del objeto remoto en el cliente?

    -El cliente obtiene la referencia del objeto remoto a través del registro, utilizando la dirección IP y el puerto del servidor. Luego, utiliza esta referencia para invocar los métodos del objeto remoto como si estuviera en la propia máquina del cliente.

  • ¿Qué consideraciones son importantes al implementar un servidor de invocación remota de métodos?

    -Algunas consideraciones importantes incluyen desactivar el firewall del sistema operativo para permitir las conexiones entrantes, asegurarse de que los clientes y el servidor estén en la misma subred o utilicen direcciones IP públicas, y utilizar una versión de Java compatible para la compilación y ejecución del proyecto.

  • ¿Cómo se asegura la comunicación entre el cliente y el servidor en la invocación remota de métodos?

    -La comunicación se asegura a través del registro de servicios, donde el servidor guarda una instancia de un objeto con una llave específica. El cliente solicita esta instancia al registro utilizando la misma llave, y obtiene una referencia al objeto remoto que puede utilizar para invocar sus métodos.

Outlines

00:00

😀 Introducción a la Invocación Remota de Métodos en Java

Este primer párrafo introduce la invocación remota de métodos, una característica de Java que permite a un objeto en una máquina virtual invocar métodos en otro objeto de una máquina virtual diferente. Destaca la importancia de esta capacidad para la computación distribuida, explicando cómo un objeto Java puede exponer sus métodos en una máquina y permitir que otros objetos en máquinas remotas los invoquen. Se menciona a dos componentes clave: el cliente y el servidor, donde el servidor hace que el objeto sea accesible a través de la red y el cliente utiliza esa referencia para invocar métodos.

05:02

📘 Implementación de la Invocación Remota de Métodos (RMI)

El segundo párrafo se enfoca en la implementación de la invocación remota de métodos. Se describe el proceso de publicación de la instancia del objeto en el registro para que los clientes puedan acceder a ella. Se habla sobre la necesidad de una interfaz en Java, llamada 'Remote Interface', que define los métodos que el servidor expone al cliente. Se menciona la implementación de la interfaz RMI y la creación de proyectos separados para la interfaz, el cliente y el servidor, destacando la importancia de la comunicación entre el cliente y el servidor a través de esta interfaz.

10:02

🔧 Configuración y Ejecución del Servidor RMI

Este párrafo cubre la configuración y ejecución del servidor RMI. Se explica cómo el servidor obtiene su dirección IP y el número de puerto a través del cual los clientes se conectarán. Se destaca la importancia de la serialización de la clase del servidor, ya que esta clase viajará a través de la red. Además, se describe la creación del registro con una llave específica y cómo el servidor guarda la instancia del objeto para su posterior acceso por parte del cliente.

15:02

📡 Conexión del Cliente con el Servidor y Consideraciones Finales

El cuarto y último párrafo aborda cómo el cliente se conecta con el servidor RMI. Se describe el proceso de obtención del registro del servidor y la invocación de métodos en el objeto remoto. Se mencionan las consideraciones finales, como la necesidad de desactivar el firewall para permitir conexiones entrantes y la importancia de estar en la misma subred o utilizar direcciones IP públicas para la comunicación entre el cliente y el servidor. También se sugiere tener en cuenta la versión de Java utilizada para evitar errores de compatibilidad.

Mindmap

Keywords

💡Invocación remota de métodos

La invocación remota de métodos es un concepto clave en la programación de computadoras que permite a un objeto en una máquina virtual invocar métodos en otro objeto que se encuentra en una máquina virtual diferente. Esto es fundamental para la computación distribuida y permite que los objetos Java se comuniquen y trabajen juntos a pesar de estar en ubicaciones geográficas separadas. En el video, se discute cómo esta característica permite que un objeto Java publique sus métodos en una máquina y otros usuarios en diferentes máquinas puedan invocar esos métodos.

💡Computación distribuida

La computación distribuida es un paradigma en el que se utilizan múltiples computadoras interconectadas a través de una red para resolver un problema común. Este concepto es esencial en el video, ya que la invocación remota de métodos es una herramienta que permite la computación distribuida al permitir que los objetos en diferentes máquinas virtuales se comuniquen entre sí.

💡Cliente y servidor

El modelo de cliente y servidor es una arquitectura de red en la que el servidor proporciona recursos o servicios a los clientes. En el contexto del video, se necesita tanto un cliente como un servidor para la invocación remota de métodos. El servidor es responsable de hacer accesible el objeto a través de la red, mientras que el cliente utiliza esa referencia para invocar métodos en el objeto remoto.

💡Interfaz (Interface)

Una interfaz en Java es una estructura de programación que define un conjunto de métodos que una clase puede implementar. En el video, se destaca la importancia de las interfaces en la programación de invocación remota de métodos, ya que las interfaces permiten que tanto el cliente como el servidor se comuniquen a través de un conjunto común de métodos.

💡Serialización

La serialización es el proceso de convertir una estructura de objetos en una secuencia de bytes que se pueden transmitir a través de una red. En el video, se menciona la necesidad de serialización para que una clase pueda viajar desde el servidor al cliente, lo que es esencial para la invocación remota de métodos.

💡Identificador de serialización

El identificador de serialización es un número que se utiliza para asegurar la compatibilidad de versiones durante la serialización y deserialización de objetos Java. Aunque no es estrictamente necesario, se menciona en el video como una práctica recomendada para evitar problemas de compatibilidad entre diferentes versiones de Java.

💡Puerto

Un puerto es un número de red que se utiliza para diferenciar los servicios en una computadora que está conectada a una red. En el video, se discute cómo un cliente se conecta a un servidor a través de un puerto específico, que es esencial para la comunicación entre el cliente y el servidor.

💡Firewall

Un firewall es un sistema de seguridad de red que controla el tráfico de entrada y salida entre una red y un sistema o red más grande. En el video, se menciona la necesidad de desactivar los firewalls para permitir que los clientes se conecten al servidor y realicen invocaciones remotas de métodos.

💡Dirección IP

Una dirección IP es un número único que se asigna a cada dispositivo en una red para su identificación. En el video, la dirección IP es crucial para que el cliente pueda localizar y conectarse con el servidor a través de la red.

💡Subred

Una subred es una red que opera dentro de otra red y que tiene su propio conjunto de direcciones IP. En el video, se destaca la importancia de que tanto el cliente como el servidor estén en la misma subred para que la comunicación sea posible.

💡Versión de Java

La versión de Java es importante para asegurar la compatibilidad entre el cliente y el servidor en una arquitectura de invocación remota de métodos. Se menciona en el video que si los clientes y el servidor no utilizan la misma versión de Java, puede haber problemas de compatibilidad que impidan la comunicación y la invocación de métodos.

Highlights

Invocación remota de métodos permite que un objeto en Java en una máquina virtual invoque métodos de un objeto en otra máquina virtual, habilitando la computación distribuida.

Permite a un objeto Java publicarse y ofrecer sus métodos en una máquina para que otros usuarios en diferentes máquinas puedan invocar esos métodos.

Las aplicaciones de RM (Remote Method) requieren de un cliente y un servidor, donde el servidor hace que el objeto sea accesible a través de la red.

El cliente obtiene la referencia del objeto remoto del servidor a través de su dirección IP y luego consume sus métodos.

Implementar RM es sencillo y se explicará cómo hacerlo en el transcurso del video.

Se necesita un servidor de correo electrónico que publique la información de su instancia en el registro para que el cliente pueda acceder a ella.

El cliente localiza al servidor, solicita el registro y obtiene la instancia del objeto remoto listo para consumir.

Para la implementación de RM, se requiere un servidor que utilice una referencia en Java conocida como una interfaz o interface.

La interfaz en RM declara los métodos que se ofrecerán al cliente y el servidor implementa esta interfaz con todo el código correspondiente.

La interfaz remota debe extender de la interfaz java.rmi.Remote y los métodos deben lanzar una excepción java.rmi.RemoteException.

Se describe la estructura de un proyecto RM con tres proyectos principales: rmic-like-life, rm interface project y rm server project.

La interfaz remota debe ser serializable, lo que significa que debe tener un identificador de serialización.

El servidor de RM necesita un puerto específico para que los clientes puedan conectarse y acceder a sus servicios.

Se muestra cómo el servidor obtiene su dirección IP y la imprime en la consola para informar a los clientes cómo conectarse.

El servidor almacena una instancia en el registro de correo electrónico con una llave específica para que el cliente pueda recuperarla.

El cliente utiliza la dirección IP y el puerto del servidor para obtener la referencia del objeto remoto y comenzar con las invocaciones de métodos.

Se destaca la importancia de tener una baja acoplación en el diseño del servidor y la interfaz para facilitar el mantenimiento y la expansión del sistema.

Se mencionan las consideraciones finales, como desactivar el firewall, asegurarse de estar en la misma subred y tener en cuenta la versión de Java utilizada para la compatibilidad.

Transcripts

play00:00

mi nombre es morís pérez yo les voy a

play00:01

hablar sobre invocación remota de

play00:02

métodos invocación remota de método les

play00:05

permite le permite un objeto en java que

play00:07

está en una máquina virtual invocar

play00:09

métodos de un objeto ya que está en otra

play00:11

máquina virtual esto habilita la

play00:13

computación distribuida y esto para qué

play00:16

me sirve sirve para que un objeto java

play00:18

pueda publicarse o pueda ofrecer sus

play00:21

métodos en una máquina y que usuarios en

play00:24

otras máquinas en otras instalaciones de

play00:27

java puedan invocar esos métodos

play00:28

es decir que yo no necesito tener ese

play00:30

objeto en mi máquina para poderlo

play00:33

invocar

play00:35

las aplicaciones de remedy necesitan de

play00:37

dos componentes de dos elementos muy

play00:39

importantes necesitan de un cliente y de

play00:41

un servidor el servidor es quien toma

play00:44

este objeto y lo vuelven accesible a

play00:47

través de la red para que unos clientes

play00:49

puedan llegar a ejecutarlo y el cliente

play00:51

lo que hace es tomar esa referencia

play00:53

acceder al servidor a través de su

play00:55

dirección ip toma la referencia de ese

play00:57

objeto remoto y consume sus métodos

play01:00

yo sé que ustedes están pensando que rm

play01:04

y es lo mismo que hablar de computación

play01:05

cuántica o de tratar de aterrizar un

play01:08

cohete pero les tengo una excelente

play01:11

noticia no tiene nada que ver es

play01:13

supremamente sencillo y hoy mismo vamos

play01:16

a descubrir lo fácil que es implementar

play01:18

r mail

play01:20

este diagrama lo que me permite es

play01:22

identificar identificar además que tengo

play01:25

un servidor de e-mail y este servidor lo

play01:29

que va a hacer es publicar en el

play01:30

registro la información de su instancia

play01:33

entonces lo que hace es servidor de

play01:35

remei es tomar el registro y decirle

play01:38

oiga publiquen por favor la instancia de

play01:40

este objeto para que sea accesible que

play01:43

hace el cliente el cliente lo que hace

play01:45

es localizar al servidor y le dice al

play01:47

servidor servidor de m su registro y de

play01:49

este registro yo tengo la instancia del

play01:52

objeto remoto que necesito listo para

play01:55

consumir y de esa manera el cliente

play01:57

puede empezar a hacer la invocación de

play01:58

todos los métodos que tiene disponible

play02:01

ese servidor para la implementación de

play02:03

una solución de rm y ya vimos que

play02:05

estamos un cliente de un servidor pero a

play02:07

nivel de servidor no vamos a necesitar

play02:08

un servidor de e-mail pero el servidor

play02:11

necesita utilizar

play02:13

un tipo de referencia en java que se

play02:15

conoce como una interfaz o un interface

play02:18

en este interface lo que se hacen es

play02:20

declarar los métodos que vamos a

play02:21

ofrecerle al cliente y el servidor de

play02:23

remedy lo que hace es implementar esta

play02:26

interfaz coherencia e implementar los

play02:28

métodos con todo el código

play02:31

correspondiente

play02:33

entonces aquí en el diagrama vemos lo

play02:35

que necesitamos tenemos que nuestra

play02:37

interfaz de remedy que es lo primero que

play02:40

vamos a implementar fíjense que tenemos

play02:41

esta clase

play02:44

tenemos esta interfaz y tenemos esta

play02:47

interfaz lo primero que vamos a hacer es

play02:50

implementar esta interfaz y de acuerdo

play02:54

con el diagrama de clase que ustedes ven

play02:55

ahí esta interfaz va a heredar de la

play02:58

interfaz remote que hace parte del

play03:00

paquete de java punto de mail entonces

play03:03

eso es lo primero que vamos a hacer

play03:05

y porque necesitamos la interfaz remota

play03:07

porque es que resulta que tanto el

play03:08

cliente como el servidor se van a

play03:11

comunicar o se van a entender es a

play03:13

través de esa interfaz eso quiere decir

play03:16

que el cliente nunca sabe exactamente

play03:18

quién es el servidor

play03:20

lo único que sabe el cliente es que va a

play03:22

recibir una instancia

play03:26

de una clase que implementa la interfaz

play03:29

operación interfaz para este ejemplo

play03:31

entonces por eso es muy importante

play03:32

definirla pero entonces necesitamos

play03:34

programar lo de alguna forma de modo que

play03:38

el cliente pueda acceder a esa interfaz

play03:40

y el servidor puede acceder a esa

play03:42

interfaz

play03:43

como vemos en esta imagen en este

play03:46

ejemplo de una implementación de

play03:47

remedios utilizando eclipse vemos tres

play03:49

proyectos el proyecto rm ic like life

play03:53

project el proyecto rm interface project

play03:56

y el proyecto rm server project

play03:59

este es el servidor de e-mail este es mi

play04:04

cliente de e-mail pero hemos un tercer

play04:06

proyecto que es el proyecto donde

play04:08

nosotros vamos a crear la interfaz de

play04:11

gmail

play04:12

dentro de este dentro de este proyecto

play04:14

de rm interfaz nosotros encontramos una

play04:18

un único archivo

play04:21

operación de interfaz puntos esta es la

play04:23

interfaz aquí vamos a declarar los

play04:26

métodos que nuestro servidor de remedy

play04:28

va a utilizar para ofrecerle a los

play04:30

clientes

play04:31

que necesitamos para crear esta interfaz

play04:34

entonces necesitamos primero que

play04:37

extienda de remote de la interfaz remote

play04:41

y lo segundo que los métodos que

play04:43

declaremos hagan un traduce sesión de

play04:46

esta excepción remote s p's nuestra

play04:49

interfaz tienen que cumplir esos dos

play04:51

criterios estas dos reglas para que

play04:53

pueda servir me para utilizarla como una

play04:55

interfaz remota y que a su vez el

play04:57

servidor de remil pueda implementarlo

play04:59

entonces aquí vemos la implementación

play05:01

vemos las dos condiciones primero que

play05:04

extiende al mismo esa es la primera

play05:06

condición que extiende a ritmo

play05:08

esta interfaz tiene un único método que

play05:11

se llama calcular mayor ese método

play05:14

cumple la segunda condición y es que el

play05:17

an se dispare un ritmo de s p's fíjense

play05:20

también que aquí yo lo declaró no como

play05:23

un públicas sino como un público

play05:25

interface porque es que estoy declarando

play05:27

estoy implementando la interfaz entonces

play05:29

mi interfaz remota cumple las dos

play05:31

condiciones primero que extiendan remote

play05:33

y segundo que los métodos el método los

play05:36

métodos que contenga disparen un ritmo

play05:39

de sexo ya la estoy capturando

play05:42

entonces ya implemente mi interfaz que

play05:44

viene ahora implementar el servidor de

play05:46

e-mail

play05:48

entonces aquí en esta implementación

play05:49

vemos

play05:51

la clase cierto public las operación

play05:55

servidor rm y ese es mi servidor esta es

play05:57

mi clase servidora servidor de e-mail

play06:01

extiende de esta otra clase cierto esa

play06:06

es una clase de java una clase ya va a

play06:08

haití hay que utilizarla y aquí lo

play06:10

importante le estamos diciendo

play06:12

implemente operación de interfaz

play06:13

recuerden que esa fue la interfaz que

play06:15

nosotros definimos

play06:17

obviamente hay que tener cuidado con los

play06:20

porque vayamos a utilizar

play06:22

dentro de esta clase viene bueno esta

play06:24

línea que es por el tema de

play06:26

serialización esta clase va a viajar por

play06:30

la red desde la máquina donde se instala

play06:33

el servidor hasta la máquina del cliente

play06:35

entonces necesitas ser y analizarse y

play06:37

para eso java solicita un identificador

play06:40

de serialización pero es un valor que

play06:42

pueden o no pueden colocar no va a

play06:44

generar ningún problema y seguramente

play06:46

marcará un warning pero más allá de eso

play06:48

no hay ningún inconveniente definimos

play06:50

una variable estática una variable final

play06:53

perdón una variable final llamada puerto

play06:55

este es el número del puerto a través

play06:57

del cual el cliente me va a conectar

play07:00

recuerden que una tarjeta de red un

play07:02

dispositivo de radio un computador

play07:04

cuando se conecta a una red necesita un

play07:06

puerto todos los servicios salen por un

play07:07

puerto si ustedes navegan el navegador

play07:10

busca los puertos 80 hace consulta a

play07:12

través de los puertos 80 en este caso

play07:14

esta aplicación de gmail va a decirle la

play07:17

tarjeta de red

play07:18

voy a estar escuchando por clientes pero

play07:20

solo me pueden localizar en el puerto 32

play07:23

32

play07:24

este dato sirve porque el cliente tiene

play07:27

que decir en qué puerto va a localizar

play07:29

al servidor

play07:31

lo siguiente que sigue tenemos que

play07:33

declarar un constructor pero importante

play07:37

tiene que hacer un tros remote s p's yo

play07:39

necesito que esta clase de servidora

play07:42

tenga un constructor el constructor

play07:43

puede estar vacío no hay ningún

play07:44

inconveniente pero no pueden omitir lo

play07:46

porque porque de nuevo necesitamos que

play07:50

haga un trolls remote 'decepción'

play07:53

lo segundo está el método main yo voy a

play07:56

arrancar mi servidor necesito un método

play07:58

main para ejecutar esta clase y lo único

play08:00

que hago es creó la instancia e invoco

play08:02

el método iniciar servidor ya en un

play08:04

momento pasamos a consultar que tiene

play08:06

este método por dentro a continuación

play08:08

vamos a ver el resto de la clase

play08:10

entonces aquí continuamos con el mail

play08:13

mail lo repetimos sólo por visualización

play08:15

y aquí viene nuestro método iniciar

play08:18

servidor esto es lo que estamos

play08:20

invocando cuando ejecutamos nuestra

play08:21

clase

play08:22

rm entonces lo primero que hacemos son

play08:24

estas dos líneas estas dos líneas es

play08:27

importante que sentirán son sólo de

play08:29

ayuda para el servidor es decir acá lo

play08:32

que estamos haciendo es obtenemos la

play08:33

dirección de ip de nuestra máquina y

play08:37

después imprimimos por consola que estoy

play08:39

escuchando en determinada dirección con

play08:42

determinado puerto esto de nuevo es sólo

play08:45

informativo lo que esto le permite que

play08:47

quien vaya a querer conectarse con

play08:48

ustedes con este vídeo pues sepa qué

play08:50

dirección ip tiene que hacerlo y a qué

play08:52

puerto a qué puerto puede puede hacerlo

play08:55

lo importante son las dos líneas

play08:57

siguientes

play08:58

recuerden que al comienzo y bueno aquí

play09:00

vemos en el diagrama lo que hace al

play09:02

servidor de rm es obtener el registro de

play09:05

e-mail y decirle por favor guárdame en

play09:08

esta instancia entonces lo que estamos

play09:10

haciendo en esta línea en esta primera

play09:12

línea es obtener el registro bueno en

play09:15

este caso creamos el registro y le decir

play09:17

le pasamos el puerto

play09:19

este es el registro que van a acceder en

play09:22

que el cliente va a acceder una vez

play09:23

localice mi máquina ustedes creó el

play09:26

registro en ese puerto y le digo guarde

play09:28

con esta llave guarde esta información

play09:33

esto es muy similar a cuando ustedes

play09:35

trabajan un hash map o trabaja en un

play09:37

hash table en el cual información se

play09:39

guarda de la forma llave valor entonces

play09:41

aquí sucede igual ustedes con una llave

play09:43

que es este string que se llama

play09:45

operación servidor van a guardar esto

play09:47

entonces cuando el cliente necesite esa

play09:50

instancia lo que hace es pedir el

play09:51

registro y decirle devuelva me lo que se

play09:55

guardó con este valor operación servidor

play09:57

y eleva a retornar la instancia del

play10:00

servidor de mail

play10:01

otra cosa importante que vemos es esto

play10:03

fíjense operación interfaz y un disc ahí

play10:07

estoy guardando la referencia del

play10:09

servidor es decir de esta clase esta

play10:11

clase que se llama operación servidor de

play10:13

mail estoy guardando esta instancia y le

play10:16

estoy haciendo un casting a la interface

play10:18

a la interfaz operación interfaz de modo

play10:21

que el cliente cuando saque el objeto

play10:23

remoto

play10:24

ya que es la referencia pero hacia la

play10:27

interfaz no hacia la clase no hacia esta

play10:29

clase operación servidores de mail esto

play10:33

es importante por todo el tema de

play10:34

acoplamiento buscar siempre un bajo

play10:37

acoplamiento y es la manera como se

play10:38

trabaja además ere mail

play10:41

finalmente tenemos la implementación del

play10:43

método entonces esto sí es muy normal

play10:44

este método calcular mayor lo que hace

play10:46

es que recibe dos números y establece

play10:49

cuál es el mayor y los retornan no hace

play10:51

nada más entonces el cliente que va a

play10:53

ser va a solicitarla con la dirección ip

play10:56

y con el puerto tiene el registro del

play10:58

registro obtiene la referencia de

play11:02

operación interfaz y con eso pasa a

play11:05

hacer la invocación del método calcular

play11:06

mayor

play11:08

después de implementar este vídeo la

play11:10

clase se vio y nosotros nos damos cuenta

play11:13

que nuestro proyecto para que funcione

play11:15

tiene que haber agregado estelar y es

play11:20

sellar de donde surge pues recuerden que

play11:22

nosotros teníamos que crear un proyecto

play11:24

aparte para implementar la interfaz de

play11:26

gmail entonces este proyecto a ese

play11:29

proyecto nosotros le generamos el llar y

play11:31

lo que hacemos es agregar e sellar o

play11:33

vincular enseñar albil pack de nuestro

play11:36

proyecto

play11:36

rm y server project de esa manera es

play11:39

como yo puedo como la clase puede hacer

play11:41

puede conocerlo de ninguna otra manera

play11:44

podría conocerla podría conocer la

play11:47

interfaz operación interfaz

play11:51

una vez ejecutamos nuestra clase

play11:52

servidor main la consola nos va a

play11:55

imprimir esta información escuchando en

play11:57

que fue el texto que nosotros le

play11:58

configuramos seguido de toda la

play12:01

dirección y ned address que viene hasta

play12:02

acá que nos interesa esta información no

play12:05

interesa la dirección ip cierto esta es

play12:08

la dirección ip y este es el puerto que

play12:11

nosotros le configuramos entonces ya

play12:13

tenemos esas dos esos datos y esos dos

play12:15

datos son los que nosotros le vamos a

play12:16

pasar al cliente para que el cliente

play12:18

pueda conectarse con nosotros

play12:21

de esta manera y muy simple ya tenemos

play12:24

implementado el servidor de gmail que

play12:26

viene ahora implementar a los clientes o

play12:29

bueno al cliente lo que tenemos que

play12:30

hacer ahora de la misma manera como el

play12:32

servidor el proyecto del servidor y

play12:34

remedy tenía que agregar a subir path

play12:36

eliar de la interfaz el proyecto de

play12:39

cliente tiene que hacer lo mismo tiene

play12:40

que agregar el iarc correspondiente a la

play12:43

interfaz entonces este es el proyecto

play12:45

del cliente y aquí vemos que se agregó

play12:48

el ya correspondiente a la interfaz esto

play12:51

es importante porque el cliente tiene

play12:52

que conocer también la interfaz de gmail

play12:55

ahora viene la implementación de nuestro

play12:57

cliente de mail es mucho más concreto

play13:00

porque simplemente es obtener el

play13:01

registro del servidor y realizar la

play13:03

invocación en este caso definimos dos

play13:05

variables definimos la dirección de la

play13:08

dirección ip cierto la dirección del

play13:10

servidor en este ejemplo estoy

play13:12

utilizando localhost pero porque estoy

play13:14

haciendo las cosas en mis máquinas si se

play13:15

fuera utilizar en dos máquinas

play13:17

efectivamente entonces es un ejemplo de

play13:19

dirección ip podría ser 172 punto 18.22

play13:24

punto 31 podría ser una dirección

play13:28

y el puerto que especificamos que es el

play13:30

que vamos a utilizar para la invocación

play13:32

entonces que viene

play13:33

lo primero obtenemos el registro eso es

play13:36

lo primero lo que vamos a hacer

play13:37

obtenemos el registro le pasamos la

play13:40

dirección del servidor y le pasamos la

play13:43

dirección del puerto son los dos datos

play13:44

importantes que necesitamos para la

play13:46

invocación de mail

play13:48

entonces el cliente lo que hace con es

play13:49

invocaciones que va hasta esa máquina va

play13:51

hasta ese puerto y obtiene el registro

play13:53

el registro de mail

play13:55

después con el registro fíjense

play13:59

este fue la palabra la llave que le

play14:01

colocamos en la clase servidor de e-mail

play14:04

entonces le estamos diciendo a ese

play14:05

registro le estamos diciendo localice o

play14:07

encuentre lo que se guardó con la

play14:11

palabra operación servidor y le estoy

play14:13

haciendo un casting con la interfaz r

play14:15

mail operación interfaz y lo guardo en

play14:18

esta variable y esta variable de qué

play14:20

tipo es de tipo operación interfaz por

play14:24

eso es importante que el jack de la

play14:25

interfaz de gmail se encuentra también

play14:27

dentro del proyecto del cliente de gmail

play14:30

que sigue después de que ya tengo la

play14:33

información después de que ya tengo el

play14:35

objeto a la instancia lo único que haya

play14:36

confianza

play14:39

invoco el método como si ese objeto

play14:43

estuviera en mi máquina que a partir de

play14:45

ese momento este objeto se comporta

play14:47

normal como si estuviera en su máquina

play14:49

ustedes pueden invocar un método dos

play14:50

métodos tres metros todos los métodos de

play14:52

ramey que ustedes necesiten sin ningún

play14:54

inconveniente le pasan los parámetros

play14:57

ese método les devuelve un valor y

play14:59

ustedes hacen lo que necesiten con el

play15:00

valor en este ejemplo estamos

play15:02

imprimiendo esa información y eso es

play15:05

todo lo que hace el cliente de gmail se

play15:08

pueden dar cuenta es maravilloso casi

play15:11

mágico de acuerdo pues ya tenemos los

play15:13

clientes ya tenemos el servidor ya sólo

play15:16

queda disfrutar las bondades de gmail y

play15:19

eso es todo entonces y no tuvieron que

play15:21

aprender a utilizar gran colisionador de

play15:23

hadrones que seguro era la preocupación

play15:25

que muchos tenían cuáles son las

play15:27

consideraciones finales deben desactivar

play15:28

el firewall del sistema operativo los

play15:31

firewalls y los firewalls sirven para

play15:33

evitar line

play15:34

de conexiones del exterior no

play15:37

autorizadas obviamente si ustedes van a

play15:40

crear un servidor de reynés están

play15:42

recibir conexiones entonces tienen que

play15:44

desactivar el firewall para que puedan

play15:46

la gente pueda localizar los clientes

play15:48

puedan conectarse con ustedes segunda

play15:51

consideración tienen que estar en la

play15:53

misma subred esto es importante internet

play15:57

se configura de dos direcciones ip y

play15:59

dirección ip reales o públicas y las

play16:02

decisiones ip privadas

play16:05

las públicas son las que se pueden hacer

play16:07

desde cualquier lugar del mundo del

play16:08

planeta las privadas son las que

play16:10

solamente se pueden hacer entre los

play16:12

equipos que están en una misma red hagan

play16:14

de cuenta una lan en un salón de clase o

play16:17

la red universitaria pero desde sus

play16:20

casas a la red de la universidad muy

play16:22

seguramente no se va a poder realizar la

play16:24

conexión entonces tiene que ser en un

play16:26

ambiente cercano o con ip públicas

play16:28

finalmente tener presente la versión de

play16:31

java porque es importante tener presente

play16:32

la versión de java el proyecto que

play16:35

ustedes tienen la interfaz de rm tiene

play16:37

que estar compilado en una versión de

play16:38

java que sea accesible para todos los

play16:42

clientes un ejemplo si ustedes confiesa

play16:44

ustedes compilan

play16:45

el proyecto de la interfaz utilizando

play16:48

java 8

play16:50

y los clientes utilizan java 7 se va a

play16:54

generar un error de compilación y no van

play16:56

a poder utilizar la interfaz y mucho

play16:57

menos invocar al servidor todo en este

play16:59

caso que hay que hacer utiliza la menor

play17:02

versión de java para compilar el

play17:05

proyecto de la interfaz o en este caso

play17:07

que los clientes todos se actualizarán

play17:09

hacia la versión correspondiente del

play17:11

proyecto de la interfaz de gmail y bueno

play17:13

finalmente eso es todo no es más les

play17:16

agradezco el tiempo espero haberles

play17:17

colaborado y espero verlos en un próximo

play17:20

vídeo

Rate This

5.0 / 5 (0 votes)

Связанные теги
JavaRMIComputación DistribuidaInvocación RemotaEjemplo PrácticoServidorClienteSerializaciónFirewallSubredVersión Java
Вам нужно краткое изложение на английском?