NullPointerException Usando RMI

5 respostas
frainer

Boa noite.

Estou a um bom tempo tentando descobrir a causa do erro abaixo:

Exception in thread main java.lang.NullPointerException

at com.tela.Tela.(Tela.java:75)

at com.tela.Tela.main(Tela.java:84)

No seguinte trecho do código:

IMonitor aux = (IMonitor) Naming.lookup( "rmi://localhost/ServicoRMI" );
        System.out.println(aux);
        
    	label = new JLabel(aux.refresh());
        //aqui retorna um string

IMonitor é a interface.
aux retorna: Monitor_Stub[UnicastRef [liveRef: [endpoint:10.80.1.217:2686,objID:[15
f27bb3:11499e0f60b:-7fff, 5908125024763172387]]]]
e parece estar tudo ok com o serviço RMI também porque na sessão do DOS que ele está ativo a cada execução ele retorna null.
O método refresh está em uma classe Monitor que parece não estar sendo chamado, pois lá só retorno uma string “teste”.

Alguém já passou por isso ou tem alguma idéia que possa me ajudar a descobrir o que pode estar acontecendo?

Obrigado :wink:

5 Respostas

vanilton.coelho

Aux foi instanciado man? cadê o “new” alguma coisa, vc tem que instanciar o aux com a classe que implementa essa interface “Imonitor”. Acho que é isso.

M

N precisa d new nenhum… o q tu ta fazendo ta certo… soh que não estás conseguindo encontrar o objeto via RMI (na verdade n ta conseguindo fazer a chamada de metodo remoto). O canal é tu dar uma olhada se tu ta registrando corretamente as interfaces no cliente e no servidor… lembre-se que RMI não é magica! ele n vai simplesmente te dar o metodo correto do objeto certo se você não dizer para ele quais objetos devem ser expostos à camada de RMI.

M

Se puder mandar o codigo do servidor RMI o pessoal podia t dar uma força maior.

frainer

O serviço RMI está assim:
Eu abro uma sessão com ele e parece estar registrando ok
O que estou pretendendo é chamar o método refresh do Monitor através de uma chamada do método refresh da sua interface IMonitor, tem mais algo a ser feito?

public class ServicoRMI {
	public ServicoRMI() { 
        try { 
        	
            IMonitor teste = new Monitor(); 
            Naming.rebind("rmi://localhost/ServicoRMI", teste);
            
            String[] list = Naming.list("//localhost/");   
            System.out.println("Objeto registrado com sucesso! \n" +Arrays.toString(list));  
            
        } 
        catch( Exception e ) { 
            System.out.println( "Trouble: " + e ); 
        } 
    } 
	public static void main(String args[]) {
	     new ServicoRMI();
	   }

}
M

tem uns erros ai… da uma olhada em http://www.javafree.org/javabb/viewtopic.jbb?t=1846. Tu ta registrando d forma errada. e v c tu ta fazendo outros detalhes corretamente (extender Remote nas interfaces de serviço, etc.)

Criado 24 de agosto de 2007
Ultima resposta 24 de ago. de 2007
Respostas 5
Participantes 3