GWT和IE8中如何知道一个对象是否“太大”而无法进行RPC?

5

我有一个应用程序在Firefox中运行良好,但是当我在IE8中测试时,出现了一个奇怪的错误:'Stack overflow at line: 0'

在GWT讨论组的建议下,可能与从RPC调用返回的大型/复杂对象有关,我能够将问题缩小到我的一个RPC服务器调用,该调用确实返回了一个大而复杂的对象。

如果错误确实是由于一个过大或过于复杂的大型对象引起的,那么我该如何知道呢?“太大”的阈值在哪里?

GWT讨论组的进一步评论表明,集合对象很可能是问题所在,但这是另一位GWT开发人员的经验。 GWT文档或团队是否在任何地方记录了这一点?

但即使如此,问题仍然存在-我如何知道它已经“足够小”了?

3个回答

0

解决这个问题的最佳方法是在编译GWT代码时使用-compileReport标志,这里有开发人员指南和一些示例:

我曾在GWT 1.6.x和2.x的ant脚本中使用过它。

附注:由于不知道您正在使用哪个版本的GWT,因此我无法提供更有用的信息。但是,如果您使用的是早于2.1的任何版本,则可能需要注意一下,因为他们引入了数据呈现小部件,这可能可以解决您的“太大”的对象问题。


我们正在使用GWT 2.0。感谢您提供的compileReport提示。我只是粗略地浏览了那个页面,但它看起来有很多有用的东西,将来会很好知道。 - user26270

0
当加载我的GWT页面时,我也遇到了“Stack overflow at line: 0”的问题。最终发现,在我的情况下,只有在使用Eclipse调试模式URL包括“?gwt.codesvr=127.0.0.1:9997”片段时,应用程序才会抱怨。在URL中删除该片段后,错误消失了。

0

我仍然不知道关于对象大小的指定问题是否有答案,但我的问题最终是因为我在返回的对象中对其他对象进行了递归引用。嗯,并不是显式递归,而是在对象A中对对象B的引用,而对象B又引用了对象A等等。这是一个家谱结构,因此每个人都有关系图,其中保存了对其他相关人员的引用,这些人员又引用回相关人员等等。在内存中使用相同对象的引用可以正常工作,但显然GWT为IE生成的JavaScript无法正确反序列化它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接