GlassFish v3.0.1中的JAXWS和Http Post Timeout

时间:2013-03-27 00:17:23

标签: glassfish timeout jax-ws http-post

我正在尝试为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);

1 个答案:

答案 0 :(得分:0)

Glassfish的默认JAX-WS运行时为Metro 2.0。请参阅5.6. HTTP Timeouts中的Metro guide部分,我们有:

// 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秒)