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

时间:2015-10-29 16:49:15

标签: java gwt timeout asynccallback

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

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

在AsynCallback返回响应(200秒)之前,如何暂停UI超时?

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

2 个答案:

答案 0 :(得分:0)

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

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

Tomcat configurations

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

答案 1 :(得分:0)

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