2

我正在尝试为 JAX WS 和 Http Post 调用设置连接和请求超时。我的代码有效,但最多只有 20 秒。也就是我可以把超时值改成5秒,2秒就可以了,但是把超时值设置成30秒会在20秒超时,把超时值设置成60秒还是会在20秒超时。有谁知道最多 20 秒设置在哪里?

对于 JAXWS:

//This works, timed out in 10 seconds
((BindingProvider) soapPort).getRequestContext().put(JAXWSProperties.CONNECT_TIMEOUT, 10000);

// This would time out in 20 seconds!!!
((BindingProvider) soapPort).getRequestContext().put(JAXWSProperties.CONNECT_TIMEOUT, 60000);`

对于 Http:

// This works, timed out in 10 seconds
HttpConnectionParams.setConnectionTimeout(params, 10000);

// This would time out in 20 seconds!!!
HttpConnectionParams.setConnectionTimeout(params, 50000);
4

1 回答 1

0

Glassfish 的默认 JAX-WS 运行时是Metro 2.0。见5.6。Metro 指南中的HTTP 超时部分,所以我们有:

// setConnectTimeout()
int timeout = ...;
Map<String, Object> ctxt = ((BindingProvider)proxy).getRequestContext();
ctxt.put(JAXWSProperties.CONNECT_TIMEOUT, timeout);

// setReadTimeout()
int timeout = ...;
Map<String, Object> ctxt = ((BindingProvider)proxy).getRequestContext();
ctxt.put("com.sun.xml.ws.request.timeout", timeout);

仅作为指导,您可以看到Websphere的三个参数(在 Metro 2.0 中只有两个),它们是:

  1. CONNECTION_TIMEOUT:WebSphere JAX-WS 客户端等待建立 http/https 连接的时间(默认为 180 秒)
  2. WRITE_TIMEOUT:客户端等待完成发送请求的时间(默认为 300 秒)
  3. RESPONSE_TIMEOUT:客户端等待完成接收响应的时间(默认为 300 秒)
于 2013-03-27T04:29:18.980 回答