Erro em RMI

4 respostas
P

Ae pessoal.
Fiz uns códigos utilizando RMI. Dei os “javac’s” e os “rmic’s” nas devidas classes, nisso não teve erro. O problema foi o seguinte, no windows funcionou beleza, mas no linux deu o seguinte erro:

“Error: java.rmi.UnmarshalException: Error unmarshaling return header; nested exception is:
java.net.SocketException: Connection reset”

Alguém já passou por isso? Teve solução?

4 Respostas

J

Oi

pedpano, tu ta com o iptables, snort, ipchains ou qualquer outro firewall rodando no LInux???

T+

P

Não estou usando firewall não…

O erro agora mudou, percebi que quando dava o rmiregistry, parece que ele pegava algum “rmiregistry” do GCJ. Agora eu executo direto do local onde está o java, “/caminho/rmiregisry”, ai resolve o problema que estava dando antes.
O problema agora mudou, quando executo o cliente aparece o erro:

“error: java.rmi.NotBoundException: ped”

Pelo geito deve estar com problemas no rmiregitry…

M

o erro quer dizer q tu nao fez bindou o método q quer usar com RMI…

P

o pior q fiz isso sim…
no windows tah funcionando q eh uma beleza.

se alguem se abilitar a testar no Linux ai o código é esse:

//interface******************

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface Calculo extends Remote

{

public void resultado(double resultado, int num1, int num2, String operacao, String maquina) throws RemoteException;
public int aleatorio_0_100() throws RemoteException;

public int aleatorio_0_3() throws RemoteException;

}

//CLIENTE *******************************************

import java.rmi.<em>;

import java.rmi.server.</em>;
public class CalculoCliente

{

public static void main(String[] args)

{

try

{

Calculo calc = (Calculo)Naming.lookup(“rmi://127.0.0.1/calculo1);
int num1 = calc.aleatorio_0_100();
		System.out.println(num1);
	}
	catch(Exception e)
	{
		System.out.println("Error" + e);
	}
}

}

//server*************************************

import java.rmi.;
import java.rmi.server.
;

public class CalculoServer extends UnicastRemoteObject implements Calculo

{

public static void main(String[] args)

{

try

{

CalculoServer calc = new CalculoServer();

Naming.rebind(rmi://127.0.0.1:1099/calculo1”, calc);

}

catch(Exception e )

{

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

}

}

public CalculoServer() throws RemoteException

{

super();

}
public void resultado(double resultado, int num1, int num2, String operacao, String maquina) throws RemoteException
{
	//gravar num arquivo
	System.out.print(resultado + "  "+num1+"  "+num2+"  "+operacao+"   "+maquina);
}

public int aleatorio_0_100() throws RemoteException
{
	//pegar um numero aleatorio entre 0 e 100
	double num_aleatorio_0_100;
	num_aleatorio_0_100=Math.random()*100;
	//System.out.println((int)num_aleatorio);

	return (int)num_aleatorio_0_100;
}

public int aleatorio_0_3() throws RemoteException
{
	//pegar um numero aleatorio entre 0 e 3 (usar para sortear uma operacao)
	double num_aleatorio_0_3;
	num_aleatorio_0_3=(Math.random()*7)/2;
	//System.out.print((int)num_aleatorio_0_3);

	return (int)num_aleatorio_0_3;
}

}

Obs: código incompleto, mas jah da pra testar.

Criado 4 de junho de 2004
Ultima resposta 5 de jun. de 2004
Respostas 4
Participantes 3