import java.rmi.Remote;
import java.rmi.RemoteException;
public interface InterfaceServidorMat extends Remote {
public double soma(double a, double b) throws RemoteException;
public double subtrai(double a, double b) throws RemoteException;
public double multiplica(double a, double b) throws RemoteException;
public double divide(double a, double b) throws RemoteException;
}
import java.rmi.*;
import java.rmi.server.*;
public class ServidorMat extends
UnicastRemoteObject implements InterfaceServidorMat
{
/**
*
*/
private
static final long serialVersionUID = 1L;
public
ServidorMat() throws RemoteException
{
System.out.println("Novo Servidor instanciado...");
}
public double soma(double a, double b) throws RemoteException
{
return a+b;
}
public double subtrai(double a, double b) throws RemoteException
{
return a-b;
}
public double multiplica(double a, double b) throws RemoteException
{
return a*b;
}
public double divide(double a, double b) throws RemoteException
{
return a/b;
}
}
import
java.rmi.*;
public class
ArrancaServidor
{
public static void main(String
argv[])
{
try
{
System.out.println("Arrancando
servidor...");
Naming.rebind("ServidorMat_1", new ServidorMat());
}
catch (Exception e)
{
System.out.println("Ocorreu
um problema no arranque do servidor.\n"+e.toString());
}
}
}
public class Cliente
{
public Cliente()
{
System.out.println("Arrancando
o Cliente...");
// Vamos tentar ir
aceder ao Servidor de Registos para recolher
a interface
try
{
msi =
(InterfaceServidorMat) Naming.lookup("rmi://127.0.0.1/ServidorMat_1");
}
catch (Exception e)
{
System.out.println("Falhou o
arranque do Cliente.\n"+e);
System.out.println("Certifique-se
que tanto o Servidor de Registos como a Aplicação Servidora estão a correr
correctamente.\n");
System.exit(0);
}
}
public double area(double a, double b) throws
RemoteException
{
return msi.multiplica(a,b);
}
public double
perimetro(double a, double b) throws RemoteException
{
double metade = msi.soma(a,b);
return msi.multiplica(2.0,metade);
}
public static void main (String[]
argv)
{
Cliente
c = new Cliente();
try
{
System.out.println("Area: " + c.area(20.0,40.0));
System.out.println("Perimetro:
" + c.perimetro(20.0,40.0));
}
catch (Exception e)
{
System.out.println("Excepção
durante chamadas remotas:" +e);
}
}
private
InterfaceServidorMat msi; // A interface para o objecto remoto
}