Dúvida RMI

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

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.

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

}

Vc iniciou o rmiregistry???

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

OK, obrigado Bruno e Greenler…

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

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

FUNCIONOU!!! :wink:

oBRIGADO

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

OK pessoal, resolvido!!! :grin:

Obrigado a todos!!! :lol:

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