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) {
}
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo