Dúvida RMI

8 respostas
E

Senhores,

Tenho um programa simples para testar RMI em localhost mesmo; porém ao compilar o “lado” servidor, a seguinte exceção é gerada:

java.rmi.ConnectException: Connection refused to host: localhost; nested exception is:
java.net.ConnectException: Connection refused: connect

Como resolver? O que pode ser?

Obrigado!!!

8 Respostas

B

Ola,

Acredito que o problema ocorre ao rodar o servidor, não?! 8O
mas seguinte, posta a parte do codigo que tá com erro aqui, assim fica mais facil ajudar.

E

OK, la vai o código completo!!!

PS: retirei este código de um tutorial do fórum GUJ

CLIENTE:

public class Main {

public static void main(String[] args) {

try {

Mensageiro m = (Mensageiro) Naming.lookup( rmi://localhost/MensageiroService” );

System.out.println( m.lerMensagem() );

m.enviarMensagem( Hello World! );

}

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() );

}

}

}

INTERFACE:

import java.rmi.Remote;

import java.rmi.RemoteException;

public interface Mensageiro extends Remote{
public void enviarMensagem( String msg ) throws RemoteException;
public String lerMensagem() throws RemoteException;

}

IMPLEMENTAÇÃO:

import java.rmi.RemoteException;

import java.rmi.server.UnicastRemoteObject;

public class MensageiroImpl extends UnicastRemoteObject implements Mensageiro {
public MensageiroImpl() throws RemoteException {
     super();
 }

 public void enviarMensagem( String msg ) throws RemoteException {
     System.out.println( msg );
 }

 public String lerMensagem() throws RemoteException {
     return "This is not a Hello World! message";
 }

}

SERVIDOR:

import java.rmi.Naming;

public class MensageiroServer {

public MensageiroServer() {

try {

Mensageiro m = new MensageiroImpl();

Naming.rebind(rmi://localhost:1099/MensageiroService”, m);

}

catch( Exception e ) {

System.out.println( "Trouble: " + e );

}

}
public static void main(String[] args) {
     new MensageiroServer();
 }

}

G

Vc iniciou o rmiregistry???

E

Não havia iniciado… :oops:

Tentei fazer (pelo prompt) mas não deu certo!

Como devo proceder???

Tentei dar o rmic e o rmiregistry pelo prompt dando o caminho do .class que possui a minha implementação (MensageiroImpl), porém não obtive sucesso. O .class e o .java devem estar no mesmo diretório para que isto funcione???(vou testar agora!!!).
Estou utilizando o Netbeans, exite alguma maneira de gerar o skeleton e o stub automatizado pela IDE?

Obrigado!!!

E

OK, obrigado Bruno e Greenler…

Realmente faltava o rmiregistry, incluindo esta linha no código:

java.rmi.registry.LocateRegistry.createRegistry(1099);

FUNCIONOU!!! :wink:

oBRIGADO

E

Pessoal,

“localhost” funcionou beleza… Agora quando tentei colocar o servidor e o cliente em máquinas distintas (LAN e com o firewall desabilitado) não funcionou…

Alguém tem alguma idéia do que possa ser??? O que falta???

Agradeço a todos!!!

E

OK pessoal, resolvido!!! :grin:

Obrigado a todos!!! :lol:

N

Interessante =(

Tem como vc explicar o processo elton?

o tutorial test do RMI nu funfou aki no meu netbeans… tow fazendo besterinha com certeza =] soh nu sei onde =]

Você fez o processo todo dentro do IDE? Ou Compilou no prompt? se puder explicar EXATAMENTE todo o processo seria otimo… ki tow iniciando agora e realmente a coisa eh mais complicada do que eu imaginava… queria seguir essa area usando o RMI

Criado 28 de janeiro de 2008
Ultima resposta 21 de fev. de 2009
Respostas 8
Participantes 4