Duvida RMI

2 respostas
danilofabiano

Amigos do guj. estou tentando implementar uma solucao usando rmi, tenho a seguinte estrutura:

Mensagen - interface
MensagenImpl - classe que implementa a interface e estende UnicastRemoteObject com o seguinte codigo:

public class MensagemImpl extends UnicastRemoteObject implements Mensagem {

public MensagemImpl() throws RemoteException {
    super();
}

public void Ativar(int status) throws RemoteException {
    Zeiber.TelaMananger(status);
}

public void Ligar(int status) throws RemoteException {
    //    
}

}


MensagemServer - na qual tenho o seguinte codigo

try {

Mensagem m = new MensagemImpl();

Naming.rebind(MensagemService, m);

}

catch( Exception e ) {
System.out.println( "Trouble: " + e );
    }
}

na classe mensagemCliente tem o seguinte codigo:

public class MensagemClient {

public static void main( String args[] ) {
    try {
        Mensagem m = (Mensagem) Naming.lookup( "rmi://localhost/MensagemService" );
//           System.out.println( m.lerMensagem() );

m.Ativar(1);

}

catch( MalformedURLException e ) {

System.out.println();

System.out.println( "MalformedURLException: " + e.toString() );

}

catch( RemoteException e ) {

System.out.println();

System.out.println( "RemoteException: " + e.toString() );

}

catch( NotBoundException e ) {

System.out.println();

System.out.println( "NotBoundException: " + e.toString() );

}

catch( Exception e ) {

System.out.println();

System.out.println( "Exception: " + e.toString() );

}

}

}

quando eu acesso localmente o servidor com a classe cliente, funciona bem (claro que eu inicializo o rmiregistry), mas se eu inicializo o servidor em outro micro eu nao consigo fazer funcionar, dar o seguinte erro:

RemoteException: java.rmi.ConnectIOException: Exception creating connection to: 192.168.1.9; nested exception is:
java.net.NoRouteToHostException: No route to host

Alguem pode me ajudar??

2 Respostas

agx

Olá Danilo, talvez eu esteja “chovendo no molhado”, mas se é exatamente este o código do cliente que vc está usando para acessar um servidor remoto, acredito que deva informar o host do server:

// trocar
Mensagem m = (Mensagem) Naming.lookup( "rmi://localhost/MensagemService" );

//por

Mensagem m = (Mensagem) Naming.lookup( "rmi://IP_DO_SERVER/MensagemService" );
danilofabiano

Entao, descobrir que era uma vacilo meu, pois eu tinha um jar que inicializava o servidor(ou devia fazer isso), mas em vez disso, chamava outra classe. no meu micro local funcionova por que eu ativava o servidor diretamente. nao sei se entendeu, mas o resumo da opera é que eu tava fazendo errado. obrigado pela ajuda

Criado 21 de abril de 2006
Ultima resposta 22 de abr. de 2006
Respostas 2
Participantes 2