¿Cómo saber si un objeto es "demasiado grande" para RPC en GWT e IE8?
internet-explorer-8 gwt-rpc (3)
Tengo una aplicación que funciona bien en Firefox pero cuando probé en IE8, recibí un extraño error: ''Stack overflow at line: 0''
Después de una sugerencia del grupo de debate de GWT de que podría relacionarse con objetos grandes / complejos que se devolvían de llamadas RPC, pude reducir el problema a una de mis llamadas al servidor RPC, que devuelve un objeto grande y complejo.
Si es cierto que el error se debe a que un objeto grande es demasiado grande o complejo, ¿cómo puedo saberlo? ¿Dónde está el umbral de "demasiado grande"?
Otros comentarios de la discusión de GWT indican que los objetos de colecciones son probablemente el problema, pero esto proviene de la experiencia de otro desarrollador de GWT. ¿Está esto documentado en cualquier lugar por los doctores o el equipo de GWT?
Pero aun así, la pregunta sigue siendo: ¿cómo sé cuándo es "lo suficientemente pequeña"?
Todavía no sé si hay una respuesta a la pregunta especificada sobre el tamaño de un objeto, pero mi problema terminó siendo porque tenía referencias recursivas a otros objetos en el objeto que estaba devolviendo. Bueno, no recursivo explícitamente, sino referencias en el objeto A al objeto B que hacía referencia al objeto A, etc. etc. Era una estructura de árbol genealógico, por lo que había mapas de relaciones para cada individuo, que contenía referencias a otros individuos relacionados, que tenían referencias volver al individuo relacionado, etc. Funciona bien en la memoria, con las referencias al mismo objeto, pero aparentemente el javascript que GWT generó para IE no pudo deserializarlo correctamente.
La mejor manera de resolver este problema sería utilizar el indicador -compileReport al compilar su código GWT, hay una guía de desarrollador y algunos ejemplos disponibles aquí:
Lo he usado dentro de una secuencia de comandos ant con GWT 1.6.x y 2.x.
PD: sin saber con qué versión de GWT estás trabajando realmente no puedo proporcionar nada más útil. Sin embargo, podría ser algo a tener en cuenta si está utilizando algo más antiguo que 2.1, ya que introdujeron Widgets de presentación de datos que posiblemente podrían resolver sus problemas de objetos que son "demasiado grandes".
También estaba obteniendo ''Desbordamiento de pila en la línea: 0'' al cargar mi página de GWT. Termina que, en mi caso, la aplicación solo se quejó cuando se usaba la URL del modo de depuración de Eclipse, incluido el fragmento de ggtt.codesvr = 127.0.0.1: 9997. Después de eliminar ese fragmento en la URL, el error desapareció.