1. Utilizando o Eclipse. Realize as tarefas a seguir:
  2. Crie um novo projeto java de nome math_server
  3. Crie uma nova inteface (file > new > inteface) de nome  InterfaceServidorMath.java do tipo RMI. Remote, utlizando o código abaixo:

 

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;

 

}

 

  1. Crie uma nova classe java ( file > new > classs) de nome ServidorMat.java do tipo RMI remote utilizando o código abaixo:

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;

 

    }

}

 

  1. Crie uma novo arquivo extensão java  ( file > new > file) de nome ArrancaServidor.java ,utilizando o código abaixo:

 

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());

 

        }

 

    }

 

}

 

  1. Copie para o diretório do workspace do eclipse, na pasta bin do seu projeto os arquivos rmiregistry.exe e e jli.dll fornecidos pelo professor.
  2. Inicie o servidor de registros do java clicando no arquivo rmiregistry.exe copiado.
  3. Teste o servidor clicando na aba correspondente ao arquivo ArrancaServidor.java e no botão de run.
  4. Crie uma novo arquivo extensão java  ( file > new > file) de nome Cliente.java ,utilizando o código abaixo:

 

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

}

 

  1. Teste o cliente e verifique se ele realiza a comunicação como servidor e os cálculos necessários.