Rmi

17 respostas
evertonsilvagomesjav

Pessoal eu criei dois projetos, um CLiente e outro Servidor.

A duvida e o seguinte, como meu Projeto cliente vai conseguir fazer a chamada do servidor? Pois a classe esta no servidor.

ClienteRemoto clienteRemoto = (ClienteRemoto) Naming.lookup("ClienteRemoto"); // Esse ClienteRemoto esta rodando no projeto Servidor q ficará em outra máquina, como meu projeto cliente vai fazer a chamada?

17 Respostas

charles.eduardo

Evertonsilvagomesjava este codigo acima acredito que deveria estar rodando no cliente no qual no Naming.lookup() seria passado uma string com o endereço de IP, porta e a interface do objeto a ser usado.
Tipo…

String url = "rmi://127.0.0.1:1099/classeASerUsadaQueFoiRegistradaNoRegistryPeloMetodobind()"; ClienteRemoto clienteRemoto = (ClienteRemoto) Naming.lookup(url);

Aqui tem o tutorial da Oracle http://docs.oracle.com/javase/tutorial/rmi/overview.html e o do Guj para esclarecer melhor http://www.guj.com.br/articles/37.

evertonsilvagomesjav

Evertonsilvagomesjava este codigo acima acredito que deveria estar rodando no cliente no qual no Naming.lookup() seria passado uma string com o endereço de IP, porta e a interface do objeto a ser usado.
Tipo…

String url = "rmi://127.0.0.1:1099/classeASerUsadaQueFoiRegistradaNoRegistryPeloMetodobind()"; ClienteRemoto clienteRemoto = (ClienteRemoto) Naming.lookup(url);

Aqui tem o tutorial da Oracle http://docs.oracle.com/javase/tutorial/rmi/overview.html e o do Guj para esclarecer melhor http://www.guj.com.br/articles/37.

Charles este codigo esta no Cliente, mas no cliente eu nao tenho essa interface ClienteRemoto ela esta no projeto Servidor, como vou fazer?

charles.eduardo

Evertonsilvagomesjava posta teu codigo do servidor… ele tem registrado o ClienteRemoto?

evertonsilvagomesjav

Meu servidor esta assim charles

package br.com.servidor;

import java.rmi.Naming;

import br.com.implementacao.rmi.ClienteServicoRemoto;
import br.com.interfaces.rmi.ClienteRemoto;

public class Servidor {

	public Servidor() {  
        try {  
        	
        	ClienteRemoto clienteServico = new ClienteServicoRemoto();
            Naming.rebind("ClienteRemoto", clienteServico);  
            
        }catch( Exception e ) {  
           e.printStackTrace();
        }  
    }  
  
    public static void main(String[] args) {  
        new Servidor();  
    }  
	
}

SO que o servidor e o cliente sao projetos diferentes...

veja na imagem

charles.eduardo
package br.com.servidor;  
      
    import java.rmi.Naming;  
      
    import br.com.implementacao.rmi.ClienteServicoRemoto;  
    import br.com.interfaces.rmi.ClienteRemoto;  
      
    public class Servidor {  
      
        public Servidor() {    
            try {    
                  
                ClienteRemoto clienteServico = new ClienteServicoRemoto(); 
                //Naming.rebind("ClienteRemoto", clienteServico);  Trocar
                Naming.rebind("rmi://127.0.0.1:1099/ClienteServico", clienteServico)
            }catch( Exception e ) {    
               e.printStackTrace();  
            }    
        }    
        
        public static void main(String[] args) {    
            new Servidor();    
        }    
          
    }

Aqui no seu cliente vc acessa...

ClienteRemoto clienteRemoto = (ClienteRemoto) Naming.lookup("rmi://127.0.0.1:1099/ClienteRemoto");
clienteRemoto.metodo();

Dá uma verificadas nos dois artigo que eu passei que irá esclarecer bem melhor.

evertonsilvagomesjav

Charles ta asim cara, o problema e que a classe(interface) ClienteRemoto faz parte de outro projeto, nao tem como eu usala no Cliente que faz parte de outro projeto entendeu? Nao tem como eu dar import

evertonsilvagomesjav

Olha na imagem q eu postei, o meu Cliente vai usar a chamada rmi em um projeto diferente da onde ta a Interface no Servidor, sao dois projetos.

charles.eduardo

Isso, mais o que importa é tu abrir a porta para o servidor(projeto separado) ficar esperando uma solicitação do cliente(O outro projeto). Você leu o tutorial aqui do GUJ? Tentou com as alterações que coloquei no codigo… Cara para esclarecer bem acredito que aqueles dois artigos irão clarear bastante!!!

evertonsilvagomesjav

Eu ja li Charles, mas como vou importar o ClienteRemoto se ele nao ta no meu projeto? Olha a imagem fazendo favor.


charles.eduardo

A classe Servidor deveria esta no projeto Agencia de Turismo. O qual teria que ter tambem as interfaces remotas…
Assim seu outro projeto conseguiria acessar…

evertonsilvagomesjav

charles.eduardo:
A classe Servidor deveria esta no projeto Agencia de Turismo. O qual teria que ter tambem as interfaces remotas…
Assim seu outro projeto conseguiria acessar…

Pois é mas assim como vou distribuir a aplicação, usando duas maquinas por exemplo?

Estava pensando em uma maqina ter meus Servicos da Interface com um projeto, e outra maquina ser o Cliente acessando a maquina servidora.

charles.eduardo

Aqui explica como… http://www.youtube.com/watch?v=itIZlUkO2w4, http://www.slideshare.net/tryonn/tutorial-passo-a-passo-sobre-rmi.
Cara como eu vou te explicar teu projeto AgenciaTurismo tem que disponibilizar o serviço para o outro projeto.

evertonsilvagomesjav

charles.eduardo:
Aqui explica como… http://www.youtube.com/watch?v=itIZlUkO2w4, http://www.slideshare.net/tryonn/tutorial-passo-a-passo-sobre-rmi.
Cara como eu vou te explicar teu projeto AgenciaTurismo tem que disponibilizar o serviço para o outro projeto.

Charles, meu projeto agencia turismo ja ta pronto, tem meus Daos minhas Fachadas, o que eu tinha entendido e queria fazer, era pegar a parte de Persistencia e coloca-la em um servidor e a parte de Visão no cliente, é isso que estou tentando fazer.

charles.eduardo

Cara não sei não, mais os tutoriais irão esclarecer suas duvidas!!! Bons estudo e boa sorte!!!

evertonsilvagomesjav

Aaaeeeeee Charles consegui aqui velho, valeu pela ajuda!!!

charles.eduardo

Entao agora é so colocar [Resolvido] no titulo!!! hehehe, e posta o codigo da solução!!! Flw bonfind!!!

aechiara

faz MUITO tempo que não VEJO RMI, mas naquela época vc tinha que criar as interfaces locais e remotas, colocar num jar separado que faria parte dos 2 projetos (servidor e cliente)

vc fez isso ?

Criado 22 de setembro de 2012
Ultima resposta 25 de set. de 2012
Respostas 17
Participantes 3