1

我正在使用 Grails Ws-Client 插件,但我的应用程序等待从我正在使用 Web 服务的服务器返回的 SOAP 响应,并且我的应用程序等待此代码

def proxy = webService.getClient(wsdlUrl)

这主要发生在服务器关闭或网络连接缓慢时。

如果 Web 服务暂时从服务器中删除并且包含 wsdl 的 url 在尝试在 Web 浏览器上访问时重定向到网站的主页,则等待也会继续。

如何检测 wsdl 是否存在以及如何设置类似属性的超时,以便等待响应存在 10 秒,然后停止等待响应,并且代码开始正常执行以防停顿。

我也没有得到任何异常或错误。

4

1 回答 1

0

听起来默认情况下客户端上没有设置读取和/或连接超时。如果 Web 服务关闭,这应该会有所帮助: proxy.setConnectionTimeout(value_in_milliseconds)

不过,我不确定是否设置读取超时,如果主机已启动并接受连接但 Web 服务不可用或没有响应,您会看到这一点。我们为此找到的最佳解决方案是使用 Apache Commons HTTP 客户端而不是默认客户端,这为我们提供了对客户端连接设置更精细的配置。它们可能也在 WS-Client 插件中,但相关文档(实际上是 GroovyWS 文档)似乎没有提到任何有关读取超时的内容。

于 2012-05-24T14:52:09.333 回答