调用 AsyncCallback 时增加 GWT 前端的超时

Increase timeout of GWT Front-End while invoking AsyncCallback

我有一个基于 UI 的 GWT,它连接到 Web 服务(第 3 方)以提交一些请求。当请求很大(真的很大)时,应用程序过去常常超时,因为请求的第 3 方总执行时间为 72 秒,而我们的连接超时设置为 60 秒,所以甚至在响应来自第 3 方之前, out 应用程序会超时。所以我将 ServiceClient 超时从 60 秒 增加到 200 秒。使用 AsynCallback 提交请求。这在我的本地 IBM WebSphere 服务器(开发环境)中运行良好。

问题是,当我尝试在测试环境中提交请求时,UI 在 60 秒后超时 并且用户显示内部服务器错误但在在后台,AsynCallBack 仍然执行,它还会在收到响应后执行 post 提交 activity(在 72 秒后).

如何暂停 UI 超时直到 AsynCallback returns 响应(200 秒)?

我找不到为 GWT UI 设置的任何超时设置。

回调超时很可能是由服务器处理的。您需要修改服务器的连接器以延长那里的超时时间。

如果您使用的是 tomcat,您的问题是连接器的默认超时为 60 秒。您可以使用 connectionTimeout 选项修改它。

Tomcat configurations

如果您运行长运行调用服务器。您可能想考虑使用 comet/push 事件做一些事情,以便在工作完成时通知客户。过去我为此使用了几个过程。 Atmosphere 是一个优秀的库,支持 websockets 和 http push。我还使用带有 websockets 和 STOMP 的队列将事件推送到 web 客户端。如果您要在生产中使用它,很多时候这是正确的方法。如果您将其置于代理或负载平衡器之后,肯定会出现此问题。

最后,通过更改关联集群的 Web 服务器 插件属性 中的 read/write 超时 值解决了这个问题WebSphere 的。