2013-03-27 84 views
1

我正在尝试为JAX WS和Http Post调用设置连接和请求超时。 我的代码有效,但最多只有20秒。 也就是说,我可以将超时值更改为5秒2秒,但它可以工作,但将超时值设置为30秒会超时20秒,将超时值设置为60秒仍会在20秒超时。 是否有人知道最多20秒钟的设置?GlassFish v3.0.1中的JAXWS和Http Post超时

对于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); 
+0

编辑我的帖子添加代码 – elefant 2013-03-27 00:40:27

+0

对不起,OT评论,但我正要发布5月13日当你删除它时,你的最新问题的样式表。你还想要一个答案吗? – Borodin 2013-05-13 02:16:09

回答

0

对于GlassFish的默认JAXWS运行时Metro 2.0。看到Metro guide5.6. HTTP Timeouts部分,所以我们有:

// 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(地铁2.0只有两个),它们是:

  1. CONNECTION_TIMEOUT:WebSphere JAX-WS客户端等待建立http/https连接的时间量(默认为180秒)
  2. WRITE_TIMEOUT:客户端等待完成发送请求的时间量(默认值为300秒)
  3. RESPONSE_TIMEOUT:时间,客户端将等待完成接收响应的时间(默认值为300秒)
+0

那么,20秒的超时读取超时踢? – flup 2013-03-27 08:27:53

+0

尝试设置读取超时并告诉我会发生什么。 – 2013-03-27 16:07:00

+0

谢谢保罗,我也尝试添加读取时间,也没有任何区别。我怀疑20秒可能是防火墙超时。 – elefant 2013-03-27 22:18:58