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