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

Java 在调用AsyncCallback时增加GWT前端的超时,java,gwt,timeout,asynccallback,Java,Gwt,Timeout,Asynccallback,我有一个基于GWT的UI,它连接到一个Web服务(第三方)来提交一些请求。当请求很大(比如真的很大)时,应用程序通常会超时,因为第三方请求的总执行时间是72秒,而我们的连接超时设置为60秒,所以在第三方响应之前,应用程序就会超时。因此,我将ServiceClient超时时间从60秒增加到200秒。使用异步回调提交请求。这在我本地的ibmwebsphereserver(DEV环境)中非常有效 问题是,当我尝试在测试环境中提交请求时,UI在60秒后超时,用户显示内部服务器错误,但在后台,异步回调仍然

我有一个基于GWT的UI,它连接到一个Web服务(第三方)来提交一些请求。当请求很大(比如真的很大)时,应用程序通常会超时,因为第三方请求的总执行时间是72秒,而我们的连接超时设置为60秒,所以在第三方响应之前,应用程序就会超时。因此,我将ServiceClient超时时间从60秒增加到200秒。使用异步回调提交请求。这在我本地的ibmwebsphereserver(DEV环境)中非常有效

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

如何在异步回调返回响应(200秒)之前保持UI超时?


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

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

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


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

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

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


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

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

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

什么是ServiceClient?如何以及在何处设置超时?我使用的是Axis2服务客户端。我正在以下位置设置超时:-stub.\u getServiceClient().getOptions().SetTimeOutingMillimes(200000);什么是ServiceClient?如何以及在何处设置超时?我使用的是Axis2服务客户端。我正在以下位置设置超时:-stub.\u getServiceClient().getOptions().SetTimeOutingMillimes(200000);谢谢你的回复。目前不可能实现外部库。我正在使用IBMWebSphere。我们实际上是在一个代理/负载平衡器后面。你能解释一下这怎么会是个问题吗。此外,任何可以更改以避免此问题的WebSphere设置?可能不是WebSphere造成了此问题。很可能是代理/负载平衡器导致连接中断。代理/负载平衡器将在数秒后关闭连接的原因是释放资源。这样您就不会耗尽负载平衡器/代理的连接数和/或内存。这就是lb关闭连接以便其他客户端仍可以访问资源的原因。如果您的请求需要超过40秒,则需要使用异步推送服务来提醒客户端长时间运行的进程已完成。如果您使用的是WebSocket,而不是普通的http传输,那么您也可以避免这种情况。谢谢您的回复。目前不可能实现外部库。我正在使用IBMWebSphere。我们实际上是在一个代理/负载平衡器后面。你能解释一下这怎么会是个问题吗。此外,任何可以更改以避免此问题的WebSphere设置?可能不是WebSphere造成了此问题。很可能是代理/负载平衡器导致连接中断。代理/负载平衡器将在数秒后关闭连接的原因是释放资源。这样您就不会耗尽负载平衡器/代理的连接数和/或内存。这就是lb关闭连接以便其他客户端仍可以访问资源的原因。如果您的请求需要超过40秒,则需要使用异步推送服务来提醒客户端长时间运行的进程已完成。如果您使用的是WebSocket而不是普通的http传输,那么您也可以避免这种情况。