0

我必须调用一个需要 40 秒才能响应的 Web 服务。我在 JBoss-EAP 6.4 中,我使用以下代码:

IService svc = service.getBasicHttpBindingIService();
[...]
((BindingProvider) svc).getRequestContext().put("com.sun.xml.ws.connect.timeout",timeout)
[...]
svc.processMessage(req);

当超时小于 20000(20 秒)时,我得到预期的异常:

HTTP transport error: java.net.SocketTimeoutException: connect timed out

如果超时大于 20000,我会在 20 秒后得到另一个例外:

HTTP transport error: java.net.ConnectException: Connection timed out: connect

所以,我无法从服务器获得响应(40 秒响应),我总是得到异常。我必须增加什么样的超时时间?

4

1 回答 1

0

为什么你希望超时为 40 秒?“com.sun.xml.internal.ws.connect.timeout”和“com.sun.xml.internal.ws.request.timeout”代表了两个超时。您可能已经连接到服务器,但是请求需要很长时间才能处理,在这种情况下,后一种设置将生效。注意:我相信这些设置是针对 JBoss 的(我可能是错的,请交叉检查)。

于 2018-07-04T15:06:55.260 回答