Dúvida RMI, ClassNotFoundException, Localização Classes

Boa Tarde Pessoal :slight_smile:

Eu estou estudando RMI e desenvolvendo um pequeno sistema para treinar os estudos e talz…

Eu consegui fazer compilar tudo direito, gerei o stub, iniciei o rmiregistry.

Os arquivos do cliente em uma pasta para cliente e os arquivos do servidor em uma pasta do servidor (estou testando em uma unica máquina)

Depois de iniciar o rmiregistry executo a classe que contem o main do servidor, executo também a classe que contém o método main de cliente, até aí beleza.

Acontece que quando, no cliente, vou chamar algum método do servidor, aparece o seguinte erro:

NomeClasse é a classe que contem o método que estou tentando chamar de verdade! (Ela está no lado Servidor)

Vendo isso, peguei o arquivo class dessa classe na pasta com os arquivos do servidor e copiei para a pasta com os arquivos do cliente!!! Funcionou!

Agora a grande dúvida é se realmente essa é uma solução adequada???

As classes deveriam ficar no servidor gerando os objetos que seriam acessadas através da rede pelo RMI certo??? ou estou enganado e essas classes devem estar também no cliente???

aguardo resposta…

:smiley: :smiley: :smiley:

Alguém sabe me responder???

Então kra… na realidade vc teria ter uma a Interface
seus objetos acessam as implementações dessa interface.
De uma olha nesse link http://java.sun.com/developer/onlineTraining/rmi/RMI.html
Nos itens:
- Interfaces: The Heart of RMI
- RMI Architecture Layers
- Stub and Skeleton Layer

Eu li a referência e é o que estou fazendo aqui (tenho a interface). No código o cliente nem sabe de qual classe vem o serviço, através de:

Naming.loockup()  

eu pego o serviço e executo algum método que este serviço retornado tenha implementado da Interface Service.

Na execução desse método é que acontece o erro, ou seja, não consigo retornar o objeto real que implementa a interface Serviço, preciso dele no mesmo diretório dos arquivos do cliente para fazer funcionar.

O correto pela referência seria o cliente não precisar desses arquivos localmente, eles ficariam somente no servidor e o cliente solicita seus objetos.

Alguém mais poderia me ajudar a entender se existe algum processo esquecido ou alguém que já tenha passado por isso???

ta usando alguma ide com plugin rmi ? ou tá no braço ?

estou no braço cara, estou fazendo tudo a mão mesmo para entender melhor e talz.
:smiley:

se for o problema com o security manager, da uma olhada nesse pdf

em todo caso, ja tive problemas com class not found reclamando do stub, se acontecer isso depois você inicia o registro não por um outro prompt, mais pela seguinte linha: “LocateRegistry.createRegistry(porta);”, isso ja resolveu no meu caso.