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



我有一个基于GWT的UI,它连接到Web服务(第三方)来提交一些请求。当请求很大(就像真的很大)时,应用程序会超时,因为第三方的请求总执行时间为72秒,而我们的连接超时设置为60秒,所以在第三方做出响应之前,应用程序就会超时。因此,我将ServiceClient超时从60秒增加到200秒synCallback提交的。这在我的本地IBMWebSphere服务器(DEV环境)中运行得很好。

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

如何保持UI超时,直到AsynCallback返回响应(200秒)

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

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

如果你使用tomcat,你的问题是连接器的默认超时时间是60秒。您可以使用connectionTimeout选项对此进行修改。

Tomcat配置

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

最后,通过更改WebSphere相关集群的Web服务器插件属性中的读/写超时值,问题得到了解决。

相关内容

  • 没有找到相关文章