Remote Method Invocation (RMI)

Es un mecanismo ofrecido para invocar un método de manera remota. Proporciona un mecanismo simple para la comunicación de servidores en aplicaciones distribuidas.

Lo cómodo que tiene RMI es que las conexiones son transparentes para el programados, ya no hay que estar jugando con los socket, RMI se encarga de ello 🙂

Servidor:

#!/usr/bin/env python

import Pyro.core


class Servidor(Pyro.core.ObjBase):
    def __init__(self):
        Pyro.core.ObjBase.__init__(self)
    def hello(self, name):
        print "se solicito metodo hello()"
    saludo = "Hola %s" %name
    return saludo
              
def main():
    try:
        Pyro.core.initServer()
        demonio=Pyro.core.Daemon()
        uri=demonio.connect(Servidor(), "servidor")
        print "El servidor de Hola Mundo:",uri
        demonio.requestLoop()
    except:
        demonio.disconnect(uri.objectID)

if __name__=="__main__":
    main()

Cliente:

#!/usr/bin/env python

import Pyro.core
import os

class Cliente(object):
    def __init__(self):
        self.servidor = Pyro.core.getProxyForURI("PYROLOC://localhost:7766/servidor")

    def cli(self, name):
        nom = self.servidor.hello(name)
        print nom

Pyro.core.initClient()
client=Cliente()



def main():

    os.system("clear")
    while True:
       n = raw_input("Nombre :")
       client.cli(n)

if __name__=="__main__":
    main()

Para ejecutar el servidor en GNU/Linux en la consola colocar python servidor.py , en el caso del cliente es python cliente.py

ahora un pequeño ejemplo de un servidor y cliente(s) bajo rmi 😉

 

Saludos