我正在开发一个 GWT-GAE Java 交易应用程序,客户在其中下订单,在服务器上处理,然后通知客户(通过 AppEngine 频道)更新。我的问题是我遇到了不规则的客户端崩溃 - 交易 5 到 10 分钟后,客户端可能会崩溃(在 Chrome 中我看到此页面:chrome://crash/)。我已经在生产中测试了这一点,最多有 10 个同时交易者(在不同的机器上)交易 30 分钟,我通常会遇到 4 或 5 个独立的客户端崩溃。由于连接较少或交易活动较少,我看不到崩溃。
我认为问题可能是 ConcurrentModificationExceptions,所以我尝试 1) 使用带有 Scheduler.get().scheduleDeferred 的延迟命令,以及 2) 实现消息队列,但这些似乎都没有帮助。
我的问题是 - 我该如何调试?在开发过程中,在出现内存错误之前我可以同时建立的连接数(2 或 3)是有限的,所以我无法复制我的问题。有没有办法查看导致这些崩溃的生产中引发了哪些异常?
我查看了GWT 日志记录机制- 我可以在服务器上记录选项卡崩溃吗?
谢谢!
更新
我已经设置了 gwt-log,但是当我重现我的客户端崩溃时,它似乎没有记录它。它记录各种其他信息,但客户端崩溃时没有错误。在客户端上,我有一个围绕频道消息的 try-catch:
try {
SerializationStreamReader reader = ((SerializationStreamFactory)rpcService).createStreamReader(encodedData);
Message message = (Message) reader.readObject();
Log.info(name + ": " + message.toString());
processMessage(message);
} catch (Exception e) {
Log.fatal(name + ": error encoding " + encodedData);
}
当客户端崩溃时,我是否应该在服务器日志中看到某些内容?