Onde estou com duvidas em certos pontos, com passar parâmentos de um cliente RMI para o Servidor responsavel por toda parte de logica de negocios e integração com Banco de dados.
Todos exemplo disponivel na internet que encrontrei, não demostra como passar estes valores.
Alguem poderia tirar minha duvida ou passar um exemplo.
Você vai passar os parâmetros nos métodos, como em um programa Java comum.
Lembre-se que vc tem que ter a mesma interface dos dois lados (cliente e servidor).
Veja um exemplo:
:arrow: MetodosRemotos.java:
/* Interface responsavel pela descricao do metodo remoto Indica qual o formato e nome do metodo que sera disponibilizado na rede.*/importjava.rmi.Remote;importjava.rmi.RemoteException;publicinterfaceMetodosRemotosextendsRemote{longgetDobro(longl)throwsRemoteException;}
:arrow: Servidor.java:
importjava.rmi.registry.Registry;importjava.rmi.registry.LocateRegistry;importjava.rmi.RemoteException;importjava.rmi.server.UnicastRemoteObject;// Classe servidor responsavel pela implementacao do metodo remoto// e pelo registro do metodo no registrypublicclassServidorimplementsMetodosRemotos{publicServidor(){}// Implementacao do metodo que ficara disponivel remotamentepubliclonggetDobro(longl){returnl*2;}publicstaticvoidmain(Stringargs[]){try{Servidorobj=newServidor();// cria um novo objeto// Cria objeto stub que pode responder invocacoes remotas// esse objeto eh associado ao objeto que implementa o metodo// no caso obj que eh do tipo ServidorMetodosRemotosstub=(MetodosRemotos)UnicastRemoteObject.exportObject(obj,0);// Cria um registry responsavel pelo cadastramento do stub no// servidor de registros (rmiregistry)// Associa o nome 'dobro' o metodo remoto, ou seja, o metodo getDobro// eh encontrado na rede com o nome 'dobro'Registryregistry=LocateRegistry.getRegistry();registry.bind("dobro",stub);System.err.println("Servidor carregado.\nAguardando solicitações...");}catch(Exceptione){System.err.println("Exception: "+e.toString());e.printStackTrace();}}}
:arrow: Cliente.java:
importjava.rmi.registry.LocateRegistry;importjava.rmi.registry.Registry;publicclassCliente{privateCliente(){}publicstaticvoidmain(String[]args){//Carrega o ip do host dservidor através do argumento passadoStringhost=args.length==1?args[0]:null;try{// Pega o stub do servidor no endereco definido em host// Caso host = null, indica que o servidor eh localRegistryregistry=LocateRegistry.getRegistry(host);// Invocacao do metodo remoto atraves do metodo lookupMetodosRemotosstub=(MetodosRemotos)registry.lookup("dobro");// Objeto stub responsavel por associar a interface remota// chama o metodo remoto 'getDobro'Longresponse=stub.getDobro((long)5);System.out.println("Resposta do servidor: "+response);}catch(Exceptione){System.err.println("Client exception: "+e.toString());e.printStackTrace();}}}
Não esqueça que você precisa ter o rmiregistry rodando. Pra iniciar ele no Windows:
[color=green]rmiregistry.exe[/color]
ou
[color=green]cd %JAVA_HOME%/bin
rmiregistry.exe[/color]
Pra iniciar ele no Linux:
[color=green]rmiregistry[/color]
fabiano-under
Caro Amigo
Quando rodo o Servidor da um mensagen de Erro: