2013-03-27 83 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