sexta-feira, 26 de novembro de 2010

Exemplo de Remote Method Invocation

Exemplo simples de usar RMI em Java para calcular imposto:

Calculadora.java

public interface Calculadora extends java.rmi.Remote { 
    public String imposto(String a, long b)
        throws java.rmi.RemoteException; 
  
}


CalculadoraCliente.java

import java.rmi.RemoteException; 
import java.net.MalformedURLException; 
import java.rmi.NotBoundException; 
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import javax.swing.JFrame;

public class CalculadoraCliente{ 


    public static void main(String[] args) { 
        try { 
            Registry registry =LocateRegistry.getRegistry("localhost", 1500);
            Calculadora c = (Calculadora) registry.lookup("calculando");
            System.out.println( c.imposto("Ana", 1000) );
            System.out.println( c.imposto("Maria", 1500) );
            System.out.println( c.imposto("Braga", 1800) );
             
        } 
        catch (RemoteException re) { 
            System.out.println(); 
            System.out.println("RemoteException"); 
            System.out.println(re); 
        } 
        catch (NotBoundException nbe) { 
            System.out.println(); 
            System.out.println("NotBoundException"); 
            System.out.println(nbe); 
        } 
        catch (
            java.lang.ArithmeticException ae) { 
            System.out.println(); 
            System.out.println("java.lang.ArithmeticException"); 
            System.out.println(ae); 
        } 
    } 



CalculadoraImpl.java

public class CalculadoraImpl extends java.rmi.server.UnicastRemoteObject implements Calculadora { 

    public CalculadoraImpl() throws java.rmi.RemoteException { 
        super(); 
    } 

    public String imposto(String a, long b)
        throws java.rmi.RemoteException { 
        System.out.println ("Calculando imposto");
        String tmp ="";
        if(b<1200){
            tmp = a + " pagará "+ (b-(b*0.05)) +" de imposto";
        }else if(b>=1200 && b<1800){
            tmp = a + " pagará "+ (b-(b*0.10))+" de imposto";
        }else{
            tmp = a + " pagará "+ (b-(b*0.15))+" de imposto";
        }


        return tmp;
    } 

     


CalculadoraServidor.java
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class CalculadoraServidor {

   public CalculadoraServidor() {
     try {
       Calculadora c = new CalculadoraImpl();
       Registry registry =LocateRegistry.createRegistry(1500);
       registry.bind("calculando",c);
     } catch (Exception e) {
       System.out.println("Problema: " + e);
     }
   }

   public static void main(String args[]) {
     new CalculadoraServidor();
   }
}


Copie, melhore e disponibilize.


Até mais!

Nenhum comentário:

Postar um comentário