Passando parâmetros para um método remoto

Aprenda neste exemplo como criar uma pequena aplicação utilizando RMI.

Passando parâmetros para um método remoto

   Com este exemplo, você será capaz de desenvolver aplicações que executam métodos em máquinas remotas. Isso permite explorar ainda mais o uso do processador, podendo fazer a divisão de tarefas em diferentes máquinas, e melhora bastante o desempenho no processamento de muitas informações.

1 - Define a interface a ser utilizada

    import java.rmi.*;
   
    public interface RObject extends Remote {
        // Variável primitiva
        void primitiveArg(int num) throws RemoteException;
   
        // Método que passa uma variável serializável
        void byValueArg(Integer num) throws RemoteException;
   
        // Método que passa um objeto remoto
        void byRefArg(ArgObject arg) throws RemoteException;
    }
   
    public interface ArgObject extends Remote {
        int aMethod() throws RemoteException;
    }
   
2 - Define a implementação do objeto

    import java.rmi.*;
    import java.rmi.server.UnicastRemoteObject;
   
    public class RObjectImpl extends UnicastRemoteObject implements RObject {
        public RObjectImpl() throws RemoteException {
            super();
        }
        public void primitiveArg(int num) throws RemoteException {
        }
        public void byValueArg(Integer num) throws RemoteException {
        }
        public void byRefArg(ArgObject arg) throws RemoteException {
        }
    }

3 - Compila a implementação do objeto

    > javac RObject.java RObjectImpl.java

4 - Gera o skeleton e o stub do objeto definido

    > rmic RObjectImpl

5 - Cria uma instância do objeto remoto e liga(bind) este ao registro do RMI.

    try {
        RObject robj = new RObjectImpl();
        Naming.rebind("//localhost/RObjectServer", robj);
    } catch (MalformedURLException e) {
    } catch (UnknownHostException e) {
    } catch (RemoteException e) {
    }

6 - Chama o método Look up para encontrar o objeto remoto, e depois basta chamar os métodos que devem ser executados de forma remota.

    try {
        // Encontra o objeto remoto
        RObject robj = (RObject) Naming.lookup("//localhost/RObjectServer");
   
        // Passa uma variável primitiva como argumento
        robj.primitiveArg(1998);
   
        // Passa um objeto serializado como argumento
        robj.byValueArg(new Integer(9));
   
        // Passa um objeto remoto como argumento
        robj.byRefArg(new ArgObjectImpl());
    } catch (MalformedURLException e) {
    } catch (UnknownHostException e) {
    } catch (NotBoundException e) {
    } catch (RemoteException e) {
    }

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados