Rmi

8 respostas
gisa_screen

ola…

alguem tem um exemplo de códigos que implementa um sistema RMI? Tipo tenho que desenvolver uma aplicação de Vendas de Cd… sei que tenho que ter as classes ClienteRMI, ServidorRMI,etc… só que tenho dúvida em relação aos pacotes, organizar…(ja até baixei um arquivo do Guj que fala sobre RMI, esclareceu um pouco…)

Ajude-me!
Agradeço:Obrigado a Todos!

8 Respostas

juniorsatanas

eu Fa;o assim?

nutec.org.ce.Servido
nutec.org.ce.Cliente
nutec.org.ce.Acoes
nutec.org.ce.Retorno
gisa_screen

Hum…complicou mais…

gisa_screen

veja o erro...Criei as classes Interface(classe Procura cd)...q tem o método procura() , a classe que é extends de Unicast....e implements da Interfa...(classe ProcuracdService), e a classe cd...o servidoRmi e a do ClienteRMiI q com erro mostrado nas linhas abaixo...

public class ClienteRMI {

	ProcuraCD service = (ProcuraCD)Naming.lookup("rmi://localhost/cd/procura");
	
	Cd cd = service.procura(01);
	System.out.println("cd.getTitulo");

}
gisa_screen

resolvi o problema acima, a inteligencia colocou entre aspas o métodos e esqueci dos parenteses…resolvi rs (cd.getTitulo());

bem o servidor rodou legal, agora do Cliente acontece esses minimos detalhes :?

Exception in thread main java.rmi.UnmarshalException: error unmarshalling return; nested exception is:

java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: servidor.dominio.Cd

at sun.rmi.server.UnicastRef.invoke(Unknown Source)

at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(Unknown Source)

at java.rmi.server.RemoteObjectInvocationHandler.invoke(Unknown Source)

at $Proxy0.procura(Unknown Source)

at cliente.controle.ClienteRMI.main(ClienteRMI.java:11)

Caused by: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: servidor.dominio.Cd

at java.io.ObjectInputStream.readObject0(Unknown Source)

at java.io.ObjectInputStream.readObject(Unknown Source)

at sun.rmi.server.UnicastRef.unmarshalValue(Unknown Source)

 5 more

Caused by: java.io.NotSerializableException: servidor.dominio.Cd

at java.io.ObjectOutputStream.writeObject0(Unknown Source)

at java.io.ObjectOutputStream.writeObject(Unknown Source)

at sun.rmi.server.UnicastRef.marshalValue(Unknown Source)

at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)

at sun.rmi.transport.Transport$1.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at sun.rmi.transport.Transport.serviceCall(Unknown Source)

at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)

at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)

at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

o que será tudo isso???
System.out.println(“ainda aprendo java”)

kemperacc

gisa_screen:
resolvi o problema acima, a inteligencia colocou entre aspas o métodos e esqueci dos parenteses…resolvi rs (cd.getTitulo());

bem o servidor rodou legal, agora do Cliente acontece esses minimos detalhes :?

Exception in thread main java.rmi.UnmarshalException: error unmarshalling return; nested exception is:

java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: servidor.dominio.Cd

at sun.rmi.server.UnicastRef.invoke(Unknown Source)

at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(Unknown Source)

at java.rmi.server.RemoteObjectInvocationHandler.invoke(Unknown Source)

at $Proxy0.procura(Unknown Source)

at cliente.controle.ClienteRMI.main(ClienteRMI.java:11)

Caused by: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: servidor.dominio.Cd

at java.io.ObjectInputStream.readObject0(Unknown Source)

at java.io.ObjectInputStream.readObject(Unknown Source)

at sun.rmi.server.UnicastRef.unmarshalValue(Unknown Source)

 5 more

Caused by: java.io.NotSerializableException: servidor.dominio.Cd

at java.io.ObjectOutputStream.writeObject0(Unknown Source)

at java.io.ObjectOutputStream.writeObject(Unknown Source)

at sun.rmi.server.UnicastRef.marshalValue(Unknown Source)

at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)

at sun.rmi.transport.Transport$1.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at sun.rmi.transport.Transport.serviceCall(Unknown Source)

at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)

at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)

at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

o que será tudo isso???
System.out.println(“ainda aprendo java”)

Sua classe servidor.dominio.Cd deve implementar Serializable

public class Cd implements Serializable{
//bla bla bla

}

Toda classe que for transferida via rede deve implementar Serializable ou extender um classe que implemente Serializable…

Tanto que o erro foi… NotSerializableException :wink:

[]s

Boa Sorte

gisa_screen

Cara eu li um artigo e logo coloquei o implements seriazalible na classe CD…mas o erro persiste… :x :frowning:

kemperacc

Nas duas aplicacoes esta usando a mesma versao da classe?

As vezes voce atualizou a classe CD da sua aplicacao cliente e nao atualizaou do servidor, ou vice-versa

Uma das duas esta incorreta.

Depois de voce compilar a classe CD, voce tem que “joga-la” para a outra aplicacao para as duas aplicacoes rodarem a mesma versao da classe.

[]s

Kemper

gisa_screen

Desculpe, mas como assim? Acho que o problema está na interface ProcuraCd...la eu só tenho o método procura...

na classe clienteRMI eu criei objeto

ProcuraCD service = (ProcuraCD)Naming.lookup("rmi://localhost/cd/procura");   
       
    Cd cd = service.procura(01);   
    System.out.println("cd.getTitulo");

está correto...? eu usar a classe ProcuraCd ? :? :?

Criado 18 de abril de 2010
Ultima resposta 19 de abr. de 2010
Respostas 8
Participantes 3