// CountClientR.java RMI operacao remota import java.rmi.*; import java.rmi.registry.*; public class CountClientR { Count myCount; // Localizar o servico void getRemoteReference(String namingLocation, String serviceName) throws NotBoundException, java.net.MalformedURLException, RemoteException { myCount = (Count) Naming.lookup("rmi://" + namingLocation + "/" + serviceName); } // Medir tempo para incrementar N vezes o contador remoto long incrementN(int n) throws RemoteException { long startTime = System.currentTimeMillis(); for (int i = 0 ; i < n ; i++ ) myCount.increment(); long stopTime = System.currentTimeMillis(); return stopTime - startTime; } public static void main(String args[]) { final int qtde = 1000; // Criar e instalar localmente o gerenciador de seguranca RMI System.setSecurityManager(new RMISecurityManager()); CountClientR cliente = new CountClientR(); try { // Localizar e usar o servico cliente.getRemoteReference(args[0],args[1]); long tempo = cliente.incrementN(qtde); System.out.println("Tempo total para " + qtde + " incrementos:" + tempo + " msecs"); } catch (ArrayIndexOutOfBoundsException ai) { System.err.println("Uso: java CountClientR <locreg> <servname>"); System.err.println("\t <locreg> - host[:port] para registro RMI"); System.err.println("\t <servname> - nome do servico no registro"); } catch (Exception e) { e.printStackTrace(); } System.exit(0); } }