Ayuda por favor: java.io.EOFException al intentar deserializar un objeto

jordi
17 de Marzo del 2006
Muy buenas,

Estoy montando una aplicación en JNLP y he pensado usar un sistema de cache de ojetos en el servidor y otro en el pc local donde correrá la aplicación. Estos objetos los empaqueto antes en el servidor, para generar mi propio repositorio. Para hacerlo tengo una pequeña aplicación que hace:

ObjectOutputStream out = new ObjectOutputStream( new GZIPOutputStream( new FileOutputStream( path_al_archivo_resultado ) ) );
out.writeObject( objeto );
out.close();

Y dentro de la misma clase, me cercioro de que ha funcionado haciendo:

ObjectInputStream in = new ObjectInputStream( new GZIPInputStream( new FileInputStream( )));
Objeto tmp = (Objeto) in.readObject(path_al_archivo_resultado);

Y obtengo el objeto que puedo printar y ver su contenido correctamente.

El problema viene cuando en un servlet de la aplicación intento recuperar este mismo objeto mediante una URL:

ObjectInputStream in = new ObjectInputStream( new GZIPInputStream( ( new URL( base, nombre ) ).openStream() ) );

Al hacer: "obj = in.readObject();" obtengo una:

java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
...

Lo curioso es que no me lo hacía en la aplicación que empaquetaba el objeto, ni tampoco en este mismo servlet, al hacer "in.readObject().getClass()" para saber qué objeto estoy recuperando... Entiendo que falla de deserialización... pero, ¿por qué?

Espero que me podáis ayudar o dar alguna indicación, porque llevo 2 días con esto y no soy capaz de dar con el error...

Muchas gracias!


Jordi