Instancia de objeto que desaparece

Desarrollé un servicio web que usa una instancia de objeto para hacer parte de la funcionalidad requerida.

Ese objeto se inicializa una vez cuando creo la instancia de la clase de servicio web mediante el uso del constructor.

Muestra:

clase pública A {bInstance B privada; public A () {bInstance = new B (); }}

Desafortunadamente, después de unos minutos (20 a 30 minutos quizás), mi código comienza a devolver una NullPointerException de ese objeto. Es como si de alguna manera ese objeto tuviera basura recolectada o destruida.

¿Cuál puede ser la causa de esto (aparte del posible error humano)? Tal vez me falte algo específico para las aplicaciones web

ahora mismo comencé a usar el captador de objetos que valida el puntero nulo y reconstruye el objeto si es necesario, pero eso no se siente bien

Gracias por cualquier consejo que pueda brindar

preguntado el 16 de mayo de 11 a las 16:05

GC estaría horriblemente roto si hiciera esto. No lo es (con un 99% de certeza). El problema debe estar en algún lugar de su código. -

Lo sé, he estado buscando el código durante días y no he encontrado una sola línea que escriba en la variable después de inicializarse. -

@Katanagashi: Crea la variable final solo por asegurar. -

¿Tiene un establecedor por casualidad también que permite que otras partes del proyecto establezcan esa instancia en nula? -

@Jeremy lo intentará, pero primero debo cambiar el código de inicialización para hacerlo en la variable "final" -

1 Respuestas

Posible problema de serialización

Es posible que el contenedor de la aplicación esté serializando su código debido a problemas de memoria y que el proceso de deserialización no esté creando correctamente una instancia de B.

contestado el 16 de mayo de 11 a las 23:05

Eso tiene sentido, ¿alguna forma de confirmar esto? - IvoC

Puede verificar que A y B implementan Serializable. Si lo hacen, escriba una pequeña clase de ejemplo que use ObjectOutputStream envolviendo FileOutputStream para realizar la serialización, luego vuelva a incorporarla con ObjectInputStream envolviendo FileInputStream y verifique que haya funcionado como se esperaba. - Gary Rowe

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.