Rmi

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?

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.

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.

[/quote]

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

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

Meu servidor esta assim charles

[code]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();  
}  

}[/code]

SO que o servidor e o cliente sao projetos diferentes…

veja na imagem


[code] 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();    
    }    
      
}  [/code]

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.

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

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.

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!!!

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


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…

[quote=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…[/quote]

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.

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.

[quote=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.[/quote]

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.

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

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

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

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 ?