Problemas com metodos em RMI

4 respostas
M

Salve galera,

tenho alguns objetos em List e HashTable e preciso processar em médodos no servidor são os seguintes métodos:

Hashtable createDevice( Hashtable devices, String deviceName) throws RemoteException;
	List createService( List services, String serviceName, int parentId ) throws RemoteException;

Bem quando eu executo estes métodos tenho as seguintes mensagens de erros:

java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
	java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: java.util.Hashtable$EmptyEnumerator
	at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:157)
	at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:179)
	at java.rmi.server.RemoteObjectInvocationHandler.invoke.

...

Caused by: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: java.util.Hashtable$EmptyEnumerator
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1303)
	at java.io.ObjectInputStream.readObject
...
	... 31 more
Caused by: java.io.NotSerializableException: java.util.Hashtable$EmptyEnumerator
	at java.io.ObjectOutputStream.writeObject0
...

Nota: implementei a inteface java.io.Serializable para as classes cliente e servidor

o que pode ser feito?
:pensativo:

4 Respostas

J

Olá marcossousa, provavelmente os objetos que você está armazenando dentro do seu HashTable e List não são objetos serializáveis, ou seja, não implementam a interface serializable ou externalizable. Portanto você deve tornar seus objetos serializáveis, ou sej,a fazer com que as classes que representam esses objetos implementem uma das dua interfaces citadas anteriormente.

Espero ter ajudado…

Um Abraço…
Jeferson…

S

Pode ter certeza de que o erro é esse mesmo… quando vc usa RMI, todos os objetos usados como parâmetro / retorno devem ser:

Serializable
Tipos primitivos
Collection/Map de Serializable

M

Salve,

mas eu já havia dito que tinha implementado a interface Serializable nesta classe que chama o método RMI.

:pensativo:

S

marcossousa, a classe que chama os métodos do seu objeto remoto não precisam ser serializable. os Parâmetros e retornos dos seus métodos remotos é que precisam ser.

Criado 7 de abril de 2005
Ultima resposta 11 de abr. de 2005
Respostas 4
Participantes 3