Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Error en serialización de objetos

Hola,

Estoy intentando llevar a cabo la serialización de un objeto. Necesito serializar un objeto propio, InfoProceso, formado por atributos de tipos básicos, fundamentalmente. En el primer paso, de cliente a servidor, se realiza correctamente, enviando el InfoProceso tal cual es creado. Ya en el servidor, se realizan una serie de cambios que afectan a uno de los campos, y se realiza el envio al cliente de nuevo.

El problema llega en el cliente: al intentar leer de esta forma:

InfoProceso objetoRetorno = (InfoProceso)ois.readObject();

la aplicación se queda colgada. Revisando todos los logs posibles, no se observa que emita excepción alguna. He intentado capturar las excepciones que puede generar, pero tampoco veo resultado. ¿Alguna idea?

Por supuesto, el InfoProceso es serializable ;)

junio 12, 2012 | Unregistered Commentergabrycorrea

¿No te lanza alguna de las excepciones propias de ese método?

http://download.java.net/jdk7/archive/b123/docs/api/java/io/ObjectInputStream.html#readObject()

Puedes probar a capturarlas todas, y ver qué pasa.

junio 12, 2012 | Registered Commenterchoces

Hola,

Ya probé a capturar cualquiera de las posibles excepciones que emite, y no devuelve nada. Lo que veo es que salta directamente al FINALLY cuando falla en el readObject(), sin más notificación.

junio 13, 2012 | Unregistered Commentergabrycorrea

Algo se me escapa... no lanza excepciones, y la aplicación se cuelga.
A menos que haya un bucle infinito, esté esperando indefinidamente (lo que no parece que sea el caso, puesto que salta al finally), haya un deadlock entre tareas, o haya un wait esperando por un notify posterior (sobre el mismo monitor) en la misma tarea... no me explico la razón de ese "cuelgue".

junio 13, 2012 | Registered Commenterchoces

Quiza el objeto a serializar contiene referencias circulares

junio 14, 2012 | Unregistered CommenterPaposo

Me expresé mal... el resultado tras hacer el readObject(), es que abra una ventana con el informe generado (el InfoProceso es un objeto que almacena los datos del proceso ejecutado, en este caso, la emisión del informe). Pues el comportamiento es que no consigue abrirse dicha ventana emergente.

Esto lo he detectado en mi aplicación a raíz de actualizar la versión de JasperReports, de la 0.5 a la 4.1.2... Es un cambio grande, pero entiendo que esto debería comportarse como siempre, ya que la serialización del objeto no ha cambiado, ni el contenido de lo que devuelve.

junio 14, 2012 | Unregistered Commentergabrycorrea

Esa ventana se abre según que alguna condición se cumpla, es de suponer.
Creo que deberías usar un Debugger, o poner las trazas de siempre en el mismo código ( los habituales System.out.println), para poder determinar qué bloquea la apertura de dicha ventana. Lo más habitual es que haya un valor null en el constructor de la ventana, donde no debería haberlo, suponiendo que se hayan cumplido las condiciones de creación y apertura de la misma.

junio 14, 2012 | Registered Commenterchoces